天天看點

機器學習之神經網絡

前面說到的感覺器是一種最基礎的神經網絡,他隻有輸入層和輸出層,感覺器隻能處理線性可分問題,而對于非線性問題就需要多層神經網絡。一般如下圖所示,有多個層,比如左邊的包含輸入層、隐層和輸出層,而右邊的則包含了兩個隐層。每層的神經元與下一神經元全互連,同層之間的神經元不會相連,輸入層用于接收輸入,經過隐層加工後再到輸出層加工并輸出。

機器學習之神經網絡

對于多層網絡我們常用誤差逆傳播算法來訓練,而我們最常見的BP神經網絡指的是使用誤差逆傳播來訓練的多層前饋神經網絡。除此之外其他類型的神經網絡也可能會用誤差逆傳播算法來訓練。

總的來說,誤差逆傳播是使用梯度下降法,通過反向傳播不斷調整神經網絡中各個權重進而使輸出層的誤差平方和最小。

BP神經網絡好的地方就是我們完全不必事先考慮怎麼用數學方程來描述輸入和輸出之間的關系,轉而考慮的是設計一個N層神經網絡,而要多少層、每層要多少個節點就可以我們根據經驗來設計,可通過不同的網絡模型來看哪個模型能更好地拟合。

BP神經網絡其實很直覺很好了解,整個過程如下。

下面是一個三層(不算輸入層)神經網絡,兩個輸入經過幾層網絡後得到一個輸出。

機器學習之神經網絡

在訓練該網絡的過程中,輸入x1、x2,f1(e)節點對應的權重為w(x1)1、w(x2)1,則有y1=f1(w(x1)1+w(x2)1)。

機器學習之神經網絡

f2(e)節點對應的權重為w(x1)2、w(x2)2,則有y2=f2(w(x1)2+w(x2)2)。

機器學習之神經網絡

f3(e)節點對應的權重為w(x1)3、w(x2)3,則有y3=f3(w(x1)3+w(x2)3)。

機器學習之神經網絡

這麼一來就得到第一層隐層的所有信号輸出,接下去往下一層傳播,這時對于第二層隐層來說,第一層隐層的所有節點的輸出就是它的輸入,這時輸入節點變為3個,分别為y1、y2、y3,對應權重為w14w24w34,則y4=f4(w14y1+w24y2+w34y3)。

機器學習之神經網絡

而f5(e)對應的權重為w15w25w35,則y5=f5(w15y1+w25y2+w35y3)。

機器學習之神經網絡

于是又得到第二層隐層的兩個輸出,繼續往下一層(輸出層)傳播,對于輸出層,第二層隐層的兩個節點的輸出即為它的輸入,此時輸入節點為2個,分别為y4和 y5,假設權重分别為w46w56,則y6=f6(w46y4+w56y5)。

機器學習之神經網絡

往下看看誤差逆傳播是怎麼一回事。通過上面的過程我們擷取到了一個最終的輸出,而這個輸出與目标值可能存在誤差,表示為δ=z−y。則對于樣本的目标函數為Ed=12∑i(zi−yi)2。

機器學習之神經網絡

使用梯度下降法更新每一個權重,即wji←wji−η∂Ed∂wji。解決了上面的式子就可以完成疊代優化了。

如下圖,對于每個節點輸入nodej有,

nodej=∑iwjixji

機器學習之神經網絡

根據鍊式求導法則有,

∂Ed∂wji=∂Ed∂nodej∂nodej∂wji=∂Ed∂nodej∂∑iwjixji∂wji=∂Ed∂nodejxji

于是隻要求得∂Ed∂nodej即知道梯度權重更新。

對于輸出層,其中∂yj∂nodej=∂sigmoid(nodej)∂nodej=yj(1−yj),則有

∂Ed∂wji=∂Ed∂yj∂yj∂nodejxji=−(tj−yj)yj(1−yj)xji

則按照下面進行權重更新,

wji←wji−η∂Ed∂wji=wji+η(tj−yj)yj(1−yj)xji

為友善表示,也可以令誤差項δj=−∂Ed∂nodej,則

δj=(tj−yj)yj(1−yj),

wji←wji+ηδjxji

有了上面的更新公式後就可以對輸出層進行疊代更新了。

對于隐層,設節點j的所有輸出為A,則下一層網絡有多少個節點,則它的集合大小為多少,比如上圖中,對于節點1,它的輸出集合A大小為2,分别輸出到節點4和節點5。隐層節點的輸入nodej通過影響所有輸出A再往下影響Ed,再設nodek為下一層的輸入,則Ed是nodek的函數,且nodek是nodej的函數。對于節點輸入nodej,由于其輸出A包含多個元素,有多個影響分量,是以,

∂Ed∂nodej=∑k∈A∂Ed∂nodek∂nodek∂nodej=∑k∈A∂Ed∂nodek∂nodek∂f(nodej)∂f(nodej)∂nodej=∑k∈A−δkwkj∂f(nodej)∂nodej=∑k∈A−δkwkjf(nodej)(1−f(nodej))=−f(nodej)(1−f(nodej))∑k∈Aδkwkj

為了抑制過拟合,對于整個訓練樣本集目标函數進行正則化。

E=λ1m∑1mEd+(1−λ)∑w2

神經網絡的訓練可能陷入局部最小中,有時需要一些政策跳出局部最小,以便有一定幾率得到全局最小。

1. 模拟退火

2. 随機梯度下降

3. 多個不同的初始點

====廣告時間,可直接跳過====

=========================

歡迎關注:

機器學習之神經網絡

繼續閱讀