Workshop 5 - KNN Algorithm
K Nearest Neighbors Algorithm | K-近鄰演算法
我們將學習 KNN 演算法的原理 , KNN 同樣是 supervised learning (監督式學習) 的一種。
訓練員需根據 AlphAI 鏡頭內圖像的 Pixel Value 來訓練/指示機械人該如何行動。
經過一連串的訓練後 , AlphAI 在行駛時將會在上圖找出 K 的最鄰近值從而作出行動。
材料 :
- 已經在電腦安裝 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 連接常見問題
導入「Paramaters - KNN Camera」
→ 在「Parameters」中選出「load demo parameters...」然後導入「Supervised learning - KNN Camera」
Parameters 是 AlphAI 預設的 Demo Configuration setting , 方便用家直接導入使用。
行駛的原理 :
- 在鏡頭你會看到2組數字 (pixel value) , 左方數字為鏡頭的左面 ; 右方為右面
- 數值愈高代表愈光(在空曠地) ; 數值愈低代表愈暗(接近牆)
- 同樣處於光源 = 向前直行 ; 一面處於光一面處於暗 --> 向光那邊轉
- 2組數字相約代表前方沒障礙物繼續向前行駛
- 右面的數字較大且左面的數字非常小 --> 代表 AlphAI 的左面有障礙物 --> 向右轉
- 右面的非常小且左面的數字較大 --> 代表 AlphAI 的右面有障礙物 --> 向左轉
提示 :
在訓練過程 , 無需行以高速行駛 , 你可在「max speed」中減慢速度。
為方便學習,您可以:
用手移動機器人,教它在各種情況下做出正確動作。例如放近牆壁 , 放至鏡頭2邊數值差距大的地方。
為了更有效觀察你可以 :
你可以在「Visualization」的「Camera」勾選「network input resolution」及「show background」
勾選「network resolution」能讓用家可更清楚地看到鏡頭上的 pixel value
「show background」則能清楚顯示 AlphAI 機械人在那個區域(K最近那一點)從而判斷它做出什麼動作。
K(現時的位置)將牽著最近的一點 (Nearest Neighbor) , 上圖為黃色 = 進行黃色動作(直行)
訓練後圖表應有類似的形狀。
測試和加強學習 :
在賽場完成幾圈行駛後,如果您認為您的AlphAI已經訓練有素,你可以重新點擊 「self-drive」。 如果你的機器人訓練有素,它將開始自行跟隨訓練的內容行駛!
但學習過程還沒有結束的; 即使AlphAI是自動駕駛,你也可以在它移動時通過按箭頭繼續控制它(訓練)。 例如,如果在死路走不出來,可以指令讓它轉向。
有可能遇到的問題 :
- 場地的光暗問題 , 賽道如經過移動後 AlphAI 行駛有可能會出現誤差
延伸 - 將 KNN 的內容轉成 Neural network 顯示
首先儲存你在 KNN Algorithm 的訓練成果
打開最頂工具列的「AI」然後按「Save experience buffer」
在改變 Algorithm 後訓練會被重置 , 為了更容易作 KNN 與 Neural network 的比較 ,
我們希望兩者都 training data 都是一樣的 , 因此需儲存訓練成果。
打開「AI」然後將「algorithm」改成 neural network
打開「Visualization」將「main display」改成「state space and netowrk」
開啟「input/output values」及「keep space between neurons」
完成設定後你應看到類似的畫面 , 有保留 knn graph 並增加了 neural network
利用「load experience buffer」導入你剛才儲存的訓練成果。
導入後 experience buffer 跟 knn graph 會回覆原狀
將 network value 也開啟 , 以便分析 KNN 跟 Neural Network 的關係
啟動「self-drive」觀察 AlphAI 的行為及dashboard上的 Neural network value
在鏡頭獲取的pixel value 為 209 , 210 (空曠) 時 , 假如在 KNN algorithm 下將會是找出黃點最近的鄰居 i.e 另一個黃點
而在 Neural Network 上黃色 Output 的數值是最高的 , 因此 AlphAI 會執行 Forward 。
output 的數值是由 [ input (pixel value) * weight ]+ bias 來計算的 , 如上圖為例 :
0.82 (左面pixel value) * 4.36 ( weight) = 3.5752
0.85 (右面 pixel value) * 3.29 (weight) = 2.7965
Input1 + Input2 + bias = Output
3.5752 + 2.7965 + (-2.11) = 4.26 (因為dashboard只能顯示小數後的2位數 , 所以人手計算會有誤差)
經計算後可發現 KNN algorithm 的訓練數據是可以直接轉換成 neural network 使用的