国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

BP神經網絡算法改進

2017-09-13 04:51黃尚晴趙志勇孫立波
科技創(chuàng)新導報 2017年20期
關鍵詞:BP神經網絡

黃尚晴+趙志勇+孫立波

摘 要:BP神經網絡因其理論成熟及泛化能力強而被廣泛的應用在不同的領域。盡管如此,其仍然存在著兩大缺陷:其一,收斂速度慢;其二,容易陷入局部極小。特別是在解決大樣本問題時,BP算法的缺陷更加突出。本文首先從樣本訓練方法上入手對BP算法進行改進從而保證收斂速度,提出一種交叉批量梯度下降算法(Cross - batch gradient descent algorithm,以下簡稱CBGD)。將改進后的算法用于手寫數(shù)字的識別,相比于普通的BP算法在收斂速度及測試準確率上都有明顯的提高。

關鍵詞:BP神經網絡 算法改進 交叉梯度下降 手寫體數(shù)字識別

中圖分類號:TP273 文獻標識碼:A 文章編號:1674-098X(2017)07(b)-0146-02

BP神經網絡中的線性神經網絡的基礎上演化而來的,其一般包含輸入層、隱含層和輸出層。BP學習算法是Rumelhrat和Hintond等學者于1986年提出[1],理論上包含一層隱含層神經元的BP網絡可以逼近任意的函數(shù)[2],而在實際應用中,BP神經網絡的層數(shù)通常是大于或等于3,尤其對于復雜的問題,網絡的層數(shù)都會滿足這個條件。自從該算法后期研究主要分為兩大類:其一就是通過變固定的學習速率為變化的學習速率、增加動量因子等方法對迭代算法本身作出修改;另一方面,就是通過啟發(fā)式算法來實現(xiàn)對BP算法收斂性的優(yōu)化,其中包含粒子群算法和蟻群算法等。這些改進雖然對BP算法有了很不錯的改善,但是都很少涉及到通過改進訓練樣本方法來改善收斂性的,只有向國全等在[3]中提到通過對樣本訓練方法的改進來提升BP神經網絡的收斂能力,然而由于其改進限于當時的硬件以及算法本身對樣本數(shù)據(jù)的過多重復使用,導致對收斂速度沒有很大得到提高。

1 BP神經網絡介紹

BP算法具有自適應誤差反向學習能力,其將輸入信號通過輸入層傳輸?shù)捷敵鰧?,再通過誤差函數(shù)反向修正各層神經元的權重及偏置。僅看輸入輸,BP神經網絡相當于映射,不同的網絡代表不同的映射機制。假設神經網絡的輸入特征向量為X=(x1,x2,…,xi,…,xl)T,隱含層輸出為Y=(y1,y2,…,yj,…,ym)T,輸出層的輸出為Z=(z1,z2,…,zk,…,zn)T,其中l(wèi),m和n分別是輸入層、隱含層和輸出層神經元的個數(shù)。

令隱含層第j個神經元到輸入層第i個神經元的權值為wji,輸出層第k個神經元到隱含層第k個神經元你的權重為vkj,此外,設隱含層第j個神經元的偏置為θ1,其對應的激活函數(shù)為f1(x),而輸出層第k個神經元的偏置為θ2,其對應的激活函數(shù)為f2(x),由此可得出隱含層和輸出層的表達式為。為了便于本文的討論,選擇隱含層的激活函數(shù)為S型函數(shù)f1(x)=1/(1+exp(-x));選擇輸出層的激活函數(shù)為f2(x)=x。若該神經網絡的期望輸出為T={t1,t2,…,ti,…,tk},則針對每個訓練樣本選擇如下誤差函數(shù):,其中,由于BP網絡對系統(tǒng)的仿真不可能一步到位,所以涉及到一個調整的過程,主要就是通過調整BP網絡的權值和偏置來實現(xiàn)。根據(jù)式E可知,誤差函數(shù)值要盡量趨近于0也就是取最小值。所以BP神經網絡訓練的過程就是為以E為目標函數(shù)的優(yōu)化問題。

為了找到最優(yōu)解,給出梯度下降算法[4]:,此處給出一層BP網絡的權值和偏置的迭代公式,根據(jù)設定的網絡層數(shù)也可以求出其他參數(shù)。根據(jù)梯度下降可得出針對每個樣本訓練完后權值和偏置調整的步長。

2 樣本訓練方法的改進

在實際應用中,往往會涉及到多個樣本,所以使得所有訓練樣本的誤差函數(shù)和最小才能實現(xiàn)對目標系統(tǒng)更加逼近的仿真。為實現(xiàn)這一目標,目前主流的研究思路主要包含三種,一種是批量梯度下降法、隨機梯度下降算法和隨機批量梯度下降算法。這些算法雖然都對BP算法的收斂性有所改善,但是都沒有考慮樣本之間的重復性與其內在的聯(lián)系所造成的訓練過程的繁瑣。

綜合以上考慮,本文作以下改進。對于給定輸入樣本為X=(X1,X2,…,XN),其中N為輸入樣本個數(shù),對應的期望輸出為T=(T1,T2,…,TN),而相應的BP網絡輸出為Z=(Z1,Z2,…,ZN);首先將整個輸入樣本集X分成C1,C2,…,Cc組,但需要滿足以下條件:,。根據(jù)上述條件,可知任意相鄰兩個樣本的分組之間的交集個數(shù)可變。很顯然,各個樣本組交集個數(shù)越多,訓練量越大,從而增大樣本的訓練時間;但是如果另一方面來看,當樣本組Cp和Cq的交集越多時,訓練樣本組Cp得到的最優(yōu)權值在很大程度上對樣本組Cq來說也是最優(yōu)的,所以整體訓練下來將會減少訓練樣本的時間。因此,目的是找到一個較好的分組,用于訓練整個樣本。因此給出如下選擇相鄰樣本組樣本交集的方案:,,1≤。min_batch為相鄰的訓練樣本組數(shù)量的最小值,一般人為給出。

不失一般性,假設采集的數(shù)據(jù)樣本是相互獨立的。下面給出確定樣本集分組數(shù)量c的一種方案:,其中的[·]表示對方括號內的值進行取整。為了提高神經網絡檢測的可靠性,需要同時對樣本進行不同數(shù)量的多次分組,并分別對其進行訓練,也就是最后訓練好的權值和偏置有多組,再分別對所需要仿真的系統(tǒng)進行檢測,從多組網絡中選擇最好的網絡作為測試網絡。

3 改進算法在手寫數(shù)字識別上的應用

本文將利用MNIST手寫數(shù)據(jù)庫對算法進行試驗,目前已經有很多學者利用MNIST完成了自己的算法的研究[4]。數(shù)據(jù)集中共包含手寫體數(shù)字0到9的訓練數(shù)據(jù)和測試數(shù)據(jù),本文選擇訓練樣本集中50000個樣本用于訓練,并選擇測試樣本集中的10000個樣本用于測試。由于其中每個樣本數(shù)據(jù)是32×32的矩陣,其要轉化成784維特征向量,并根據(jù)上一節(jié)中提到的樣本分組方案。選擇min_batch=20,s=5,計算出c=[50000/15]+1=3334。對樣本編號成X1, X2,…,X50000,可將這50000個樣本分為以下幾組:,,…,。endprint

除了最后一個分組只包含5個樣本外,其他每個分組都包含20個樣本,而且相鄰兩個樣本組中都具有5個相同的樣本。根據(jù)圖1所提到的樣本訓練方法可知,首先訓練樣本集C1,然后將訓練好的權值和偏置保留,并用于訓練接下來的樣本集C2,并以此類推。本算法用Python實現(xiàn),只是分兩種訓練方式:一種是將50000個訓練樣本均勻的分成2500個組,然后依次進行訓練;另外就是用前文介紹的方法來訓練。最后得到對比結果如下:

圖1給出迭代第78次到298次的結果,可以清晰的看出CGDB在收斂效果上的優(yōu)越性。因為樣本訓練出來的效果僅僅只能反應模型對訓練樣本的表達能力,但是不能說明模型對整個分類問題能力。為了驗證模型的泛化能力,用上述訓練好的模型,去訓練數(shù)據(jù)集中10000個測試集樣本。得出最終的測試結果如圖2所示。從圖2的變化趨勢來看,從測試結果來看,通過使用CBGD方法進行樣本訓練,在收斂速度上明顯比普通的BGD方法要快,而且在收斂效果上,前者訓練誤差一直比后者的訓練誤差小,可知相比較而言,本文的方法在樣本的表達上效果更佳。再通過樣本測試結果來看,CBGD也比普通的CBGD表現(xiàn)得更好。

參考文獻

[1] Williams D,Hinton G E.Learning representations by back-propagating errors[J]. Nature,1986,323:533-536.

[2] White H.Connectionist nonparametric regression:Multilayer feedforward networks can learn arbitrary mappings[J].Neural Networks,1990,3(90):535-549.

[3] composition using ACO-BP neural network[J]. Thermochimica Acta,2007,454(1):64-68.

[4] 向國全,董道珍.BP模型中的激勵函數(shù)和改進的網絡訓練法[J].計算機研究與發(fā)展,1997(2):113-117.

[5] 李望晨.BP神經網絡改進及其在手寫數(shù)字識別中的應用[D].哈爾濱工業(yè)大學,2006.endprint

猜你喜歡
BP神經網絡
基于神經網絡的北京市房價預測研究
提高BP神經網絡學習速率的算法研究
从江县| 山东省| 陆良县| 东台市| 新民市| 瓦房店市| 宣武区| 巴南区| 宜兴市| 永靖县| 霍山县| 伊宁县| 曲沃县| 靖宇县| 高碑店市| 丹东市| 朝阳市| 土默特左旗| 文山县| 金塔县| 连南| 锦屏县| 峨眉山市| 桂林市| 大悟县| 巩义市| 平顺县| 高州市| 启东市| 定边县| 婺源县| 吉隆县| 金门县| 荥经县| 东光县| 枣庄市| 县级市| 昆明市| 淮阳县| 繁峙县| 荥经县|