王培培+姜久雷



摘 要
BP算法也稱誤差反向傳播算法。主要思想就是正向傳遞信息,反向傳播誤差來調整網絡的權值和閾值,使輸出結果不斷向目標函數逼近。由于BP算法本身的優點比較多常被分類、模式識別、函數逼近、數據壓縮等。多年來對于BP算法的改進和應用領域研究也在不斷地進行著。對于BP的算法改進主要有兩種方式:一種是基于啟發式進行的改進,一種是基于數值優化方式的改進。而基于數值優化的方式主要有共扼梯度法、L_M算法等。本文主要介紹BP算法的幾種共軛梯度法思想,并利用實驗進行對比分析,方便后續研究者的利用。
【關鍵詞】BP算法 共軛梯度法 改進
在人工神經網絡的實際應用中,目前絕大部分都采用BP網絡及其變化形式。它是前饋網絡的核心部分,常被用于解決非線性問題,是一種有監督的多層前饋神經網絡模型。由于權值是利用網絡的訓練誤差進行反向傳遞來修正的,顧也稱其為BP網絡。輸入信息的正向傳遞和輸出誤差的反向傳遞,構成了BP網絡的信息循環,最終使得誤差到達最小。BP網絡的傳統訓練方法利用的是梯度下降法,本文則主要介紹BP網絡的幾種共軛梯度法對網絡進行訓練,并對實驗結果進行對比分析。
1 BP神經網絡的梯度下降法
梯度下降法又稱最速下降法,是由著名的數學家柯西cauchy于1847年提出的。它的主要思想就是在最快的時間內達到目標值,而這個最快的方式就是函數的梯度。對于函數而言,梯度就是函數的導數。對于BP算法而言,就是利用梯度下降法沿著梯度下降的方向來尋求函數的最優值。它有兩種迭代方式:一種是隨機梯度下降,另一種是批量梯度下降。在BP網絡中一般利用的是批量梯度下降法的原理。下面我們簡單介紹下批量梯度下降法的原理。若h(x)是需要擬合的函數;E(θ)為均方誤差,主要是用來衡量集眾的樣本對線性模式的擬合程度。m為訓練樣本的總數。θ是最終需要通過梯度下降法求得的參數。
而我們的目標就是需要求出E(θ)取極小值的θT向量,根據前人的研究得出,沿著函數梯度的方向下降就能最快找到極小值。
所以計算E(θ)關于θT的偏導數,也就得到了向量中每一個θ的梯度:
沿著梯度的方向更新參數的值,迭代直到收斂。可以看到,批量梯度下降是用了訓練集中的所有樣本,所以這種訓練一般直適合小樣本的訓練學習,而且訓練過程中易陷入局部極小值且易出現震蕩現象。
2 幾種共軛梯度法
共軛梯度法是梯度法的一種改進方法。可以彌補梯度法振蕩和收斂性差的缺陷,基本思想是尋找與負梯度方向和上一次搜索反向共軛的方向作為新的搜索反向,從而加快訓練速度,并提高訓練精度。所有的共軛梯度法都采用負梯度方向作為初始搜索方向:p0=-g0,然后沿著該方向作一維搜索:,接下來,就是利用共軛方向作為新一輪的搜索方向,通常在當前負梯度方向上附加上一次搜索方向:。而的選取衍生出各種梯度法,如:Fletcher-Reeves、Polak-Ribiere、Powell-Beale、量化共軛梯度法等。
(1)在Fletcher-Reeves共軛梯度法中,修正系數如下:
;
(2)在Polak-Ribiere共軛梯度法中修正系數如下:
;
(3)而Powell-Beale共軛梯度法和以上兩種不同,因為它不是改變修正系數,二是改進設置負梯度方向搜索的條件。在一般的共軛梯度法中,當迭代次數等于網絡參數(權值和閾值)的個數時,再將搜索方向設置為負梯度方向。在Powell-Beale共軛梯度法中,條件改變如下:
如果該條件滿足,搜索方向就還原為負梯度反向。
(4)量化共軛梯度法不同于前面介紹的幾種共軛梯度法。上面介紹的幾種都需要進行一維搜索,這樣就可以耗費很多時間。應用Moller提出的量化共軛梯度法(SCG)就避免了耗時的以為搜索,其基本思想是融合了可信區間法和共軛梯度法,具體的方法就不再贅述了。下節我們通過實例進行仿真驗證上面幾種算法的特性。
3 應用Matlab進行實驗對比分析
本節主要是借鑒MATLAB神經網絡與應用中的實例進行分析,總結以上幾種訓練方法的特點,并在此基礎上進行匯總分析。首先設置輸入值和期望輸出值。如表1所示。
通過上述實驗是通過20組實驗后得到的平均值,可以看出述幾種實驗模擬得到的結果和原始值很相近。所以上述訓練方法對BP網絡的訓練還是有意義的。只是針對不同的情況利用不同的訓練方法而已。
參考文獻
[1]陳朝陽,行小帥,李玥.共軛梯度BP算法在Matlab 7.0中的實現[J].現代電子技術,2009,32(18):125-127.
[2]江學鋒.共軛梯度BP算法在藥品銷售預測中的應用[J].電腦知識與技術,2012,08(14):3361-3363.
[3]李軍,常濤,丁萃菁.改進共軛梯度BP算法的應用研究[J].計算機仿真,2005,22(04):111-113.