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

 ** 有訓練員作「特別訓練」的,訓練時間會大大減少。