bp神經(jīng)網(wǎng)絡(luò)的研究_第1頁
bp神經(jīng)網(wǎng)絡(luò)的研究_第2頁
bp神經(jīng)網(wǎng)絡(luò)的研究_第3頁
bp神經(jīng)網(wǎng)絡(luò)的研究_第4頁
bp神經(jīng)網(wǎng)絡(luò)的研究_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

bp神經(jīng)網(wǎng)絡(luò)的研究

0下降算法的兩種模式bp神經(jīng)網(wǎng)絡(luò)培訓(xùn)算法計算了性能函數(shù)的梯度,然后沿負梯度調(diào)整了權(quán)重值和閥值,從而使性能函數(shù)達到最低。梯度下降算法有兩種模式:遞增模式和批處理模式。在遞增模式中,當(dāng)每個樣本輸入應(yīng)用于網(wǎng)絡(luò)之后,就對網(wǎng)絡(luò)的權(quán)值和閥值進行調(diào)整。而在批處理模式中,只有當(dāng)所有的樣本輸入都應(yīng)用于網(wǎng)絡(luò)之后,網(wǎng)絡(luò)的權(quán)值和閥值才會得到調(diào)整。MATLAB神經(jīng)網(wǎng)絡(luò)工具箱提供了多種訓(xùn)練函數(shù),它們都是屬于批處理模式的訓(xùn)練函數(shù),主要可以分為啟發(fā)式訓(xùn)練函數(shù)和快速訓(xùn)練函數(shù)。1啟動式培訓(xùn)算法1.1lr和nan函數(shù)traingd有7個參數(shù):epochs、show、goal、time、min_grad、max_fail和lr。lr是網(wǎng)絡(luò)的學(xué)習(xí)率,它越大,權(quán)值和閥值的調(diào)整幅度也就越大,但是如果lr太大,會使網(wǎng)絡(luò)的穩(wěn)定性大大降低;show用于顯示每次訓(xùn)練的狀態(tài),如果它的值是NaN,訓(xùn)練狀態(tài)將不會被顯示。如果網(wǎng)絡(luò)的訓(xùn)練次數(shù)大于epochs,網(wǎng)絡(luò)的性能函數(shù)值小于goal或者訓(xùn)練時間超過了time秒,網(wǎng)絡(luò)的訓(xùn)練都將停止;參數(shù)max_fail的值與初期終止技術(shù)(網(wǎng)絡(luò)泛化)有關(guān)。1.2動能項的加入動量梯度下降算法是一種批處理的前饋神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法,它不僅考慮誤差在梯度上的作用,而且考慮在誤差曲面上變化趨勢的影響。由于引入了一個動量項(相當(dāng)于一個阻尼項),有效地避免了局部最小問題在網(wǎng)絡(luò)訓(xùn)練中的出現(xiàn)。所謂動量項的加入就是指在網(wǎng)絡(luò)每次的權(quán)值和閥值改變量中加入前一次的改變量,第k次循環(huán)中的權(quán)值和閥值改變量可以表示為:其中,gω(k)、gb(k)分別表示當(dāng)前性能函數(shù)對權(quán)值和閥值的梯度;αk是學(xué)習(xí)率;mc是動量系數(shù)。mc的值在0到1之間,當(dāng)mc為0時,權(quán)值和閥值的改變量就由此時計算出的負梯度來確定;當(dāng)mc為1時,權(quán)值和閥值的改變量就等于它們前一時刻的改變量。而且如果在某個循環(huán)內(nèi),網(wǎng)絡(luò)的性能函數(shù)值超過了參數(shù)max_perf_inc的值,mc的值將自動設(shè)置為0。函數(shù)traingdm的使用類似于函數(shù)traingd,只是它有兩個特殊的訓(xùn)練參數(shù),mc和max_perf_inc。1.3特性計算方法的實現(xiàn)在負梯度算法中,學(xué)習(xí)率是一個固定不變的常數(shù),而且它的值將直接影響到網(wǎng)絡(luò)的訓(xùn)練性能。如果選擇的太大,會降低網(wǎng)絡(luò)的穩(wěn)定性;如果選擇的過小,會導(dǎo)致過長的訓(xùn)練時間。如果學(xué)習(xí)率在訓(xùn)練的過程中得到適當(dāng)?shù)淖兓?又使得它的值不會過大,就可以加快網(wǎng)絡(luò)的訓(xùn)練速度,而且確保網(wǎng)絡(luò)的穩(wěn)定性。該算法首先計算出網(wǎng)絡(luò)的輸出誤差,然后在每次訓(xùn)練結(jié)束后,利用此時的學(xué)習(xí)率計算出網(wǎng)絡(luò)的權(quán)值和閥值,并且計算出網(wǎng)絡(luò)此時的輸出誤差。如果此時的輸出誤差與前一時刻的輸出誤差的比值大于預(yù)先定義的參數(shù)max_perf_inc,那么就減少學(xué)習(xí)率(通過乘以系數(shù)lr_dec來實現(xiàn)),并采用新的權(quán)值和閥值,反之,就增加學(xué)習(xí)率(通過乘以系數(shù)lr_inc來實現(xiàn))。再重新計算網(wǎng)絡(luò)的權(quán)值和閥值以及輸出誤差,直到前后輸出誤差的比值小于參數(shù)max_perf_inc為止。訓(xùn)練函數(shù)traingda的調(diào)用和函數(shù)traingd相同,只是它又增加了3個訓(xùn)練參數(shù)max_perf_inc、lr_dec和lr_inc。1.4網(wǎng)絡(luò)性能函數(shù)的trad-pc多層的BP神經(jīng)網(wǎng)絡(luò)常常使用S形傳遞函數(shù),S函數(shù)的特點是可以把無限的輸入映射到有限的輸出,而且當(dāng)輸入很大或很小的時候,函數(shù)的斜率接近于0。這使得在訓(xùn)練具有S形神經(jīng)元的多層BP網(wǎng)絡(luò)時,計算出的梯度會出現(xiàn)很小的情況,這時網(wǎng)絡(luò)的權(quán)值和閥值的改變量也會很小,從而影響了網(wǎng)絡(luò)的訓(xùn)練速度。有彈性的BP算法的原理是消除梯度模值對網(wǎng)絡(luò)訓(xùn)練帶來的影響。在該算法中,梯度的符號決定了權(quán)值和閥值的變化方向,梯度的模值對權(quán)值和閥值的變化不起作用,而是通過單獨的參數(shù)來更新網(wǎng)絡(luò)的權(quán)值和閥值。當(dāng)網(wǎng)絡(luò)性能函數(shù)對某權(quán)值的微分在連續(xù)的兩個訓(xùn)練周期內(nèi)具有相同的符號時,該權(quán)值的改變量將通過參數(shù)delt_inc得到增加,反之就通過參數(shù)delt_dec來減少。函數(shù)trainrp的參數(shù)包括e-pochs、show、goal、time、min_grad、max_fail、delt_inc、delt_dec、delta0和deltamax,其中后兩個參數(shù)是初始步幅和最大步幅。函數(shù)trainrp不需要存儲網(wǎng)絡(luò)權(quán)值和閥值的改變量,所以它對內(nèi)存的需求量也比較小。2數(shù)字優(yōu)化培訓(xùn)算法2.1t水體模型算法標(biāo)準(zhǔn)的負梯度算法是沿網(wǎng)絡(luò)性能函數(shù)的負梯度方向調(diào)整權(quán)值和閥值,雖然這是減低網(wǎng)絡(luò)性能函數(shù)值的最快方法,但是它并不是網(wǎng)絡(luò)收斂的最快算法。在共軛梯度算法中,沿著共軛方向進行行搜索,收斂速度將比一般的梯度下降法要快得多。下面分別介紹4種共軛梯度算法:(1)Fletcher-Reeves算法(traincgf)所有共軛梯度算法的搜索方向是從最陡下降方向(梯度的負方向)開始搜索:然后利用行搜索沿著當(dāng)前搜索方向決定權(quán)值和閥值(x):其中,Pk為搜索方向,參數(shù)αk用來減少搜索方向的梯度。接著決定下一行搜索方向與以前的搜索方向是共軛的。決定行搜索方向的一般方法是把新的最陡下降方向gk與以前的搜索方向相結(jié)合:其中βk是梯度變換參數(shù),可以由下式求出:函數(shù)traincgf的訓(xùn)練參數(shù)包括epochs、show、goal、time、min_grad、max_fail、srchFcn、scal_tol、alpha、beta、delta、gama、low_lim、up_lim、maxstep、minstep和bmax,其中參數(shù)srchFcn表示線性搜索函數(shù),它的缺省值是srchcha,其選項還有srchgol、srchbre、srchhyb和srchbac。(2)Polak-Rbiere算法(traincgp)Polak-Rbiere算法的內(nèi)容如下:函數(shù)traincgp的訓(xùn)練參數(shù)與traincgf相同,其中參數(shù)srchFcn為缺省值srchcha。(3)Powell-Beale算法(traincgb)在共軛梯度算法中,網(wǎng)絡(luò)權(quán)值和閥值的調(diào)整方向只要周期性地回到負梯度方向上去,一般當(dāng)網(wǎng)絡(luò)的訓(xùn)練周期等于網(wǎng)絡(luò)權(quán)值和閥值的數(shù)目時會發(fā)生這種情況。而在Powell-Beale算法中,通過判斷前后梯度的正交性決定權(quán)值和閥值的調(diào)整方向是否回到負梯度方向上去,判斷的公式如下:對于某些問題,該方法的訓(xùn)練效果要比Polak-Rbiere算法的效果略好些,但需要的內(nèi)存稍大些。(4)比例共軛梯度算法(trainscg)前面討論的共軛梯度算法需要在每個訓(xùn)練周期中線性地搜索網(wǎng)絡(luò)的調(diào)整方向,這種線性的搜索方式在每次的搜索中都要多次對所有樣本進行計算,這樣就耗費了大量的時間。而比例共軛梯度算法就將模值信賴域算法與共軛梯度算法結(jié)合起來,有效地減少了上述搜索時間。函數(shù)trainscg的訓(xùn)練參數(shù)包括epochs、show、goal、time、min_grad、max_fail、sigma和lambda。參數(shù)sigma定義了權(quán)值二階導(dǎo)數(shù)的近似值,lambda控制了赫塞函數(shù)的不確定性,參數(shù)srchFcn為缺省值srchcha。2.2在雙梯度梯度范圍內(nèi)更新赫塞矩陣Newton算法也是一種快速的訓(xùn)練方法,它的基本公式為:其中,xk表示第k次循環(huán)時的權(quán)值;gk表示當(dāng)前的梯度;Ak表示第k次循環(huán)時的赫塞矩陣。Newton算法的訓(xùn)練速度比共軛梯度算法還要快,但是由于它要計算性能函數(shù)的二階導(dǎo)數(shù),所以計算量太大。Quasi-Newton算法是以Newton算法為基礎(chǔ),通過計算關(guān)于梯度的函數(shù)來更新赫塞矩陣,從而避免了大量的微分計算。更新公式為:其中,M是赫塞矩陣的近似值;X為網(wǎng)絡(luò)的權(quán)值和閥值;g為梯度;k為訓(xùn)練次數(shù)。函數(shù)trainbgf的訓(xùn)練參數(shù)與traincgf相同,其中參數(shù)srchFcn為缺省值srchcha。盡管BFGS算法的收斂速度很快,由于要存儲每個近似赫塞矩陣的值,所以它的計算量和內(nèi)存需求量遠比共軛梯度算法大,因此對于大多數(shù)的網(wǎng)絡(luò)選擇共軛梯度算法比較合適。(2)OSS(OneStepSecant)算法(trainoss)OSS算法減少了BFGS算法的計算量和內(nèi)存需求量,并且具有較快的收斂速度。OSS算法采用的方法是只存儲部分赫塞矩陣,并不存儲每個訓(xùn)練周期中的赫塞矩陣。函數(shù)trainoss的訓(xùn)練參數(shù)與traincgf相同,其中參數(shù)srchFcn為缺省值srchcha。OSS算法的計算量和內(nèi)存需求量都比BFGS算法少,但是仍比共軛梯度算法多,所以它是一種介于BFGS算法和共軛算法之間的快速學(xué)習(xí)算法。2.3基于變分原理的變類似于Quasi-Newton算法,Levenberg-Marquardt算法也是避免了直接計算赫塞矩陣,從而減少了訓(xùn)練匯總的計算量和內(nèi)存需求量。由于BP神經(jīng)網(wǎng)絡(luò)的性能函數(shù)是網(wǎng)絡(luò)的均方誤差,所以赫塞矩陣可以由雅可比矩陣近似得到,如下式所示。這時梯度的計算公式為其中,J是雅可比矩陣,它的元素是網(wǎng)絡(luò)誤差對權(quán)值和閥值的一階導(dǎo)數(shù);e是網(wǎng)絡(luò)的誤差向量。在Levenberg-Marquardt算法中,網(wǎng)絡(luò)權(quán)值和閥值的調(diào)整公式為:當(dāng)標(biāo)量μ等于0時,該算法與Newton算法相同。當(dāng)μ增大時,梯度的遞減量減少。因此,當(dāng)網(wǎng)絡(luò)的誤差減少時,減少μ的值;當(dāng)網(wǎng)絡(luò)的誤差要增大時,增大μ的值,這樣就保證了網(wǎng)絡(luò)的性能函數(shù)值始終在減少。函數(shù)trainlm的訓(xùn)練參數(shù)包括epochs、show、goal、time、min_grad、max_fail、mu、mu_del、mu_inc、mu_max和mem_reduc。其中參數(shù)mu是標(biāo)量的初始值,參數(shù)mu_dec是標(biāo)量的遞減參數(shù),參數(shù)mu_inc是標(biāo)量μ的遞增系數(shù)。如果μ大于參數(shù)mu_max的值,那么網(wǎng)絡(luò)的訓(xùn)練結(jié)束。參數(shù)mem_reduc用于控制算法所需的內(nèi)存量。2.4設(shè)計兩個子矩陣Levenberg-Marquardt算法的最大缺點就是占用的內(nèi)存量太大,因為要存儲雅可比矩陣的值。理論上已經(jīng)證明,在計算赫塞矩陣的近似值時,不一定要計算整個雅可比矩陣的值。例如可以把雅可比矩陣分成兩個子矩陣:所以我們可以計算出位數(shù)較少的子矩陣,再通過求和得到赫塞矩陣的近似值。在函數(shù)trainlm的訓(xùn)練參數(shù)中,參數(shù)mem_reduc定義了需要計算的雅可比矩陣的子矩陣的大小。當(dāng)它等于1時,需要計算完整的雅可比矩陣;當(dāng)它等于2時,只需計算半個雅可比矩陣,這樣就可以減少一半的內(nèi)存需求量。減少內(nèi)存的Levenberg-Marquardt算法的缺點是會帶來較大的計算量,所以如果在內(nèi)存充足的情況下,還是使用Levenberg-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論