AI Planning 學習筆記(1):AI Planning 是什麼?

AI Planning 學習筆記(1):AI Planning 是什麼?

在修 NUS 的 CS5446: AI Planning & Decision Making 時,我第一次系統性地接觸到 AI Planning。雖然現在大家談到 AI,大多會想到大型語言模型(LLM)或 Reinforcement Learning,但在這些技術成熟之前,Planning 一直都是人工智慧的重要研究領域

這個系列會整理我在課程中的學習內容,並加入自己的理解與例子,希望能用比較容易理解的方式介紹 AI Planning 的核心概念。

今天就從最基本的問題開始。

AI 到底是如何「規劃」一件事情的?


一個簡單的例子:Air Cargo

假設有一架飛機停在新加坡(SIN),有一件貨物也在新加坡,而我們希望最後把它送到東京(NRT)。

飛機不能直接把貨物瞬間移動,它只能執行幾個固定的動作:

  • Fly:飛往另一個機場
  • Load:把貨物裝上飛機
  • Unload:把貨物卸下飛機

那麼,AI 要如何知道正確的執行順序?

例如:

Load Cargo
      ↓
Fly to Tokyo
      ↓
Unload Cargo

對人類而言,這幾乎是不需要思考的事情。

但對 AI 而言,它不知道什麼叫「送貨」,也不知道飛機可以飛去哪裡。它只知道目前世界的狀態,以及每個動作會帶來什麼改變。

Planning 的目的,就是讓 AI 自己找出這串動作。


Classical Planning 的假設

如果真實世界充滿隨機因素,規劃會變得非常困難。

因此 Classical Planning 做了一些理想化的假設。

Discrete

世界中的狀態是有限且可以列舉的。

例如:

  • 飛機在 SIN
  • 飛機在 NRT

而不是「飛機飛到一半」。


Deterministic

每個動作都有唯一結果

如果飛機執行 Fly(SIN, NRT),它一定會到 NRT,不會因為天氣突然降落到其他地方。


Static

在 AI 思考規劃的過程中,世界不會自己改變。

貨物不會突然消失,也不會有人偷偷把飛機開走。


Fully Observable

AI 能夠完全知道目前世界的狀態。

它知道飛機在哪裡、貨物在哪裡,也知道哪些動作可以執行。


AI 如何描述世界?

既然 AI 不理解「飛機」或「貨物」這些概念,它需要一種形式化的方法來表示世界。

最基本的單位稱為 Fluent

例如:

At(Plane, SIN)
At(Cargo, SIN)
In(Cargo, Plane)

每一個 Fluent 都是在描述世界中的一個事實。

所有 Fluent 合起來,就是目前的 State(狀態)

例如:

State

✓ Plane 在 SIN
✓ Cargo 在 SIN
✓ Cargo 在飛機上

可以把 State 想成一張世界快照,記錄當下目前所有重要資訊。


Goal 並不是另一個 State

很多人可能會有一個誤解:

Goal 就是一個新的 State。

其實不是。

Goal 通常只描述 我們想達成的條件,而不是整個世界。

例如:

Goal

At(Cargo, NRT)

我們並不在意:

  • 飛機最後停在哪裡
  • 飛行了多少次
  • 是否還有其他貨物

只要貨物到達目的地即可。

因此:

  • State:完整描述世界
  • Goal:只描述需要滿足的條件

動作(Action)如何改變世界?

每個 Action 都包含兩個部分:

  • Preconditions(前置條件)
  • Effects(執行後的效果)

例如 Load:

Action:Load

Preconditions

Plane 在 SIN
Cargo 在 SIN

Effects

Cargo 在 Plane
Cargo 不再位於 SIN

只有當 Preconditions 都成立時,AI 才能執行這個動作。

執行完成後,世界狀態便會更新。

例如:

Before

Plane 在 SIN
Cargo 在 SIN

↓

Load

↓

After

Plane 在 SIN
Cargo 在 Plane

Planning 就是不斷重複這個過程。


AI 如何找到答案?

當世界被表示成一系列 State 與 Action 後,問題就變成:

如何找到一條從 Initial State 到 Goal 的路徑?

最直覺的方法就是 Forward Search

它從 Initial State 開始,不斷嘗試可以執行的 Action,直到滿足 Goal。

另一種方法則是 Backward Search

它從 Goal 倒推,思考:

哪個 Action 可以讓 Goal 成立?

接著再繼續往回推,直到回到 Initial State。

除此之外,也可以把整個 Planning 問題轉換成命題邏輯,再利用 SAT Solver 找出是否存在可行解。不同的方法各有優缺點,後面的文章會再詳細介紹。


小結

Classical Planning 的核心思想其實很簡單:

  1. 描述目前世界(State)
  2. 定義每個動作(Action)
  3. 指定想達成的目標(Goal)
  4. 搜尋一條可行的動作序列(Plan)

乍看之下,這只是送貨問題,但相同的概念也能應用在機器人導航、物流配送、自動排程,甚至遊戲 AI。

在下一篇文章,我會介紹 AI Planning 中最常見的知識表示方式 STRIPS,看看 AI 是如何用 Preconditions、Add List 與 Delete List 來描述每一個 Action。

發表留言