多層神經網絡與反向傳播算法

感知機

感知機就是我們前面學過的線性分類器加上一個激活函數。 線性分類器:

網上弄來的圖

v=wTx+b=(iwixi)+b

很多實際問題並不是線性可分的,所以需要用一個非線性函數將上述結果變爲非線性的。

y=φ(v)

常用的激活函數有sigmoid 、tanh、ReLU、Softplus:

它們的函數圖像分別是:
sigmoid

sigmoid(x)=11+ex

tanh

tanh(x)=exexex+ex

這裏寫圖片描述

ReLU(x)=max(0,x)

這裏寫圖片描述

softplus(x)=log(1+ex)

多層神經網絡

單層感知機無法處理或模擬像異或這種函數。如果將感知機連接起來構成一個多層神經網絡,則可以滿足類需求。也就說說多層神經網絡的模擬能力遠超過單層神經網絡。。

這裏寫圖片描述

設神經網絡有L+1層,每一層的輸出分別爲 [h0,h1,h2,h3,...,hL ,其中hi 均爲增廣向量。h0 爲輸入x⃗  ,h_L 爲 y⃗ 

各層的權值爲 [w1,w2,w3,...,bL][b1,b2,b3,...,wL] 。可以認爲第0層沒有權值,因爲他的輸出h0 就是x,或者也可以認爲w0 爲全一向量。這樣 h0=1˙x .

φl 表示第l 層的激活函數。

hl=φl(wTl1hl1+bl1),l=1,2,...,L
(式1)

誤差函數

誤差函數採用 二階範式 即

L(w)=12N(yylabel)T(yylabel)
(式2)
R(w)=λl=1LwTlwl+bl
(式3)
J(w)=L(w)+R(w)
(式4)

各種求導

爲了下面的推導方便,我們先給出各種函數的求導結果。
sigmoid :

s=s(1s)
(式5)
tanh:
t=1t2
(式6)
ReLU:
r={01 if x<0 if x0
(式7)
Softplus:
p=sigmoid1
(式8)

線性函數

y/w=w(wTx)=x
(式9)

w(wTw)=w
(式10)

反向傳播算法

爲了能對這個神經網絡模型進行學習,我們同樣採用梯度下降法。我們求損失函數

L(w)wl=L(w)hL˙hLhL1...hl+2hl+1˙hl+1hl˙hlwl

L(w)bl=L(w)hL˙hLhL1...hl+2hl+1˙hl+1hl˙hlbl

(式11)

這個式子是怎麼得到的呢? 觀察(式1)可以看出 hlhl1 的函數。所以運用複合函數求導法則,形成了上述公式。

我們再計算一個L(w)對 wl+1 的偏導數

L(w)wl+1=L(w)hL˙hLhL1...hl+2hl+1˙hl+1wl+1

L(w)bl+1=L(w)hL˙hLhL1...hl+2hl+1˙hl+1bl+1

(式12)

可以分析得到以下結論:

其一、最後一項爲相應層的輸出hl 對相應 的 wl 求導, 前面的項從最後的誤差函數一直向前求導。

L(w)wl=L(w)hl˙hlwl

L(w)bl=L(w)hl˙hlbl

(式13)
其二、L(w)對wl 求導和 對wl+1 求導公式有很多相同項。令

σl=L(w)hl
(式14)
整理(式11)和(式12)得到
σl=σl+1˙hl+1hl
(式15)

對於最後一層,其輸出就是整個神經網絡的輸出,所以不能用這個公式, 應該使用下面的公式。

σL=L(w)hL

這個σl 稱爲誤差傳播項,可以從高層向低層逐層計算。

那麼hl+1/hl 如何計算呢? 根據(式1),可以得到:

hl+1hl=φl+1vl+1˙vl+1hl=φl+1v˙wl+1
(式16)
其中 φl+1/v 就是 (式5) - (式10)給出的,根據這個層的激活函數選用對應的偏導數。

有了誤差L(w)對wl 的偏導數,我們就可以使用梯度下降法求更新權值了。

wl=wlαL(w)wl

bl=wblαL(w)bl

(式17)

代入(式13)和(式14),得到

wl=wlαL(w)hl˙hlwl=wlσlhlφl˙φlwl=wlσlhlφlhl1

bl=blαL(w)hl˙hlbl=wlσlhlφl˙φlbl=wlσlhlφl

(式18)

程序實現思路

有了(式15)這個最核心的公式,我們就可以將每個層做成一個類,然後將他們串聯起來就可以構造任意的多層神經網絡。

matlab中沒有類的概念,但有結構體,我們定義一個結構體並定義一組方法來構成一個“類”。

應該具有的方法有:

(1)前向傳播 ,根據(式1)從底向上逐層計算每層的輸出,最後一層的輸出即神經網絡的輸出 hl
(2)誤差後向傳播。 根據(式15),從頂到底計算每一層的誤差傳播項σl
(3)根據(式17)從底向上更新權值。

Matlab 實現

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