單元十一 . 隱藏層 | Hidden Layer

學習目標

在這一個單元,會為大家介紹 AI 學習中的 Neural Network 如何運作以及 AI 是如何學習的

我們將以 Intruder Detection (入侵者探測器) 這個實驗來解釋 weight 、 hidden layer 、neuron bias 對學習所帶來的差異。

學習內容

  • 學習 Neural Network 的運作原理 : AlphAI 學習如何選擇執行的動作
  • 了解 Hidden Layer 對 AI 學習的重要性及用處

活動 :

材料:

  • 红色牆以及一件障礙物(例如 AlphAI 的盒子)

AI 設置的參數

  • 用 參數 <Parameters> 下拉餐單的 “載入示範參數” <Load demo parameters ..>
  • 像下面一樣,揀選 “動 vs. 不動” <Intruder Detction>。

開始訓練

手動編輯連接 | MANUALLY EDITING CONNECTIONS

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

測試 :

選擇其中一條線然後按 self-drive , AlphAI 會執行亮起的動作

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

這實驗的目標是遠距離時不發出聲音 , 因此 decision zone 該是「Stop | 無聲」佔多數 ,

但同時要讓發聲有壓倒性的選擇 --> 把 「buzzer」的 bias 調得比 「stop」高 ; 但 weight 改成負數來控制距離

以上圖的 decision zone 為例 , > 0.3 均是灰色 代表將 buzzer 控制在 <0.3 m (黃色) 才能被激活。

總結 :

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

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

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

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

6. 設定 Hidden Layer (隱藏層)

目的是 :

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

→ 理解加入 hidden layer 的意義

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

hidden layer (中間層) 將複雜的問題細分成更多個細緻的問題去分析 ;

例如 : A neuron 負責 detect long distance , B 負責 small distance , C 負責 45度的 distance 等等...

上圖為 5 個 Hidden Layer 的例子

繼續剛才的訓練

將 AlphAI 訓練成 :

  1. 接近阻礙物 / 牆時發出警號聲
  2. 跟牆 / 阻礙物有一定距離時停止
  3. 打斜看到阻礙物時也發出警號聲
  4. 當 AlphAI 離開阻礙物/牆很遠時發出警號聲

在 small distance (3cm) 上 , 紅圈的 neuron 都有反應(1.07 , 0.83 , 0.7X) ,

代表這幾個 neuron 是負責 samll distance ;它們 activate BUZZER neuron (476 黃色點) 並 deactivate STOP (藍色點 -505)

當 AlphAI 慢慢移離阻礙物 (10cm)

紅圈的 nueron 數值下降了 , 因為 hidden layer 的 neuron 都會被 Input neuron (distance) 影響

當 distance value 上升時 , 紅圈3組負責 small distance neuron 的 value 自然相對地被 deactivate

但 Output 還是 BUZZER 勝出 (311) 仍然發聲

當 AlphAI 移離阻礙物 (28cm)

你會發現 hidden layer 亮起的 neuron 改變了 , 代表這幾個 neuron 是負責 long distance 的

這幾組 neuron 同樣被 Input 影響 ,  activate STOP (黃色 533) ; deactivate BUZEER (-486) , AlphAI 停止動作

當你再移遠時 (41cm) , 你會發現剛才的 其中一個 neuron 會變成 activate BUZZER (358)

就這個實驗你會發現 :

我們無法直接將 Input Neuron 駁至 Output Neuron , 這樣任何距離(input)都只會有一種 Ouput

但將複雜的問題拆散後 , 如這次實驗需同時要detect 長距離及短距離

我們可以透過中間的 Neuron (hidden layer) ; 某些 detect long distance , 某些 detect short distance

並再組合成一個 Neural Network ==> 做出不同距離(Input)有不同的Output(動作)

學習需時間的並不是即時的 :

透過 「Graph」我們可以查看這個學習的需時多久才能變成「完美學習」

你可以「load experience buffer」導入訓練過的模型或「reset learning」重新進行訓練來觀察學習的進度

按下工具欄中的「graph」來觀察學習的進度

觀察「Loss | error signal」的部份 , 愈接近 0 代表學習愈完美

你會發現每當 AlphAI學習新東西時 Loss 會是最高的 , 並需要一定時間讓 AlphAI 進行學習

經過一段時間後 AI 才能「學到」並才能使整個學習成果進步

Dr Thomas Hidden Layer Workshop 講解 :