Workshop 7 - Intruder Detection

在這一個 Workshop , 會為大家介紹 AI 神經網絡 (neuron network) 、 權重 (weight) 、hidden layer (隱藏層) 等概念。

我們將以這個 Intruder Detection (入侵者探測器) 來演示 weight 、 hidden layer 帶來的差異。

材料 :

  • 已經在電腦安裝 AlphAI software (每一隻 AlphAI 需一台電腦)
  • 具備藍牙或Wi-Fi功能的電腦以和 AlphAI 進行溝通
  • AlphAI 機器人

需時 :

  • 30 至 45 分鐘

開機及接駁 :

→ 安裝 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 連接常見問題

導入「Paramaters - Intruder Detection」

在「Parameters」中選出「load demo parameters...」然後導入「Supervised learning - Intruder Detction」

Parameters 是 AlphAI 預設的 Demo Configuration setting , 方便用家直接導入使用。

手動編輯連接 | MANUALLY EDITING CONNECTIONS

  • 透過自己創建連接(Connection)來理解簡單2層的神經網絡( 2-layer neural network) [輸入及輸出 | input and output]

1. 創建與「Stop」的 Connection

首先點擊與「stop」連住的虛線(dotted link) 使它變成黃色閃爍實線 ,

透過改變 input 數值的 weight 看看 output 數值有什麼改變?

你應會發現 input 的 weight 數值愈高 Output Action 的數值也會愈高 , 代表更傾向執行該動作。

神經網絡 :

神經網絡是一層層組成的 , 每一層可以有多於一個的神經元(neuron) ,

在 AlphAI 的 dashboard 上的 neuron 會以一個帶有數值的正方點呈現 ,

而把 neuron 連在一起的數值則稱為 weight (上圖為1.1) ,

Output 的數值是 Input * weight 的總和 , 上圖為最簡單的 1 to 1 connection ,

因此 y1(output | 193) = p1(input |1.75) * x1(weight | 1.10)

2. 加入「Beep」 Connection :

點擊與「beep」連住的虛線(dotted link) 使它變成黃色閃爍實線 ,

同時利用滑輪將 weight 的數值增加並超過 「stop」的 weight ,

Output 數值會有什麼改變?AlphAI 會執行什麼動作?

然後試將「stop」的 weight 改成比「stop」大 , AlphAI 這次會執行那個動作?

結論 : AlphAI 會執行 OUTPUT VALUE 最大的行動

3. 加入入侵者

 嘗試透過更改 weights , 讓機器人靠近入侵者時發出「beep」並在移離入侵者只面對牆壁時停止聲響 ,

你會發現這是不可能的 , 就算你把入侵者移走機械人都會繼會發出「beep」聲。稍後我們將會作解釋。

就上圖可見 , 即使你怎樣改變2個OUTPUT的WEIGHT , 圖表也只會呈現一種顏色代表 AlphAI 只會執行一種結果。

4. Neurons have bias

在「AI」勾選「neurons have bias」

目的是 :

→ 理解什麼是神經偏差

→ 手動改變神經網絡來測偵入侵者

→ 我們希望2條預測線可以互相交差

我們將這些不同顏色的區域稱為「決策區 | decision zone 」,區間上的顏色會對應選擇動作的顏色。

Output = Input * Weight + bias value

上圖例子 : ( 0.06 * -3.00 )+ 1.53 = 1.35

在 6cm 的情況下「beep」配合 -3.00 的 weight 加上 +1.53 的 bias value 得出的數值會大於沒有 bias 的「stop」

4.1 改變 weight 及加入 bias

加入 bias ,同時利用滑鼠滑輪慢慢改變 weight 的數值 ( bias 數值保持不變 ) ,

觀察圖表上 decision zone 的變化 , weight 的正數值愈大 「beep | 黃色」應愈大 , 負數值愈大則黃色愈小。

同時嘗試做出靠近障礙物時發出「beep」聲 , 障礙物消失時停止「beep」

→ 最簡單的做法是 weight 改成負數然後加入一個 bias value

總結 :

Nueral bias (神經偏差) 能令原來2條平行的預測線交差 ,

從而讓 neuron 執行其他行動。(而非原先一成不變的行動)

 

5. 將入侵者以 45度角擺在 AlphAI 面前

 觀察 ultrasonic sensor 顯示的數值。 同時參考之前做過的預測曲線圖 , 為何這次機器人沒有發出「beep」聲?

6. 設定 Hidden Layer (隱藏層)

目的是 :

→ 透過改變 network 來偵測不同方向的障礙物

→ 理解加入 hidden layer 的意義

打開「AI」Tab , 然後在「hidden neuron layers」輸入 2

加入後 network 的中間應該會多了 2 個 neuron (hidden layer)

6. 訓練 AlphAI 避開 45 度角的障礙物

訓練內容分成 3 大部份 :

1. AlphAI 正面偵測到障礙物 | Ultrasonic sensor 的數值很小

2. AlphAI 以 45 度偵測到障礙物 | Ultrasonic sensor 的數值很大 超過 100

3. 路上沒有障礙物  | Ultrasonic sensor 的數值大約為 40

  • 按下「Reset learning」
  • 開啟「learning」

根據 Ultrasonic sensor的數值來選擇 Output 進行訓練

a. < 10 cm 正面有障礙物 = beep

b. >20 cm < 90 cm  沒有障礙物  = stop

c. > 100 cm 側面有障礙物 = beep

你應會得出以上 3個 decision zone (在沒有hidden layers的情況下無法做到)

添加 hidden layers 能更徹底地處理不同情況,特別是處理如以上例子般的非線性函數。