袁冰清,程 功,鄭柳剛
(國家無線電監測中心上海監測站,上海 201419)
機器學習中,神經網絡算法可以說是當下使用最廣泛的算法。神經網絡的結構模仿生物神經網絡,生物神經網絡中的每個神經元與其他神經元相連,當它“興奮”時,向下一級相連的神經元發送化學物質,改變這些神經元的電位;如果某神經元的電位超過一個閾值,則被激活,否則不被激活。其中誤差逆傳播(error BackPropagation)算法是神經網絡中最有代表性的算法,也是迄今為止使用最多、最成功的算法。
誤差逆傳播算法,簡稱BP網絡算法,而一般說到BP網絡算法時,默認指用BP算法訓練的多層前饋神經網絡。BP神經網絡模型的拓撲結構包括輸入層(input)、隱含層(hide layer)和輸出層(Output layer)。本文就以最簡單的BP神經網絡,只包含一層隱含層為例來推導理解BP原理。
我們知道在神經網絡信號的正向傳(forward-propagation)中,神經元接收到來自其他神經元的輸入信號,這些信號乘以權重累加到神經元接收的總輸入值上,隨后與當前神經元的閾值進行比較,然后通過激活函數處理,產生神經元的輸出。理想的激活函數是階躍函數:,“0”對應神經元抑制,“1”對應神經元興奮。然而階躍函數的缺點是不連續,不可導,所用常用sigmoid函數:,sigmoid函數及其導數如圖1所示。使用sigmoid函數作為激活函數時BP網絡輸入與輸出關系:

圖1 sigmoid函數及其導數
因此BP的核心思想就是:通過調整各神經元之間的權值,將誤差由隱含層向輸入層逐層反傳,也就是先實現信號的正向傳播到誤差的反向傳播過程。所以BP算法的核心步驟如下:
(1)求得在特定輸入下實際輸出與理想輸出的平方誤差函數(誤差函數或者叫代價函數)。(2)利用誤差函數對神經網絡中的閾值以及連接權值進行求導,求導原則就是導數的“鏈式求導”法則。(3)根據梯度下降算法,對極小值進行逼近,當滿足條件時,跳出循環。
有監督的BP模型訓練表示我們有一個訓練集,它包括了:input X和它被期望擁有的輸出output Y。所以對于當前的一個BP模型,我們能夠獲得它針對于訓練集的誤差。正向傳播:輸入樣本—輸入層—各隱層—輸出層;若輸出層的實際輸出與期望的輸出不符,則誤差反傳:誤差表示—修正各層神經元的權值;直到網絡輸出的誤差減少到可以接受的程度,或者進行到預先設定的學習次數為止。
以最簡單的BP神經網絡為例來推導原理,如圖2所示:假設網絡結構輸入層有n個神經元,隱含層有p個神經元,輸出層有q個神經元。

圖2 BP網絡結構圖
定義變量如下:
輸入向量 :x=(x1,x2,…,xn)
隱含層輸入向量:hi=(hi1,hi2,…,hip)
隱含層輸出向量:ho=(ho1,ho2,…,hop)
輸出層輸入向量:yi=(yi1,yi2,…,yiq)
輸出層輸出向量:yo=(yo1,yo2,…,yoq)
期望輸出向量:d=(d1,d2,…,dq)
輸入層與中間層的連接權值:wih
隱含層與輸出層的連續權值:who
隱含層各神經元的閾值:bh
輸出層各神經元的閾值:bo
樣本數據個數:k=1,2…m
激活函數 :f(.)
第一步,網絡初始化-給各連接值分別賦值,在區間(-1,1)內的隨機數,設定誤差函數e,給定計算精度值ε和最大學習次數M。
第二步,隨機選取第K個輸入樣本及對應期望輸出:

第三步,計算隱含層各個神經元的輸入和輸出:

第四步,利用網絡期望輸出和實際輸出,計算誤差函數對輸出層的各神經元的偏導數根據復合函數求導法則:

第六步,利用輸出層各神經元的δo(k)和隱含層各神經元的輸出來修正連接權值who(k):

第七步,利用隱含層各神經元的δh(k)和輸入層各神經元的輸入修正連接權值。

特別說明,最終公式中的μ、η代表學習率,為了調整步長,防止數值過大造成不收斂,無限逼近最優解。
第八步,計算全局誤差:

第九步,判斷網絡誤差是否滿足要求,當誤差達到預設精度或者學習次數大于設定的最大次數,則結束算法。否則,選取下一個學習樣本及對應的期望輸出,返回到第三步,進入下一輪學習。
實際上BP算法的最終目的是找到最優解,即是累積誤差最小的解。通過算法的優化,可以找到最優解,在機器學習中最常用的優化算法就是梯度下降法。但是在實際過程中,會出現多個局部最優解(對應梯度為零的地方),如圖3展示的可視化圖形中,有一個局部最優解,一個全局最優解。通常情況下找不到全局最優解,能找到局部最優解也不錯,也足夠優秀地完成任務。

圖3 全局最小與局部極小
通過上述文章對BP算法的理論推導,我們對神經網絡的參數及優化有了一定的了解,希望能給利用神經網絡或者深度學習算法解決無線電監測工作中的問題的同事提供一點思路與想法。■