1. 程式人生 > >神經網路學習(一)——感知器分類演算法

神經網路學習(一)——感知器分類演算法

最近,學習了一下神經網路的相關知識。寫一篇部落格,做思路整理。

神經網路包含input layer、hidden layer、output layer三層。(考慮真實神經原傳輸訊號的過程)

感知器分類演算法只適用於可以線性分割的資料!!!!!

相關概念:

 

訓練樣本X = \begin{bmatrix} x_{1} \\ ... \\ x_{m} \end{bmatrix},權重向量W = \begin{bmatrix} w_{1} \\ ... \\ w_{m} \end{bmatrix}z= {w_{1} x_{1} + ... +w_{m}x_{m} }(這個過程叫向量的點乘)。

啟用函式(單元步調函式):\phi (z)=\left\{\begin{matrix} 1 \, \, \, \, if \,\,\, z\geq \theta \\ -1 \, \, \, \, otherwise \end{matrix}\right.,用來分類。(注意,這是一個線性啟用函式)

閾值(偏置)\theta初始的閾值根據“經驗”給出,隨著模型的訓練,會更新

學習速率:\eta,是0到1比區間內的小數

步驟:

1.把權重向量初始化為0,或把每一個分量初始化為0到1間的任意小數。(w_{0} = -\theta \,\,\,\,\,\, x_{0} =1

,相乘的結果就是閾值。這樣做的目的是為了計算方便,只需要判斷Z的值是大於0還是小於0)

2.把訓練樣本輸入感知器,得到分類結果(-1或1)

3.根據分類結果更新權重向量和閾值

權重更新演算法:

W(j)=W(j)+\bigtriangledown W(j)

\bigtriangledown W(j)=\eta *(y-y^{'})*X(j)

y是輸入樣本的正確分類,y^{'}是感知器計算出來的分類。

閾值更新方法\theta =W(0)+\bigtriangledown W(0)

 

整體思路圖如下: