深度學習-感知器算法是怎麼訓練的?

最近在複習深度學習,最基礎的感知器是神經網絡的基礎組成單元,理解一下感知器分類算法是如何進行數據訓練的吧!

從上面的圖中可以看出,上面的數據集中的點,感知器會隨機畫一條直線作爲分隔界限,從上面圖中看出,初始的分隔界限產生了兩個分類錯誤的點,那麼怎麼能進一步優化這個分隔線,使得他的分類效果達到更好?

對於錯誤分類的點,感知器是努力讓分割線離得更近一點,所以感知器會適當的調整分割線的位置,使得分割線離分類錯誤的點更近一些。

 上圖中給出一個具體的例子,分割線:3X1+4X2-10 = 0,上方藍色的區域是正區域,下方紅色區域的是負區域,這裏面分爲兩種情況:

(1) 真負點被劃爲正區域(如上圖):一個紅色的點被劃分到藍色的區域,此時,需要調整分隔線的位置,使得分割線離那個紅色的點更近一點,如何調整呢?調整的方法見圖中右邊的計算公式,這裏有一個學習率(learnig rate)設爲0.1,假如那個紅色點的座標(4,5),在加上一個常量1,則(4,5,1)*0.1 = (0.4,0.5,0.1),再用分割線的係數(3,4,-10)-(0.4,0.5,0.1)=(2.6,3.5,-10.1),調整一次後的方程爲:2.6X1+3.5X2-10.1 = 0

  

 (2)真正點被劃爲負區域(如上圖):一個藍色的點被劃分到紅色的區域,此時,需要調整分隔線的位置,使得分割線離那個藍色的點更近一點,如何調整呢?調整的方法見圖中右邊的計算公式,這裏有一個學習率(learnig rate)設爲0.1,假如那個紅色點的座標(1,1),在加上一個常量1,(1,1,1)*0.1=(0.1,0.1,0.1),分割線的係數(3,4,10)+(0.1,0.1,0.1)=(3.1,4.1,10.1),經過一次調整後的方程變爲 3.1X1+4.1X2+10.1 = 0

感知器的學習過程就是反覆進行調整分隔線的位置的過程。

下面採用了Python的程序模擬了一下感知器的學習過程:

程序源碼可以在github 上下載:感知器模擬練習

在這個程序中 學習率 learning_rate 和 循環的次數可以隨意變換,下面給出不同學習率和不同循環次數的模擬圖:

 

 

具體代碼請自己下載查看,歡迎指教!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章