感知器算法與神經網絡,及反向傳播算法的推導

姓名:Jyx
班級:csdn人工智能直通車-5期
描述:這是本人在學習人工智能時的學習筆記,加深理解

  1. 感知器模型
    1.1 感知器模型的推廣
  2. 神經網絡
  3. 反向傳播算法

感知器模型(wiki)

一個簡單的感知器算法可以表示如下

y = sgn ( w T x + b )  或者 y = sgn ( w T x ) , w h e r e   w = [ w T , b ] T , x = [ x T , 1 ] T

這裏寫圖片描述
出於簡化考慮,本文采用第二種表達方式,如無特別說明一般用 w , x 代替 w , x
感知器的代價函數定義爲:
J ( w ) = x Y ( δ x w T x ) , δ x = { 1 , x ω 1 + 1 , x ω 2

ω 1 , ω 2 代表類別, Y 代表錯誤分類的樣本的集合。
顯然代價函數總是正的。
採用梯度下降法,權重更新公式爲
w ( t + 1 ) = w ( t ) ρ t J ( w ) w | w = w ( t ) = w ( t ) ρ t x Y ( δ x x )

算法描述:

  • 隨機選擇 w ( 0 ) , 選擇 ρ 0
  • t = 0
  • 重複
    • Y =
    • F o r   i = 1   t o   N
      I f   δ x i w ( t ) T x i 0   t h e n   Y = Y { x i }
    • E n d   F o r
    • w ( t + 1 ) = w ( t ) ρ t x Y δ x x
    • 調整 ρ t ρ t + 1
    • t = t+ 1
  • 直到 Y =

這不是一個標準的梯度下降過程,因爲函數 j ( w ) 隨着訓練的進行一直在改變。但算法依然收斂。

感知器模型的推廣

異或問題

簡單的感知器模型只能處理線性可分的問題,著名的異或問題感知器算法就不能解決。爲此,可以使用兩層感知器,
兩層感知器的侷限:
兩層感知器的處理能力依舊有限:兩層感知器可以分離由多面體區域的並集構成的類,而不能分離這些區域的並集。
爲此,我們可以選擇三層感知器。

神經網絡

上面討論通過增加感知器的層數來增強感知器的分類能力,但另一方面我們也可以改變感知器的其它方面來增強他的分類能力,比如激活函數。這就是神經網絡。
在查找資料的過程中,找到一個很有用的博客專題:深度神經網絡基本問題的原理詳細分析和推導,裏面具體描述了神經網絡的方方面面

關於激活函數的一個定理

整個機器學習中最重要的一個部分就是優化,優化可以看成是在一定損失函數下的擬合問題。通用逼近定理給出了一些擬合的結論。通用逼近定理這裏就不羅列了,有興趣參考wiki,這裏摘錄一段網上一篇blog對通用逼近定理的解釋

一個僅有單隱藏層的神經網絡。在神經元個數足夠多的情況下,通過特定的非線性激活函數(包括sigmoid,tanh等),足以擬合任意函數。這使得我們在思考神經網絡的問題的時候,不需要考慮:我的函數是否能夠用神經網絡擬合,因爲他永遠可以做到——只需要考慮如何用神經網絡做到更好的擬合(摘自https://blog.csdn.net/zpcxh95/article/details/69952020

反向傳播算法

反向傳播算法從根本上而言是一種多元函數的鏈式法則的應用。其中也沒有高深的推導,只是有層窗戶紙讓人看不真切
這裏力圖把本人理解的關鍵點寫清楚。
推薦一篇比較形象的推導反向傳播算法

一個簡單的神經網絡定義如下
這裏寫圖片描述
在本文推倒中假定網絡共有 L ( 1 , , L ) 層,每層有 k i 個神經元,有兩個特例:對於第一層輸入層 k 1 就等於輸入向量的特徵維數,對於最後一層輸出層 k L 就等於輸出向量的維數,又假定輸入向量共有 N ( x 1 , , x N ) 個, f i l 表示第 l 層的第 i 個激活函數, w i j l 表示第 l 層第 i 個神經元的第 j 個權向量, b l 表示第 l 層的偏置。 y ^ 表示網絡的輸出。 v i l 表示第 l 層第 i 個神經元的輸出

一般形式

按照上面的定義,每一層的輸出可以表示爲上一層輸出的函數,即

(1) v i l = f i l ( j = 1 k l 1 w i j l v j l 1 + b i l ) , l > 1 y ^ i = v i L 定義輔助變量 (2) ξ i l = j = 1 l 1 w i j l v j l 1 + b i l (3) v i l = f i l ( ξ i l ) , l > 1

note: 這裏有個重點 w i j l v j l 1 是獨立的變量,這意味着對 ξ i l 求導時 v j l 1 可以看作常量
同一般的反向傳播算法這個名字暗示的那樣,我們從最後一層開始往回計算梯度,即先計算 w i j L 的梯度,再依次 w i j l 1 , , w i j 2

1. 第 L
對於損失 L ( y , y ^ ) ,可以寫成 v i L ( y ^ i = v i L ) 的函數

L ( y , y ^ ) = L ( y , y 1 ^ , y 2 ^ , , y k l ^ ) (4) = L ( y , v 1 L , v 2 L , , v k L L ) (5) L w i j L = L v i L v i L w i j L = L v i L v i L ξ i L ξ i L w i j L (6) L b i L = L v i L v i L b i L = L v i L v i L ξ i L ξ i L b i L

利用2式和3式,可以得到
ξ i L w i j L = v j L 1 ξ i L b i L = 1 v i L ξ i L = f i L ( ξ i l )

所以5式和6式可以化簡成
L w i j L = L ( v i L ) f i L ( ξ i l ) v j L 1 L b i L = L ( v i L ) f i L ( ξ i l )

2. l < L
l < L 時,根據神經網絡的構成,每一層都只和下一層有關。迭代遞歸下去可以知道,損失 L ( y , y ^ ) 總可以寫成某一層的函數,即

(7) L ( y , y ^ ) = L ( y , v 1 l , v 2 l , , v k l l )

注意式(7)和式(3)雖然形式不同,但確實是同一個函數,只不過展開深度的不同。
因爲式(7)和式(3),根據上面的推導過程,立即可以得到
相關文章
相關標籤/搜索