朱振國(guó), 田松祿
(重慶交通大學(xué) 信息科學(xué)與工程學(xué)院, 重慶 400074)
BP神經(jīng)網(wǎng)絡(luò)(Back-Propagation Neural Network),是由Rumelhart和McCelland等科學(xué)家提出, 利用輸入信號(hào)前向傳播、誤差反饋信號(hào)反向傳播和梯度下降的原理, 并通過(guò)鏈?zhǔn)角髮?dǎo)法則, 獲取權(quán)值更新變化大小的依據(jù), 使權(quán)值可以按照一定的大小進(jìn)行更新, 達(dá)到減小誤差、得到理想輸出的一種算法. 常用于預(yù)測(cè)、回歸問(wèn)題的判別, 是目前應(yīng)用最為廣泛的神經(jīng)網(wǎng)絡(luò)之一[1].
但傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò), 比如: 學(xué)習(xí)率為固定值, 學(xué)習(xí)率設(shè)置偏大, 容易導(dǎo)致學(xué)習(xí)震蕩甚至發(fā)散, 而無(wú)法收斂;學(xué)習(xí)率設(shè)置偏小, 容易導(dǎo)致學(xué)習(xí)速率慢, 收斂過(guò)于緩慢;對(duì)于這種由于學(xué)習(xí)率人為設(shè)定不合理的問(wèn)題, 不能較好地建立輸入輸出的非線性映射關(guān)系, 而導(dǎo)致BP神經(jīng)網(wǎng)絡(luò)難以推廣應(yīng)用[2].
針對(duì)BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率的人為設(shè)定不合理的問(wèn)題, 本文提出基于權(quán)值變化的自適應(yīng)學(xué)習(xí)率模型, 改進(jìn)了傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的固定學(xué)習(xí)率設(shè)置不合理的弊端; 并將正態(tài)分布結(jié)合神經(jīng)網(wǎng)絡(luò)的誤差函數(shù), 加快收斂速度;利用梯度上升法, 以保證正態(tài)分布的合理應(yīng)用.
對(duì)于三層 BP神經(jīng)網(wǎng)絡(luò), 輸入X1、X2、X3…Xn, 輸出為Y, 隱含層輸入權(quán)值為輸出層權(quán)值為為閾值, L為層數(shù), ij表示前層第i個(gè)的和后層第j個(gè)神經(jīng)元表示激活函數(shù)[3]. 隱層神經(jīng)元凈輸入值為:
f(·)的導(dǎo)數(shù)為:
期望輸出用d表示, 實(shí)際輸出為Y; 誤差函數(shù)err的表達(dá)式為[4]:
式(4)可以看出, 存在理想極小值點(diǎn)err=0, 但實(shí)際很難達(dá)到該點(diǎn), 通常是根據(jù)誤差反向傳播與梯度下降法[5], 多次迭代更新權(quán)值, 使實(shí)際輸出Y無(wú)限逼近期望輸出d, 達(dá)到誤差err逼近0的目的[6–9].
引入正態(tài)分布模型到BP神經(jīng)網(wǎng)絡(luò)中, 將誤差err作為正態(tài)分布函數(shù)的自變量, 令正態(tài)分布模型的期望u為0, 正態(tài)分布函數(shù)值取得最大值, 誤差err趨近于u, 如圖1.
圖1 正態(tài)分布函數(shù)圖
當(dāng)期望u=0時(shí), 正態(tài)分布函數(shù):
網(wǎng)絡(luò)訓(xùn)練目標(biāo)是取得正態(tài)分布函數(shù)最大值, 目標(biāo)達(dá)成, 則網(wǎng)絡(luò)誤差為0, 權(quán)值更新達(dá)到最佳狀態(tài).
本文借鑒用于取得局部最小值的梯度下降法(要求誤差函數(shù)為凹函數(shù))思想, 反向推理, 采用梯度上升法(要求誤差函數(shù)為凸函數(shù))尋找正態(tài)分布的最大值.
以圖1和式(5)為例, 解釋梯度上升法能取得局部最大值的原理:
提出基于權(quán)值變化的自適應(yīng)學(xué)習(xí)率定義為:
其中t是BP神經(jīng)網(wǎng)絡(luò)的權(quán)值變化:
β(t)函數(shù)曲線圖為圖2.
圖2 自適應(yīng)學(xué)習(xí)率的曲線圖
圖2中n為β的傾斜參數(shù). 由式(7)、式(8)及圖2可以得出結(jié)論, 當(dāng)訓(xùn)練接近理想時(shí), 權(quán)值的變化t趨于極小的值, 此時(shí)學(xué)習(xí)率β也是一個(gè)極小的值, 不利于訓(xùn)練的進(jìn)行, 于是用擴(kuò)大t的值, 調(diào)整β函數(shù)對(duì)t的敏感程度.
圖3 二次函數(shù)及其切線
對(duì)于現(xiàn)有固定學(xué)習(xí)率的神經(jīng)網(wǎng)絡(luò), 學(xué)習(xí)率偏大, 容易產(chǎn)生震蕩; 學(xué)習(xí)率偏小, 收斂速度慢, 網(wǎng)絡(luò)擬合效果差, 不利于收斂; 本文提出的自適應(yīng)學(xué)習(xí)率β, 根據(jù)權(quán)值變化自適應(yīng)調(diào)整大小, 當(dāng)權(quán)值變化大時(shí), 此時(shí)學(xué)習(xí)率大;當(dāng)網(wǎng)絡(luò)權(quán)值變化小, 學(xué)習(xí)率小(如圖2); 在即將達(dá)到目標(biāo)輸出時(shí), 誤差接近極小值點(diǎn), 誤差曲面的梯度變化小,即此時(shí)權(quán)值變化t較小, 從而學(xué)習(xí)率較小, 更有利于得到網(wǎng)絡(luò)收斂, 對(duì)提高誤差的精度, 具有顯著的作用.
此外, 在每?jī)蓚€(gè)神經(jīng)元之間, 其連接權(quán)值都有對(duì)應(yīng)的學(xué)習(xí)率; 訓(xùn)練過(guò)程中, 每?jī)蓚€(gè)神經(jīng)元的連接權(quán)值時(shí)刻在變化, 其對(duì)應(yīng)的學(xué)習(xí)率也變化, 所以訓(xùn)練過(guò)程中, 產(chǎn)生數(shù)以萬(wàn)計(jì)的學(xué)習(xí)率, 以匹配權(quán)值的變化, 適應(yīng)網(wǎng)絡(luò)更新[10].
針對(duì)現(xiàn)有的幾種典型自適應(yīng)學(xué)習(xí)率, 與本文的自適應(yīng)學(xué)習(xí)率作對(duì)比:
1) 自適應(yīng)全參數(shù)學(xué)習(xí)率Adagrad[11–13]是使學(xué)習(xí)率參數(shù)自適應(yīng)變化, 把梯度的平方根作為學(xué)習(xí)率的分母,訓(xùn)練前期梯度小, 則學(xué)習(xí)率大, 訓(xùn)練后期, 梯度疊加增大, 學(xué)習(xí)率小; 由于累加的梯度平方根和越來(lái)越大, 學(xué)習(xí)率會(huì)逐漸變小, 最終趨于無(wú)限小, 嚴(yán)重影響網(wǎng)絡(luò)收斂速度.
2) 牛頓法, 用Hessian矩陣替代學(xué)習(xí)率, 并結(jié)合梯度下降法, 雖然可得最優(yōu)解, 但要存儲(chǔ)和計(jì)算Hessian矩陣, 增大計(jì)算復(fù)雜度[14,15].
3) 本文提出基于權(quán)值變化的自適應(yīng)學(xué)習(xí)率, 利用參數(shù)10n調(diào)整學(xué)習(xí)率對(duì)權(quán)值變化的敏感度, 以至于不存在如Adagrad算法的學(xué)習(xí)率趨于無(wú)限小的弊端; 本文的自適應(yīng)學(xué)習(xí)率, 只需把權(quán)值更新過(guò)程中權(quán)值的導(dǎo)數(shù)用于學(xué)習(xí)率中, 計(jì)算的復(fù)雜度遠(yuǎn)低于牛頓法[16,17].
采用誤差反向傳播方式更新權(quán)值, 使誤差e更快的取得極小值.
由式(3)~(式6)、式(8)得誤差偏導(dǎo)為:
對(duì)于基于自適應(yīng)學(xué)習(xí)率的網(wǎng)絡(luò)權(quán)值更新, 依梯度下降法得權(quán)值更新為:
正態(tài)分布模型的權(quán)值偏導(dǎo)為:
由式(7)、式(9)、式(11)可得:
式(12)可以看出, 網(wǎng)絡(luò)訓(xùn)練后期, 誤差err趨于極小的值, 此時(shí)權(quán)值變化不明顯, 收斂速度慢; 為提高收斂速度, 提出解決方法為:
利用式(13)左邊的err代替原來(lái)的誤差err, 其中sgn(err)為符號(hào)函數(shù), 定義為:
對(duì)于正態(tài)分布模型, 依梯度上升法得權(quán)值更新:
其中Wn為W更新后的權(quán)值.
對(duì)于傳統(tǒng)模型, 依梯度下降法得權(quán)值更新為:
正態(tài)分布模型與自適應(yīng)學(xué)習(xí)率結(jié)合, 依梯度上升法得權(quán)值更新為:
結(jié)合式(7)、式(13)、式(14)、式(17)得權(quán)值更新為:
式(18)為結(jié)合梯度上升、正態(tài)分布模型、自適應(yīng)學(xué)習(xí)率的權(quán)值更新方式, 與傳統(tǒng)權(quán)值更新方式(式(16))相比, 改進(jìn)后權(quán)值變化系數(shù)為:
采用經(jīng)典XOR問(wèn)題, 驗(yàn)證改進(jìn)BP網(wǎng)絡(luò); 標(biāo)準(zhǔn)XOR問(wèn)題與驗(yàn)證XOR問(wèn)題如表1.
表1 XOR問(wèn)題
先用標(biāo)準(zhǔn)XOR問(wèn)題對(duì)神經(jīng)網(wǎng)絡(luò)訓(xùn)練, 再用接近標(biāo)準(zhǔn)XOR輸入對(duì)神經(jīng)網(wǎng)絡(luò)驗(yàn)證, 比較驗(yàn)證輸出與標(biāo)準(zhǔn)輸出, 判斷優(yōu)劣.
設(shè)定學(xué)習(xí)率: 0.5, 誤差限默認(rèn): 0.000 001, 迭代次數(shù)默認(rèn)10 000次, 得基于正態(tài)分布模型的BP網(wǎng)絡(luò)和傳統(tǒng)BP網(wǎng)絡(luò)誤差曲線, 如圖4.
圖4 正態(tài)分布模型與傳統(tǒng)模型的誤差對(duì)比
XOR異或問(wèn)題的驗(yàn)證輸出為表2.
表2 驗(yàn)證輸出Y
從圖4、表2可以看出, 基于正態(tài)分布模型改進(jìn)后的網(wǎng)絡(luò), 其誤差是傳統(tǒng)模型的1/25, 誤差明顯降低, 且驗(yàn)證結(jié)果更接近于標(biāo)準(zhǔn)輸出.
分別比較不同學(xué)習(xí)率和不同訓(xùn)練次數(shù)之間的誤差,如表3.
從大量實(shí)驗(yàn)可以看出, 基于正態(tài)分布模型的BP網(wǎng)絡(luò)與傳統(tǒng)BP網(wǎng)絡(luò)模型相比, 具有更小的誤差或更快的迭代速度. (帶*為改進(jìn)模型實(shí)驗(yàn)誤差, 帶**為傳統(tǒng)模型實(shí)驗(yàn)誤差).
表3 不同學(xué)習(xí)率與訓(xùn)練次數(shù)的誤差對(duì)比
自適應(yīng)學(xué)習(xí)率的傾斜參數(shù)n設(shè)為3. 以權(quán)值變化作為自適應(yīng)學(xué)習(xí)率變化依據(jù), 采用梯度下降法更新權(quán)值.得隱含層自適應(yīng)學(xué)習(xí)率變化曲線, 圖5所示.
圖5 自適應(yīng)性學(xué)習(xí)率的變化
可以看出, 學(xué)習(xí)率是隨權(quán)值的變化而自適應(yīng)變化,每一輪迭代后, 權(quán)值變化不同, 導(dǎo)致學(xué)習(xí)率不同; 訓(xùn)練后期, 權(quán)值變化減小, 學(xué)習(xí)率減小, 自適應(yīng)學(xué)習(xí)率相應(yīng)減小.
對(duì)于固定學(xué)習(xí)率, 采用自適應(yīng)學(xué)習(xí)率的算術(shù)平均值: 0.4567, 將改進(jìn)型自適應(yīng)學(xué)習(xí)率與固定學(xué)習(xí)率訓(xùn)練結(jié)果作對(duì)比, 如圖6.
XOR異或問(wèn)題的驗(yàn)證輸出為表4.
可以看出, 自適應(yīng)學(xué)習(xí)率模型的誤差為固定學(xué)習(xí)率模型的1/2.2, 并且驗(yàn)證結(jié)果更接近標(biāo)準(zhǔn)XOR異或問(wèn)題.
傾斜系數(shù)為3, 可得自適應(yīng)性學(xué)習(xí)率的變化與訓(xùn)練次數(shù)之間的關(guān)系為圖7.
固定學(xué)習(xí)率采用自適應(yīng)學(xué)習(xí)率的算術(shù)平均值:0.1459, 與帶自適應(yīng)學(xué)習(xí)率和正態(tài)分布模型的BP神經(jīng)網(wǎng)絡(luò)對(duì)比, 如圖8.
表4 驗(yàn)證輸出Y
圖7 自適應(yīng)學(xué)習(xí)率的變化
圖8 誤差對(duì)比
XOR異或問(wèn)題的驗(yàn)證輸出為表5.
表5 驗(yàn)證輸出Y
從圖8、 表5可以看出, 改進(jìn)BP神經(jīng)網(wǎng)絡(luò)的誤差是傳統(tǒng)模型的1/55, 改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)性能明顯優(yōu)于傳統(tǒng)模型.
本文提出基于權(quán)值變化的自適應(yīng)學(xué)習(xí)率、結(jié)合梯度上升法的正態(tài)分布模型, 提升BP神經(jīng)網(wǎng)絡(luò)的運(yùn)算效率; 理論分析了提高收斂速度、降低誤差的原理, 通過(guò)仿真結(jié)果表明, 改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)在提高收斂速度、降低誤差方面具有更好的成效.