Workshop 6 - Reinforcement Learning - 有鏡頭(眼睛)的導航學習
Navigation with Camera | 有鏡頭(眼睛)的導航學習
** 透過訓練機械人,認識如何學習是更有效的。
在這一個單元,會為大家介紹一種高階的AI 學習法 - Reinforcement Learning (強化式學習法)。
透過正確設定奬勵(和懲罰)機制,機械人可以自學得到智力。
實驗的目標是要訓練機械人可以在四方形的埸地內不停地走動。
這次的訓練會分為4大階段 :
1. Training with no Mistake - 訓練中不容錯失 (滿足當下獎勵)
2. Training with Mistake + no Exploration - 訓練中容許錯失,但不容許探索新方法 (有懲罰)
3. Training with Mistake + Exploration - 訓練期間進行探索,在錯誤後找出更好的獎勵。 容許探索新方法。
4. Training with Mistake + Exploration + Guided by a Master - 訓練中容許訓練員作「加強訓練」
材料 :
- 已經在電腦安裝 AlphAI software (每一隻 AlphAI 需一台電腦)
- 具備藍牙或Wi-Fi功能的電腦以和 AlphAI 進行溝通
- AlphAI 機器人 (建議為一隻)
- 擁有足夠的材料建構場地
需時 :
- 45 至 60 分鐘
開機及接駁 :
→ 安裝 AlphAI software , 點擊「AlphAI」圖示以開啟軟件
→ 開啟 AlphAI 的電源 (電源掣在底部)。需時約20-30秒 , 它會輕輕移動幾步, 當它準備好連接時會亮起白光。
→ 記下 AlphAI 底板的編號 ( 應為3或4位數 e.g 197 )
→ 選擇以WiFi 或 藍牙接駁 ( 當超過4個 AlphAI 或房間已有多個 WiFi 網絡時 , 建議使用藍牙接駁)
Wi-Fi : | 藍牙 : |
---|---|
- 將電腦連接至 AlphAI 的 Wi-Fi :找出以 AlPHAI 開頭並以機械人編號結尾的 Wi-Fi 網絡 : 密碼與Wi-Fi名稱相同 (包括大小寫)- 在「Tools」工具欄中選擇「wifi」 | - 在 「Tools」工具欄中選擇「Bluetooth」,選擇相應的 AlphAI (對應機身編號)- 如果你的 AlphAI 不在列表中 , 點擊「pari a new robot via Bluetooth」並在該 AlphAI 出現時選擇 它 , 然後將它添加到您可以選擇的列表中。 |
→ 點擊「connection」 button 來連接你的 AlphAI 。連接後你將在右下角能看到它的電量。
連接常見問題可查閱 : AlphAI 連接常見問題
導入 「Parameters - Obstacle Avoidance」
在「Parameters」中選出「load demo parameters...」然後導入「Reinforcement learning - Obstacle Avoidance」
Parameters 是 AlphAI 預設的 Demo Configuration setting , 方便用家直接導入使用。
獎勵(Reward) 和等級(Level) :
向前移動將會得到獎勵
- 向前行 + 100 分
- 向前右/左轉 + 82分
懲罰
- 撞到障礙 - 50分
- 向後轉 - 50分
等級(level)的計算:
- 在過去2分鐘得到獎勵的平均值
可到「Reward」查看設定 , 你也能改變獎罰數值。
1. Training with no Mistake - 訓練中不容錯失
** 因為「撞牆」是需要扣 50分(it is a mistake) ,在這一次訓練是不包括「撞牆」,避免被扣分。
- 按下「Reset learning」
- 根據下圖
- 開啟 「learning」
- 關閉 「exploration」。
- 將 AlphAI 擺至場地中心。 **全程不讓機械人「撞牆」。
- 啓動 「self-drive」
- 觀察 AlphAI 的行動
- 訓練大約 30-60秒後,關閉「learning」,關閉「self-drive」。
實際應用:
- 將 AlphAI 放在場地中心。啓動「self-drive」,看看 Level 的變化。
討論 :
- 形容機械人的行為。它怎樣移動呢?
A : 它會在場中心原地向前自轉
- 請問 “獎勵和等級” 有沒有改變呢?如何改變?
A : 它的 REWARD 及 LEVEL 都會上升及保持在 82 , 但它從不向前、撞牆或向後轉
- 機械人有沒有學習到什麼?
A : 它學到不斷向前轉會得到分數(82)
- 機械人是否已經滿足得到的獎勵和等級呢?
A : 滿足於 82 分 , 但它不知道能獲取更高的分數(100)因此不會向前行
挑戰:
** 假若將機械人放近和面向牆,會有什麼事發生呢?
A: 撞了牆後,它不懂得如何處理。分數將會由高分(+82)慢慢減到 -50。
請問,在訓練(或學習)中不容許有錯失,是一種好的訓練(或學習)方法嗎?
2. Training with Mistake + no Exploration - 訓練中容許錯失,但不容許探索新方法
- 按下「Reset learning」
- 開啟 「learning」
- 關閉 「exploration」。
- 將 AlphAI 擺至近牆的位置 , 讓它撞牆(面向牆)
- 啓動 「self-drive」
- 觀察 AlphAI 的行動
- 在訓練中,alphAI 慢慢學會由牆向行轉出來。
- ** 留意:訓練中,請控制著 alphAI 只有向前轉和向後轉,暫時不讓他向前直行。
實際應用:
- 將 AlphAI 放在場地中心。啓動「self-drive」,看看 Level 的變化。
討論 :
- 形容機械人的行為。它怎樣移動呢?
A : 它會撞牆、學會向後轉、向前行、向前轉 , 經過一定時間訓練後會減少出現向後及撞牆
- 請問 “獎勵和等級” 有沒有改變呢?如何改變?
A : Reward 會出現 100 , 82 - 50 , Level 應該會穩定在某個數值 (已滿足 例如 : 4x )
- 機械人有沒有學習到什麼?
A : 它學會撞牆後向後轉出來。
- 機械人是否已經滿足得到的獎勵和等級呢?
A : 當 Level 逐漸穩定時代表它已滿足當下的獎勵。 在實際應用的情況下,當 level 到達和穩定在 +82 時,撞牆後會暫時下降,但很快又回升到+82。
- 訓練方法2 是否比方法1 更好?
3. Training with Mistake + Exploration - 訓練期間進行探索,在錯誤後找出更好的獎勵。 容許探索新方法
** 探索是不根據已經學習到的智能行事。
- 按下 「reset learning 」
- 根據下圖
- 開啟 「learning」
- 開啟 「exploration」
- 開啟 「 self-drive 」
- 觀察 AlphAI 的行動
- ** 當作出探索時,右邊的動作箭嘴會變成藍色。
- 當訓練大約3分鐘後,關閉 「exploration 」,「learning」 和「self-drive」。
實際應用:
- 將 AlphAI 放在場地中心。啓動 「self-drive」,看看 Level 的變化。
討論 :
- 形容機械人的行為。它怎樣移動呢?
A : 它會撞牆、向後轉、向前行、向前轉並進行各種探索(包括做出錯誤)找出最高獎勵的行法
- 請問 “獎勵和等級” 有沒有改變呢?如何改變?
A : Reward 會出現 100 , 82 - 50 , 經一段時間的訓練後 100 跟 82 會較常出現 , -50 則較少。Level 會愈來愈高 (50-6x)
- 機械人有沒有學習到什麼?
A : 學到盡量向前行,並開始減少撞牆。
- 機械人可以拿到 +100分的獎勵嗎?
A : 可以
- 當箭咀轉藍色,代表機械人正在探索中。你有沒有留意到呢?
探索的過程會做出當下藍色的動作(不一定是最佳解) , 但會確保 AlphAI 能保持嘗試找出更好的獎勵。
- 讓機械人自由走動 3 到 5 分鐘 , 看看它得到的最高的等級是多少?
- 學習到的智能是否運作良好呢?是否能夠保持機械人不斷走動呢?
4. Training with Mistake + Exploration + Guided by a Master - 訓練中容許訓練員作「加強訓練」
- 按下 「reset learning 」
- 跟 Activity 3 一樣
- 開啟 「learning」
- 開啟 「exploration」
- 開啟 「 self-drive 」
- 觀察 AlphAI 的行動
- 當訓練大約3分鐘後,關閉 「exploration 」 和 「self-drive」。
-
特別訓練:(用人手移動機械人)
- 集中訓練「向前直行」。(拿 +100 分)
- 集中訓練「避免撞牆」
- 完成大約40個特別訓練後,關閉 「learning」
實際應用:將機械人放在牆中間,啟動「self-drive」,看看機械人在2分鐘後,可以到達什麼 level?
討論 :
- 透過訓練員輔助對 “獎勵和等級” 有沒有改變?
A : 受到懲罰的次數應會變少 , Level 的數值會變得更高 ; Reward 亦更常出現 100 及 82。
總結 :
Reinforcement Learning 會在獎罰制度下「自我學習」 , 獲取「智能」,並且做出合理行為。
1. Training with no Mistake - 訓練中不容錯失 (滿足當下獎勵)
最差的學習。 因為從未發生錯誤 , 只會重複做相同的行動(向前自轉)。在沒有遇到撞牆的情況下,最高可以有+82 level。
一旦撞了牆,它不懂得如何修正,Level會下跌到 -50。
2. Training with Mistake + no Exploration - 訓練中容許錯失,但不容許探索新方法 (有懲罰)
訓練途中有出現錯誤(有懲罰) 但沒有探索 , 到達某個 Level 時機械人就會滿足 , 學習(訓練)不會變得再好。
3. Training with Mistake + with Exploration - 訓練期間進行探索,在錯誤後找出更好的獎勵。 容許探索新方法。
訓練期間進行探索在並會在錯誤後找出更好的獎勵 , 機械人會繼續嘗試得到更高的 Level 及 Reward ,
但過程中亦會出現很多的犯錯(-50) , 學習會因時間而變得更好。 Reward : -50 , 82 , 100
4. Training with Mistake + with Exploration + with Guided by a Master - 訓練中容許訓練員作「加強訓練」
探索途中由訓練員輔助會增加拿分機會和減少機械人犯錯的機會 , 學習會變得更有效率 Level 會變得更高。 Reward : -50 (非常小) , 82 , 100。
** 有訓練員作「特別訓練」的,訓練時間會大大減少。