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