賀 揚(yáng), 成凌飛2, 張培玲2, 李 艷
(1.河南理工大學(xué) 電氣工程與自動(dòng)化學(xué)院,河南 焦作 454000; 2.河南理工大學(xué) 物理與電子信息學(xué)院,河南 焦作 454000)
深層神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)以其高效的學(xué)習(xí)和分類能力被廣泛地應(yīng)用于目標(biāo)識(shí)別、圖像識(shí)別、語音識(shí)別、手寫數(shù)據(jù)識(shí)別、信息檢索、自然語言處理以及其他的領(lǐng)域[1-3]。深層神經(jīng)網(wǎng)絡(luò)一般由不少于3層的多層神經(jīng)網(wǎng)絡(luò)(Neural Network,NN)組成,每層網(wǎng)絡(luò)都包含大量的神經(jīng)元,這就決定了DNN擁有大量的參數(shù)需要表示。通常,線性部分的參數(shù)可由輸入數(shù)據(jù)學(xué)習(xí)得到,而網(wǎng)絡(luò)的非線性部分一般預(yù)先設(shè)定激活函數(shù)。一個(gè)足夠大的神經(jīng)網(wǎng)絡(luò)通過這些非線性函數(shù)可以逼近任意的復(fù)雜函數(shù),但在有限的網(wǎng)絡(luò)中,不同非線性函數(shù)的選擇則會(huì)影響網(wǎng)絡(luò)學(xué)習(xí)能力和表達(dá)能力的強(qiáng)弱。
最近幾年,很多DNN激活函數(shù)被提出,其中最引人矚目的是修正線性單元(Rectified Linear Unit,ReLU)[4]。ReLU具有稀疏激活、無需預(yù)訓(xùn)練和學(xué)習(xí)周期短等優(yōu)點(diǎn)。然而ReLU雖有著諸多優(yōu)點(diǎn),且其出色的性能也得到了廣泛的認(rèn)可,但ReLU并非激活函數(shù)的終點(diǎn)。幾種基于ReLU的激活函數(shù)相繼被提出,如Leaky ReLU和Parametric ReLU在ReLU的負(fù)軸添加一個(gè)正斜率的函數(shù)[5-6],對(duì)Leaky ReLU進(jìn)行隨機(jī)正則化的Randomized Leaky ReLU[7],以及旨在解決ReLU偏置轉(zhuǎn)移問題的Exponential ReLU[8]和Parametric E-ReLU[9]。然而上述激活函數(shù)都只彌補(bǔ)了ReLU非零均值激活的不足之處,僅Parametric E-ReLU利用參數(shù)化的方法,使其正值和負(fù)值部分在原點(diǎn)處相切,改善了ReLU非零均值激活和在原點(diǎn)處不連續(xù)兩個(gè)缺陷,但是Parametric E-ReLU需要額外調(diào)節(jié)激活函數(shù)的參數(shù),更為遺憾的是,Parametric E-ReLU并未對(duì)正值激活值加以限制,當(dāng)ReLU激活一個(gè)極大的值時(shí),容易造成網(wǎng)絡(luò)的數(shù)字溢出,這對(duì)網(wǎng)絡(luò)的訓(xùn)練是很不利的。
本文提出了一種新的激活函數(shù)——Tanh ReLU,這個(gè)激活函數(shù)在ReLU激活函數(shù)的基礎(chǔ)上對(duì)其進(jìn)行優(yōu)化。針對(duì)ReLU存在非零均值激活的問題,Tanh ReLU添加了一個(gè)負(fù)值,而且Tanh ReLU的負(fù)值函數(shù)與正值函數(shù)在原點(diǎn)處相切,如此一來,其一階導(dǎo)數(shù)在原點(diǎn)處連續(xù);同時(shí),為激活函數(shù)添加了一個(gè)邊界[10]。
DNN由于其高度復(fù)雜的計(jì)算能力而受到關(guān)注,而DNN的計(jì)算單元是通過激活函數(shù)(即傳遞函數(shù),為網(wǎng)絡(luò)提供非線性表示)實(shí)現(xiàn)的,其可以使DNN訓(xùn)練快速、表達(dá)準(zhǔn)確。激活函數(shù)將網(wǎng)絡(luò)神經(jīng)元的輸入轉(zhuǎn)換為輸出信號(hào),決定了一個(gè)神經(jīng)元產(chǎn)生信號(hào)和接收信號(hào)的振幅強(qiáng)度,所以激活函數(shù)影響著整個(gè)NN的性能;除此之外,激活函數(shù)提供的非線性可根據(jù)逼近原理來設(shè)計(jì)接近函數(shù),這對(duì)NN來說也是至關(guān)重要的。
ReLU激活函數(shù)的提出大大提高了DNN的性能,然而ReLU沒有負(fù)值激活,所以其平均激活值大于零,神經(jīng)單元的非零均值激活作為偏置傳遞給了下一層神經(jīng)單元,如果這樣的神經(jīng)單元的影響不能相互抵消,學(xué)習(xí)的時(shí)候就會(huì)導(dǎo)致偏置轉(zhuǎn)移,然后傳遞到下一層。這樣的神經(jīng)單元越多,偏置轉(zhuǎn)移也就越多,從而引發(fā)振蕩,損害網(wǎng)絡(luò)的學(xué)習(xí);ReLU的正值激活可以產(chǎn)生很大的激活值,然而在DNN的訓(xùn)練階段,數(shù)字的穩(wěn)定性在很大程度上受激活函數(shù)輸出邊界的影響,這點(diǎn)如同物理計(jì)算機(jī)的數(shù)字表示。一個(gè)較大的邊界值引導(dǎo)神經(jīng)元產(chǎn)生更有效的傳播,但數(shù)字溢出的風(fēng)險(xiǎn)也隨之產(chǎn)生,這樣在訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)的時(shí)候就會(huì)引起網(wǎng)絡(luò)的不穩(wěn)定;而且ReLU在原點(diǎn)處是不連續(xù)的,而這種情況會(huì)引起梯度消失,損害網(wǎng)絡(luò)的反向傳播。
針對(duì)ReLU激活函數(shù)提出的Tanh ReLU激活函數(shù)由3個(gè)分段函數(shù)組成,其公式表達(dá)為
(1)
Tanh ReLU的提出是為了克服ReLU激活函數(shù)非零均值激活、原點(diǎn)處不連續(xù)以及產(chǎn)生極大激活值的3個(gè)缺點(diǎn)。Tanh ReLU激活函數(shù)及其導(dǎo)函數(shù)圖形如圖1所示。
圖1 Tanh ReLU激活函數(shù)及其導(dǎo)函數(shù)
① 為了減小偏置轉(zhuǎn)移對(duì)網(wǎng)絡(luò)學(xué)習(xí)的影響,Tanh ReLU增加了一個(gè)負(fù)值,使激活平均值更加接近于零值,在圖1中可以看出,Tanh ReLU既可以正值激活,也可以負(fù)值激活,使激活平均值接近于零值;同時(shí),零均值激活也可以保證網(wǎng)絡(luò)梯度靠近自然梯度的時(shí)候能夠具有更快的收斂速度。
② 與ReLU不同的是,Tanh ReLU在原點(diǎn)處是連續(xù)的,Tanh ReLU的梯度也不再為零,如圖1中所示,Tanh ReLU在原點(diǎn)處的導(dǎo)數(shù)值DF(X)為1且連續(xù),這就避免了網(wǎng)絡(luò)訓(xùn)練時(shí)在原點(diǎn)處陷入梯度消失的情況。
③ 針對(duì)ReLU在網(wǎng)絡(luò)的預(yù)訓(xùn)練期間較大激活值造成的數(shù)字溢出風(fēng)險(xiǎn),由此帶給網(wǎng)絡(luò)訓(xùn)練不穩(wěn)定的缺點(diǎn),在Tanh ReLU激活函數(shù)中增加了一個(gè)邊界值,如圖1所示,在本文中,邊界值A(chǔ)的取值為1。
通過MNIST手寫數(shù)據(jù)數(shù)據(jù)集來驗(yàn)證提出的激活函數(shù)。MNIST是一個(gè)廣泛用于測試機(jī)器學(xué)習(xí)算法基準(zhǔn)的數(shù)據(jù)集。MNIST作為圖像識(shí)別的常用數(shù)據(jù)集,它是由70000個(gè)28像素×28像素的手寫數(shù)據(jù)圖像組成的,其包括60000個(gè)訓(xùn)練圖像,10000個(gè)測試圖像。實(shí)驗(yàn)的目的是將數(shù)字圖像歸類到其正確的分類類別中。
為了檢驗(yàn)兩種激活函數(shù)(Act:ReLU & Tanh ReLU)的分類性能,分別利用兩種不同的激活函數(shù)建立DNN模型,并用于MNIST手寫數(shù)據(jù)集的分類測試,建立的DNN模型的結(jié)構(gòu)如圖2所示。實(shí)驗(yàn)中,由于主要是為了測試Tanh ReLU激活函數(shù)在DNN中的性能,所以在MNIST分類實(shí)驗(yàn)中只將DNN模型中的ReLU激活函數(shù)替換掉,保證DNN模型的其他部分沒有被改變。
圖2 DNN模型結(jié)構(gòu)圖
實(shí)驗(yàn)所建立的DNN模型結(jié)構(gòu)的詳細(xì)設(shè)置如表1所示。建立的DNN模型為5層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)包含一個(gè)輸入層,一個(gè)Softmax分類層和3個(gè)隱藏層。網(wǎng)絡(luò)采用全連接。網(wǎng)絡(luò)的自由參數(shù)包括權(quán)重值和偏置值,自由參數(shù)可通過訓(xùn)練學(xué)習(xí)得到。
表1 用于MNIST數(shù)據(jù)集分類測試的DNN模型結(jié)構(gòu)設(shè)置
在由兩種不同激活函數(shù)所建立的DNN模型中,超參數(shù)的設(shè)置都保持一致。超參數(shù)的設(shè)置如下:學(xué)習(xí)速率為0.1,權(quán)重初始采用文獻(xiàn)[4]提出的初始化方法;偏置初始化為0;動(dòng)量起始為0.5,經(jīng)過所有的訓(xùn)練數(shù)據(jù)迭代后增大到0.9;實(shí)驗(yàn)建立的DNN模型中未添加權(quán)重懲罰項(xiàng),目的是排除權(quán)重懲罰項(xiàng)對(duì)于訓(xùn)練輸出值的影響。在超參數(shù)設(shè)置完成后,用整個(gè)訓(xùn)練數(shù)據(jù)集訓(xùn)練DNN模型。
在網(wǎng)絡(luò)訓(xùn)練階段,貪婪無監(jiān)督算法自下而上地分別訓(xùn)練每層的權(quán)重,每層參數(shù)用訓(xùn)練集迭代50次。在反向傳播(Back Propagation,BP)期間,選用共軛梯度(Conjugate Gradient,CG)法作為DNN的優(yōu)化算法,其線性搜索可以大大簡化和加速網(wǎng)絡(luò)的學(xué)習(xí)。反向迭代200次。
損失函數(shù)(Loss Function,LF)在DNN的學(xué)習(xí)過程中也是必不可少的,它可以驗(yàn)證網(wǎng)絡(luò)訓(xùn)練的輸出值是否適當(dāng)。損失函數(shù)往往要和Softmax分類層結(jié)合起來應(yīng)用,以驗(yàn)證DNN模型的性能。Softmax分類層可以求得一個(gè)輸入樣本被歸類到預(yù)定義的類的概率,其公式為
(2)
運(yùn)用兩種不同的損失函數(shù)來驗(yàn)證網(wǎng)絡(luò)的性能,其為均方誤差(Mean Squared Eeeor,MSE)和交叉熵(Cross Entropy,CE),其公式為
(3)
(4)
式中,dj為第j個(gè)神經(jīng)元的目標(biāo)值;N為訓(xùn)練樣本的個(gè)數(shù)。
為了驗(yàn)證提出的激活函數(shù)——Tanh ReLU在DNN模型中的性能,利用兩種激活函數(shù)(Tanh ReLU & ReLU)分別建立DNN模型。特別地,為了進(jìn)一步提高Tanh ReLU的建模能力,增加Tanh ReLU在不同的損失函數(shù)、不同學(xué)習(xí)速率、不同權(quán)重代價(jià)以及不同邊界值下的分類測試實(shí)驗(yàn)。以上所述的實(shí)驗(yàn)都利用MNIST手寫數(shù)據(jù)集來對(duì)DNN模型進(jìn)行訓(xùn)練與測試的。
2.2.1 Tanh ReLU vs.ReLU
為了驗(yàn)證兩種不同激活函數(shù)(Tanh ReLU & ReLU)對(duì)DNN建模性能的影響,分別利用MSE和CE損失函數(shù)對(duì)建立的DNN模型進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同激活函數(shù)建立的DNN模型在均方誤差和
激活函數(shù)Tanh ReLU和ReLU建立的DNN模型在MNIST手寫數(shù)據(jù)集中的實(shí)驗(yàn)結(jié)果顯示。在CE損失函數(shù)中,網(wǎng)絡(luò)的分類誤差率由0.9005%降低到0.8999%,降低了0.0006%;然而在MSE損失函數(shù)中,誤差率降低得更加小,僅有0.0001%。可以看出,在ReLU基礎(chǔ)上提出的Tanh ReLU激活函數(shù)在損失函數(shù)CE下對(duì)網(wǎng)絡(luò)性能的提升更為顯著。
2.2.2 不同學(xué)習(xí)速率的比較
為了更進(jìn)一步地驗(yàn)證Tanh ReLU激活函數(shù)在DNN模型中的性能,在損失函數(shù)為CE的情況下,調(diào)節(jié)網(wǎng)絡(luò)的學(xué)習(xí)速率,實(shí)驗(yàn)結(jié)果如表3所示。
表3 不同學(xué)習(xí)速率下不同激活函數(shù)建立的DNN模型的分類誤差率 單位:%
分析表3中兩種激活函數(shù)(Tanh ReLU & ReLU)分別和CE損失函數(shù)建立的DNN模型在MNIST手寫數(shù)據(jù)集中的分類誤差率,可以看出,將學(xué)習(xí)速率調(diào)節(jié)至0.001后,分類誤差率降低了0.843,遠(yuǎn)遠(yuǎn)大于學(xué)習(xí)速率為0.1時(shí)的0.0006。網(wǎng)絡(luò)的性能得到了極大的提升。
2.2.3 不同權(quán)重代價(jià)的比較
以上的實(shí)驗(yàn)為了排除權(quán)重懲罰項(xiàng)對(duì)于訓(xùn)練輸出值的影響,所以未添加權(quán)重懲罰項(xiàng)?,F(xiàn)為了得到更好的網(wǎng)絡(luò)性能,為網(wǎng)絡(luò)添加上權(quán)重懲罰項(xiàng),以便可以更好地調(diào)節(jié)網(wǎng)絡(luò)的權(quán)重,得到更好的DNN模型。圖3為不同權(quán)重代價(jià)下DNN模型分類測試的實(shí)驗(yàn)結(jié)果。
圖3 不同權(quán)重代價(jià)對(duì)于DNN模型性能的影響
如圖3所示,權(quán)重代價(jià)(weightcost,wc)系數(shù)為0.00001時(shí),比為添加權(quán)重代價(jià)的網(wǎng)絡(luò)的收斂速度更快,而且誤差率減小到了0.0294。表明權(quán)重代價(jià)可以有效地幫助網(wǎng)絡(luò)的訓(xùn)練,使網(wǎng)絡(luò)生成得更好。
2.2.4 不同邊界值的比較
特別地,嘗試改變另一個(gè)超參數(shù)——激活函數(shù)Tanh ReLU的邊界A的值。
為了驗(yàn)證不同邊界值A(chǔ)對(duì)DNN建模性能的影響,僅改變激活函數(shù)邊界A的值,保證DNN模型其他超參數(shù)設(shè)置一致。DNN超參數(shù)設(shè)置如下:學(xué)習(xí)速率為0.001,權(quán)重初始采用文獻(xiàn)[4]提出的初始化方法;權(quán)重衰減調(diào)節(jié)為0.001;偏置初始化為0;動(dòng)量起始為0.5,經(jīng)過所有的訓(xùn)練數(shù)據(jù)迭代后增大到0.9;邊界值A(chǔ)分別設(shè)置為0、1、2、4,分別利用4個(gè)不同的邊界值A(chǔ)建立DNN模型。超參數(shù)設(shè)置完成后,將建立的DNN模型應(yīng)用于MNIST手寫數(shù)據(jù)集的分類實(shí)驗(yàn)中,實(shí)驗(yàn)結(jié)果如圖4所示。
由圖4可以看出不同的邊界值A(chǔ)對(duì)于網(wǎng)絡(luò)性能的影響。未為網(wǎng)絡(luò)添加邊界值時(shí)的DNN分類誤差率最大,且網(wǎng)絡(luò)邊界值越小,誤差率也越小,這是因?yàn)樘砑拥倪吔缰悼梢杂行У胤乐辜せ詈瘮?shù)邊界的數(shù)字溢出。
圖4 不同邊界值對(duì)于DNN網(wǎng)絡(luò)性能的影響
綜上所述,針對(duì)激活函數(shù)ReLU在原點(diǎn)處不連續(xù)以及非零均值激活提出了Tanh ReLU激活函數(shù),并用其構(gòu)建DNN模型進(jìn)行MNIST手寫數(shù)據(jù)集的分類實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明Tanh ReLU激活函數(shù)具有更好的網(wǎng)絡(luò)泛化性能,能夠給網(wǎng)絡(luò)提供更好的分類性能。
提出了一種適用于DNN的新的激活函數(shù)——Tanh ReLU。為了克服偏置轉(zhuǎn)移的影響、減小標(biāo)準(zhǔn)梯度和自然梯度之間的差值,在Tanh ReLU激活函數(shù)上添加了一個(gè)負(fù)值,使得網(wǎng)絡(luò)的激活平均值接近于零,這樣能夠更好地生成網(wǎng)絡(luò);而且,在Tanh ReLU激活函數(shù)添加了一個(gè)邊界,這樣可以使網(wǎng)絡(luò)訓(xùn)練時(shí)更加穩(wěn)定,在MNIST實(shí)驗(yàn)中也可以看出邊界值可以大大改善網(wǎng)絡(luò)的性能。實(shí)驗(yàn)表明: Tanh ReLU可以使網(wǎng)絡(luò)具有更好的泛化性能,并提高了DNN的性能。