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 會較少撞牆 , 同時變得更小心 , 只會在某個區間行動。