The Arena | Reinforcement Learning - Obstacle Avoidance

物料準備 :

建議使用由實心牆所製成的分隔空間 , 此外牆的物料要夠重讓 Thymio 撞上時也無法移開牆壁。

● 建議最小為 : 50cm x 50 cm.

● 將 Thymio 擺放至 Arena

Thymio 的任務及它的學習原則

● Thymio 將會在 Arena 中行駛 , 它的目的是在不碰撞到牆壁下探索整個 Arena 。跟往常一樣 , 剛開始時 Thymio 是不知道該做什麼或該如何做。

● 這次我們將會使用一種全新的演算法 - Reinforcement learning (強化學習) 教 Thymio 完成任務。這個方法也是 AI 人工智能的其中一部份。

● 我們將再使用神經網絡。

● 在這個方法中 , 我們不用告知 Thymio 在遇到各種情況下需執行什麼動作 。將會由 Thymio 作選擇 , 但它是怎樣知道要執行那個動作呢 ? 答案是透過獎勵評分 ( reward system)來作決定。

Reinforcement learning | 強化學習

● 我們訓練 Thymio 的新方法是透過告知它正在執行的動作給予獎勵或懲罰 , 並告訴它對於選擇中的 Sensor 的情況 ,最後是該選擇(行動)是好還是壞的選擇。

● 神經網絡會因此意識到執行這些動作是獎勵還是懲罰。網絡會如何反應 ?  就像人類一樣 , 它會盡可能去獲得獎勵 , 並儘量避免懲罰。

● 神經網絡是使用數學計算來運行的。 如果有人懷疑數學的用處,這裡是一個很好的應用示例。

● Step by step, Thymio 將執行越來越多「好」的動作 [給予獎勵] , 而越來越少執行「壞」的行動 [懲罰]

●  為了發現好或壞的動作 , Thymio 必須探索所有動作的可能性。

● 因此 , 不管獎勵如何 , Thymio 需不時嘗試新的動作。

設定 :

● 在「Parameters」上選擇「Load demo parameters」然後選擇「Obstacle Avoidance (Reinforcement Learning)

● 在神經網絡下你將看到2個黑色的 Progress Bars。

○ 左面的 Rewards bar 會顯示獎勵或懲罰的數值

獎勵會是正數 , 懲罰則是負數 。會出現的數值均由 AlphAI 預先計定。

○ 右邊的 level bar 顯示等級 i.e. 過去獎勵的平均值(預設為過去2分鐘)

它對應 Thymio 的學習狀態。

● Besides, we will leave the learning and exploring buttons activated.

● 打開「learning 」及 「exploring」 buttons

首次訓練經驗 :

● 觀察 Thymio

● 開啟「self-drive」mode。Thymio 會開始行駛 , 最初的動作是隨機的。

觀察它的行動, Reward 及顏色改變。20秒後再次點擊「self-drive」以停止學習。

問題1 : 試說出 Thymio 正在做的動作跟它亮起的顏色有什麼關係 ?

當 Thymio 向前移動 , 它會亮起綠燈 ; 當它撞到牆壁時 , 會亮起紅燈。

綠燈表示 Thymio 收到獎勵 , 它的行動符合任務/目標。

紅燈表示 Thymio 被懲罰 , 它的行動不符合任務/目標。

  • 繼續訓練5-10分鐘。

問題2 : 你有發現 Thymio 的行為有改變嗎 ? 如有請描述。

在開始的時候 , Thymio 經常會撞到牆壁並在駛離牆壁時感到吃力。

隨著訓練時間愈來愈長 , Thymio 愈來愈有辦法避開牆壁。我們什至可以注意到學習/訓練過程是分為幾個階段的 :

● 在開始時 , Thymio 很快就會發現沒必要向後行駛。

● 然後它會迅速採取以下其中一種行動(同學們請使用 Thymio 觀察其中一種行為) :

1. 轉圈(最常見)

2. 以直線向前行駛然後撞到牆壁時轉向。

● Thymio 逐漸地學會在直線行駛和轉彎進行交替 , 並且在前面沒有障礙物時更頻繁地向前行駛 , 右面有牆時就向左轉 , 左面有牆時則向右轉。

Exploration 的作用 :

● 取消選取「Exploration」。

問題 3: Thymio 的行為有什麼改變 ?

Thymio 會減少犯錯 , 它不會再在以直線行駛時被意想不到的動作打斷。

利用 「reset learning」重置整個學習 , 這會讓 Thymio 忘記剛才學習的內容。

再次按下「self-drive」來進行學習 , 但這次請把「exploration」關上。

問題4 : 這次的訓練跟第一次的訓練有什麼不同 ?

Thymio 會陷入「圍圈行駛」的行為並不會發現可以行直線 ( 但這不是必然的 , 有些情況不開啟 「exploration」也能以直線行駛)

總結 :

Exploration 在學習上是必須的。

● AI 偶爾會嘗試執行它「認為」是最好以外的操作 (在 AlphAI Software 上 , 右面的 Output 圖示會亮起藍色而不是黑色 , 代表它正進行探索)。這可以避免陷入一些負面/不是最好的行為/行動。例如 : 在原地自轉

● 另一方面 , 一旦學習完成 , 探索便不再有用了 , 因此可把「exploration」關上以盡可能獲取更多的獎勵。

The behavior of the neural network | 神經網絡的行為

觀察神經網絡的行為。

從學習的開頭進行觀察並記錄頭幾個動作(行為)

1. 重置 AI  Network , 把 Thymio 放到 Arena 的中央。

請記住它的第一步是隨機的 , 你可以重覆「Reset Network」-->「Self-drive」來證明它是隨機選擇。

2. 完成下面表格的第一行 , 可以「X」表示 Thymio 的前置 IR Sensor 沒有偵查到任何物件 , 因為當前沒有障礙物。

3. 透過「step by step」來仔細觀察 Thymio 的每一步。

問題5 : Thymio 做了什麼動作? 在剛剛填寫的表格中,記下這個動作對應的數值。 將這些數字與其他操作的數值進行比較。您注意到什麼?

Ans : 向前有最高的數值 , 這代表傾向做出最好的動作來得到最多獎勵。

問題6 : 我們觀察到 Thymio 會取得獎勵 , 這些獎勵看起來有符合任務的目的嗎?

Thymio 轉左會得到 +55 的獎勵 , 這是正常的因為前方並沒有障礙物 , 所以它能轉向。

給予獎勵後 , 神經網絡就會重新計算輸出(output)的數值。

試完成表格的第2行並推算 Thymio 的下個行動。

進行幾次 Step by Step 觀察獎勵及等級(level)的變化。

The role of rewards | 獎勵的作用 :

問題7 : 當 Thymio 獲得獎勵或受到懲罰時 , 等級會有什麼改變 ? 等級代表什麼?  

○ 假如獎勵是正數 , 等級的數值會上升。

○ 假如獎勵是負數 , 等級的數值會下降。

等級代表 Thymoi 的能力去獲得正數獎勵 , 等級是過去獎勵的平均數值(預設為2分鐘內)

試開啟 self-drive 讓 Thymio 繼續學習。

問題8 : 在學習過程中等級是怎樣改變的? 為何 ?

在學習過程中 , level 會隨學習的時間上升。事實上 , Thymio 會得到更多更高的獎勵 (由其當它向前行駛時) 同時減少受到懲罰(減少撞牆) 。學習的最終目標是讓 Thymio 的等級上升。

懲罰對教學行為的影響

如果我們總結 progress bar上出現的不同數值 , 會得出以下結果 :

⥛ 100: 當 Thymio 向前直行時 (前方沒有任何障礙物) , 它會得到最高的數值

⥛ 55: 當 Thymio 轉向 , 但前方沒有障礙物

⥛ -50: Thymio 做出其中一個「壞」動作 , 例如 : 撞到牆壁 , 向後轉(前方沒障礙物時)

我們可以改變懲罰的數值

● 打開 Reward tab 並將懲罰(penalty)設成非常小的數值 , 例如 : 0 , 重置 AI Network 然後進行幾分鐘的學習。

觀察 Thymio 的行為 , 它會變得更大膽還是更謹慎 ? 它撞牆的次數變多還是變少了 ?

● 將懲罰設置成更大的數值 ,例如: 1.5。( 1.5 是 100 * -1.5 , 即懲罰的數值為 -150 ; 100 是獎勵的最大數值)

再次重置 AI Network 並重新啟動學習幾分鐘。 進行同樣的觀察。

問題9 : 總結改變懲罰數值對 Thymio 行為的影響

● 假如懲罰的數值是小的, Thymio 會較常撞牆,同時變得更大膽,充分地探索整個 Arena。

● 假如懲罰的數值是大的, Thymio 會較少撞牆 , 同時變得更小心 , 只會在某個區間行動。