高宇航
?。暇┼]電大學 計算機學院,江蘇 南京 210003)
摘要:BP神經網絡目前被廣泛應用,但是其收斂速度慢、預測精度不高的缺點卻一直被人所詬病,因此,在傳統BP神經網絡中使用附加動量項法以及動態學習速率法,并以兩者的融合為基礎提出了陡峭因子可調激活函數法來改進BP神經網絡。以非線性函數擬合為實例,從收斂速度和預測精度兩方面對比分析兩種方法,實驗證明所提出的改進方法明顯提高BP神經網絡的收斂速度以及精度。
關鍵詞:BP神經網絡;附加動量項;動態學習速率;陡峭因子可調激活函數
中圖分類號:TP183文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.06.017
引用格式:高宇航. 一種改善BP神經網絡性能的方法研究[J].微型機與應用,2017,36(6):53-57,61.
0引言
人工神經網絡(Artificial Neural Network, ANN)是一種以信息處理的方式對人的大腦神經元網絡進行模仿、簡化并簡單抽象,而非精確逼真地描述的一種非線性動態系統。BP(Back Propagation)神經網絡是一種信號正向傳播、誤差反向傳播的多層前饋網絡[1],BP神經網絡模型結構如圖1所示。
由于BP神經網絡具有自適應、自組織、實時學習的特點,目前被廣泛應用于模式識別、自動控制、預測估計、信號處理、專家系統等領域。但因為其學習規則是基于梯度下降算法,因此就會存在著諸如收斂速度較慢、預測精度不高、不能到全局最小點(即易陷入局部最小點)等問題[2]。所以如何有效地改進BP神經網絡成為一個值得研究的重要問題。研究表明影響BP神經網絡性能的因素有很多,本文從其中幾個方面展開來探究改進BP神經網絡的方法。
1BP神經網絡的改進
1.1附加動量項方法
BP神經網絡從網絡誤差的負梯度方向修正權值和閾值,這個過程中并沒有考慮以前經驗的積累,從而造成震蕩的趨勢和陷入局部極小值的可能性[3]。因此本文提出采用附加動量項,即在誤差的反向傳播的過程中給當前權值附加一個與之前一次權值變化量相關的值。附加動量的權值公式為:
w(n)=w(n-1)+Δw(n)+η[w(n-1)-w(n-2)](1)
式中,w(n)、w(n-1)、w(n-2)分別表示n、n-1、n-2時刻的權值,η代表動量的學習率。
1.2動態學習速率法
傳統BP神經網絡采取固定學習速率η,取值范圍一般為[0,1],如果η選擇過小,則會導致學習時間過長;如果η選擇過大,雖然可以加快學習速率,但會使權值修改過程產生震蕩現象,以致全局誤差達不到期望值。
為了改進以上問題,根據梯度下降法逼近極小點的路線是鋸齒狀的、越靠近極小點收斂速度越慢的特征,提出動態學習速率法來達到縮短訓練時間的目的。具體步驟如下: 首先設置初始學習速率η,然后檢查修改之后的權值能否減小誤差,如果可以,則說明學習速率設置較小,需要加大學習速率η;如果未能減小誤差,則說明調整過度,需要降低學習速率η。將對動態學習速率η的調整公式定義如下:
η(n+1)=1.04η(n),Ε(η+1)<Ε(η)
0.6η(n),Ε(η+1)>1.03(η)
η(n),其他情況(2)
1.3選擇適當的激活函數
在神經網絡中,一個神經元的激活函數是用來執行復雜的映射功能,其決定了這個神經元節點的輸出[4]。FESAURO G指出BP神經網絡的收斂速度受激活函數直接影響[5]。
激活函數的作用主要體現在為多層神經網絡引入非線性因素[6]。因為線性模型的表達能力是十分欠缺的,倘若神經網絡中全是線性部件,輸出都是輸入的線性組合,與沒有隱層效果相當,這種情況就是最原始的感知機(Perceptron)。非線性是神經網絡的核心,一旦引入了非線性,BP神經網絡就可以有效地逼近任意連續函數,能夠解決線性模型所不能解決的非線性問題[7]。
目前常用的激活函數有Sigmoid函數和雙曲正切函數兩種。
?。?)Sigmoid函數: Sigmoid函數的函數圖形為s形,函數定義為:f(net)=11+e-net,它是一種有界可微的實函數,在每一點導數的值始終是正數,其導數為:f′(net)=e-net(1+e-net)2。Sigmoid函數圖像及其導數圖像如圖2所示。
它的輸出范圍有限,可以將輸入的數值映射到0和1之間,所以數據在傳遞過程中不易發散。函數趨向于負無窮時極限為0,函數趨向于正無窮時極限為1。 Sigmoid函數可以輕而易舉地將非線性引入到網絡中[8]。但是Sigmoid函數也有著如下兩個較為致命的缺點:
?、亠柡蜁r梯度消失。當輸入值很大或很小的情況下,Sigmoid函數的這些區域的梯度幾乎為0,即梯度消失。而對于BP神經網絡而言,如果梯度過小的話,則會導致權值的修改量很小或者幾乎為0,從而導致整個網絡難以學習。
?、赟igmoid函數的輸出值不是零均值化的。這會導致下一層神經元將本層非零均值化的輸出信號作為輸入。試想一下如果數據輸入神經元是恒正的,那么所得出的梯度也會是恒正的數,而從產生鋸齒現象而導致收斂速度變慢。
(2)雙曲正切函數:又稱為Tanh函數,其函數可以表達為:f(net)=21+e-2net-1,其導數為:f′(net)=1-f(net)2。Tanh函數圖像及其導數圖像如圖3所示。可以將輸入的數值映射到-1與1之間,圖像過原點且穿越I、III象限,Tanh函數是一個嚴格單調遞增函數。函數趨向于負無窮時極限為-1,函數趨向于正無窮時極限為1[9]。Tanh函數針對Sigmoid函數輸出值非零均值化做出了改進,但是飽和時梯度消失的問題依舊存在[10]。
為了對比Sigmoid函數與Tanh函數作為激活函數的性能,以經典非線性問題——異或問題(XOR)作為研究對象,分別用兩種函數作為激活函數,將最大訓練次數設為1 000次,訓練的預期均方誤差(MSE)精度設為0.000 1,Sigmoid與Tanh的迭代次數對比如表1所示。表1Sigmoid與Tanh的迭代次數的對比激活函數SigmoidTanhMSE精度0.000 10.000 1實際MSE精度0.000 094 5460.000 091 367迭代次數10720
根據表1可以得知,Tanh函數作為激活函數時BP網絡的收斂速度要優于Sigmoid作為激活函數的收斂速度,其性能大約為Sigmoid的5倍。
1.4改進激活函數
傳統BP神經網絡中,只有連接神經元之間的權值以及作用在激活函數上的閾值是可調整的,而激活函數則是固定不變的,這樣一來就制約了BP神經網絡的非線性映射能力,繼而影響網絡的精度以及收斂速度[11]。為了改進上述問題,有學者提出了針對Sigmoid函數的垂直、水平位置的改進[12],但是根據上文可以得知Tanh函數作為激活函數要優于Sigmoid函數,BP神經網絡學習規則是基于梯度下降法的特征以及實際上激活函數的性能與函數的陡峭程度的關聯更緊密的結論[1314],在為了達到優化BP神經網絡的同時,沒有必要將其變得更加復雜?;谝陨纤枷氡疚奶岢鋈缦滦问降亩盖鸵蜃訁悼烧{Tanh函數:
f(net)=21+e-2αx-1(3)
其中,α為陡峭因子,其決定函數的陡峭程度。本文中xj代表輸入層的第j個節點的輸入,假設輸入層有m個節點,那么j=1,…,m;wji為輸入層第j個節點到隱層第i個節點之間的連接權值;ψi表示隱層第i個節點的閾值;f1(α1 net)為隱層的激活函數,其中α1是隱層激活函數的可調節陡峭因子;win代表隱層第i個節點與輸出層第n個節點之間的連接權值,假設隱層存在q個節點,則n=1,…,q;θn表示輸出層第n個節點的閾值;f2(α2net)為輸出層的激活函數,α2是輸出層激活函數的可調節陡峭因子;on代表輸出層第n個節點的輸出,假設輸出層存在l個節點,n=1,…,l。
根據以上規定,改進之后的BP神經網絡的前向傳播過程為:
隱層第i個節點的輸入為:
neti=∑wjixj-ψi(4)
隱層第i個節點的輸出記為:
yi=f1(α1neti)=f1(α1∑mi=1wjixj-ψi)(5)
輸出層第n個節點的輸入為:
netn=∑qn=1winyi-θi=∑qn=1winf1(α1∑mi=1wjixj-ψi)-θi(6)
那么,輸出層上第n個節點的輸出值就可以用以下形式表示:
on=f2(α2netn)=f2(α2∑qn=1winyi-θi)=f2∑qn=1winf1(α1∑mi=1wjixj-ψi)-θi(7)
改進之后的BP神經網絡誤差的反向傳播過程如下:
每個樣本p的二次型誤差準則函數為:
Ep=12∑ln=1(tn-on)2(8)
設系統中共有P個訓練樣本,則系統總誤差準則函數為:
E=12∑Pp=1∑ln=1(tn-on)2(9)
根據BP神經網絡反向傳播的原理,為了使得連接權值沿著E的梯度下降的方向改善,需要依次計算Δwin、Δwji、Δα2、Δα1,可以利用以下公式來計算出需要的值,其中η為增益因子。
改進之后的BP神經網絡的輸出層權值調整公式為:
改進之后的BP神經網絡的隱層權值調整公式為:
改進之后的BP神經網絡的輸出層激活函數陡峭因子調整公式為:
改進之后的BP神經網絡的隱層激活函數陡峭因子調整公式為:
根據求導法則,可以求得:
經過整理,最后得到如下公式:
最后將計算出的值帶入如下更新公式中,其中t表示某一時刻:
win(t+1)=win(t)+Δwin(17)
wji(t+1)=wji(t)+Δwji(18)
α2(t+1)=α2(t)+Δα2(19)
α1(t+1)=α1(t)+Δα1(20)
2實驗結果與分析
為了驗證改進之后BP神經網絡的性能,使用MATLAB工具對非線性函數z=x2+y2進行擬合,從其1 800組輸入輸出數據中隨機選取1 700組作為訓練數據,用于BP神經網絡的訓練,剩余100組作為測試數據用來測試網絡的擬合性能[15]。
分別對采用Tanh函數作為激活函數的傳統BP神經網絡以及采用附加動量項方法與動態學習速率及參數可調Tanh激活函數結合的方法改進的算法對網絡進行訓練,最后對兩種方法的結果進行比較分析。
2.1網絡初始化
在網絡初始化階段需要確定輸入層神經元節點的個數nI、輸出層神經元節點的個數nO、隱層神經元節點的個數nH。根據需要擬合的非線性函數的特征,將輸入層神經元節點個數nI設定為2,輸出層神經元節點個數nO設置為1, 隱層神經元節點個數nH可根據如下公式得到:
nH=nI+nO+a
其中a為0~10之間的常數。根據以上設定,最終構造的BP神經網絡的輸入層神經元節點個數為2,隱層神經元節點個數為10,輸出層神經元節點個數為1。接下來則需要對網絡參數進行隨機初始化:連接權值∈(-0.5,0.5);閾值∈(-0.5,0.5);陡峭因子∈(0.7,1.5)。
2.2數據預處理
參數隨機初始化之后,需要對待輸入至網絡中的數據進行歸一化處理,這樣可以減小各維數據間數量級的差別,從而避免因為輸入輸出數據數量級差別較大而造成網絡收斂慢、訓練時間長的問題。
MATLAB中對應歸一化代碼如下:
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
2.3對比試驗
針對傳統BP神經網絡以及采用附加動量項方法與動態學習速率以及參數可調Tanh激活函數結合的方法改進的網絡分別進行訓練,指定訓練的目標均方誤差分別取值為0.000 01與0.000 001,最大迭代次數設置為10 000次。
最后,以100組作為測試的數據分別針對迭代次數與誤差精度兩個方面來分析傳統BP神經網絡與改進后的BP神經網絡的擬合性能,結果如下。
從迭代次數的角度來分析,如圖4與圖5所示,當系統目標均方誤差設置為0.000 01時,傳統BP神經網絡到達該精度需要迭代70次,而改進之后的BP神經網絡只需要迭代33次就能達到該精度。
系統目標均方誤差為0.000 001時,如圖6與圖7所示,該精度要求下傳統BP神經網絡迭代了193次才完成,反觀改進后的BP神經網絡則只用迭代72次就輕松的達到了均方誤差精度的要求。
接著,從學習精度方面來分析。限于篇幅,從100個測試數據中隨機抽取出10個數據作為樣本,將目標均方誤差精度為0.000 01時傳統BP神經網絡的預測值記為A1,改進后的BP神經網絡記為A2;將目標均方誤差精度為0.000 001時傳統BP神經網絡的預測值記為B1,改進后的BP神經網絡記為B2,結果的表2所示。從表2可以觀察出改進后的BP神經網絡較之于傳統神經網絡在學習精度方面亦有著較為明顯的改善。
3結論
針對傳統BP神經網絡收斂速度較慢、預測精度不高、極易陷入局部最小點的缺點,本文提出了一種將平滑權值變化的值附加動量項方法與動態學習速率方法以及陡峭因子參數可調激活函數結合起來的改進方法,并與傳統BP神經網絡進行了以非線性函數擬合為實驗的對比分析,證明了本文改進的BP神經網絡具有更快的收斂速度以及更高的精度。
參考文獻
?。?] 周志華,曹存根. 神經網絡及其應用[M]. 北京:清華大學出版社,2004.
[2] ABRAHAM A. Meta learning evolutionary artificial neural networks[J]. Neurocomputing, 2004, 56: 1-38.
?。?] 張雨濃, 曲璐, 陳俊維, 等. 多輸入 Sigmoid 激勵函數神經網絡權值與結構確定法[J]. 計算機應用研究, 2012, 29(11): 4113-4151.
?。?] Wu Ailong, Zeng Zhigang. Global exponential stability in Lagrange sense for periodic neural networks with various activation functions [J]. Neurocomputing, 2011, 74(5):831-837.
?。?] DEBES K, KOENIG A, GROSS H M. Transfer functions in artificial neural networksa simulationbased tutorial[J]. Brains, Minds and Media, 2005(1).
?。?] MHASKAR H N, MICCHELLI C A. How to choose an activation function[J]. Advances in Neural Information Processing Systems, 1994: 319.
?。?] GULCEHRE C, MOCZULSKI M, DENIL M, et al. Noisy activation functions[J]. arXiv preprint arXiv:1603.00391, 2016.
?。?] 王雪光, 郭艷兵, 齊占慶. 激活函數對 BP 網絡性能的影響及其仿真研究[J]. 自動化技術與應用, 2002,21(4): 15-17.