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