張 煥,張 慶,于紀言
(南京理工大學(xué)機械工程學(xué)院,江蘇 南京 210094)
深度學(xué)習(xí)(Deep Learning,DL)[1]是近年來人工智能相關(guān)領(lǐng)域最令人矚目的發(fā)展方向,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)作為深度學(xué)習(xí)的主力軍,已經(jīng)在安防、交通、醫(yī)療、教育、零售、家居等諸多領(lǐng)域特別是圖像相關(guān)的任務(wù)上表現(xiàn)優(yōu)異[2-6]。卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展源于人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)[7-9],且其具備模擬動物的神經(jīng)元這一生物理論基礎(chǔ)。而激活函數(shù)(Activation Functions)作為卷積神經(jīng)網(wǎng)絡(luò)的一個重要組成部分,其存在的意義重大。
激活函數(shù)通常上也可以稱為非線性映射層,從數(shù)學(xué)角度來看,它的引入可以增加卷積神經(jīng)網(wǎng)絡(luò)的非線性表達能力。從生物學(xué)理論角度來看,激活函數(shù)對數(shù)據(jù)的作用過程模擬了生物神經(jīng)元對電信號的處理過程。生物神經(jīng)元通過一定的閾值激活或抑制接收到的電信號而產(chǎn)生一定的輸出,從而完成了信息的處理與傳播。因此,參考生物神經(jīng)元,理想的激活函數(shù)應(yīng)該是將輸入數(shù)據(jù)映射為{0,1}兩種結(jié)果的輸出。但是,卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練、誤差反向傳播的過程要求激活函數(shù)具備一定的可微性,顯然理想“神經(jīng)元激活”目前不符合文中的模型訓(xùn)練要求。因此,尋找時間、空間及特征采集度高效的激活函數(shù)成為了深度學(xué)習(xí)的一項重要基礎(chǔ)研究內(nèi)容。
在初期的深度學(xué)習(xí)發(fā)展過程中,傳統(tǒng)S型非線性飽和激活函數(shù)sigmoid和 tanh 函數(shù)得到了廣泛的應(yīng)用[10]。隨著深度學(xué)習(xí)理論和計算機運算能力的快速發(fā)展,深度學(xué)習(xí)模型的深度大大提升,此類函數(shù)在模型訓(xùn)練過程中導(dǎo)數(shù)連乘很容易出現(xiàn)“梯度彌散”的問題[11]。2010年,Hinton教授首次提出了修正線性單元(rectified linear units,relu)[12]作為激活函數(shù),Krizhevsky 等在2012 年 ImageNet ILSVRC 比賽中使用了激活函數(shù)ReLU,驗證了ReLU激活函數(shù)具備稀疏性的優(yōu)勢,能使模型訓(xùn)練以及模型收斂速度大大加快,且很好的解決了sigmoid和tanh函數(shù)存在的梯度彌散問題。但是ReLU激活函數(shù)在負半軸的梯度恒為零,模型在訓(xùn)練過程可能會發(fā)生神經(jīng)元“壞死”的狀況[13]。
為了解決ReLU負半軸置0而導(dǎo)致“神經(jīng)元壞死”的情況,2012年至今研究者們提出Leaky ReLU[14]、PReLU[15]、Noisy ReLU[16]、ELUs[13]、ReLU-softplus[17]、ReLU-softsign[18]、TReLU[19]、Swish[20]、Xwish[21],ReLU閾值[22]等激活函數(shù),這些激活函數(shù)有效緩減了“神經(jīng)元壞死”的問題。下文將以神經(jīng)網(wǎng)絡(luò)前向傳播、反向傳播為例,推導(dǎo)激活函數(shù)的作用過程,并總結(jié)、分析優(yōu)良激活函數(shù)應(yīng)該具備的特性。基于激活函數(shù)的發(fā)展及文中有關(guān)激活函數(shù)性質(zhì)的分析,本文提出了一種新型激活函數(shù)ReLU-XeX,通過理論分析其優(yōu)越性,并通過數(shù)據(jù)模型實驗證明了其優(yōu)越性。
激活函數(shù)的直觀作用是對已有數(shù)據(jù)進行非線性映射,增加表達能力。在神經(jīng)網(wǎng)絡(luò)中,每一層網(wǎng)絡(luò)所學(xué)習(xí)到的特征表現(xiàn)為權(quán)值的形式更新。從神經(jīng)科學(xué)學(xué)科角度來看,其目的是激活某些信號進行表達,且抑制某類信號的表達。以下將推導(dǎo)和分析神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練過程中激活函數(shù)的作用,并對激活函數(shù)性質(zhì)進行解釋和分析。
可以把神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程分為前向傳播和反向傳播。其中,前向傳播的過程是輸入層輸入、經(jīng)過隱藏層的特征提取,最后在輸出層進行輸出;反向傳播是根據(jù)輸出層的實際輸出與目標期望輸出通過某種計算公式來計算誤差損失,并通過每一層的誤差損失求得反向梯度來更新權(quán)值參數(shù)的過程。圖1是一個4層的神經(jīng)網(wǎng)絡(luò),輸入層為第0層,中間三個隱藏層,第四層為輸出層。圖2為激活函數(shù)的作用示意圖。以下將以圖1中的深層神經(jīng)網(wǎng)絡(luò)為例,推導(dǎo)分析激活函數(shù)在前向傳播和反向傳播中發(fā)揮的作用。
圖1 神經(jīng)網(wǎng)絡(luò)
圖2 激活函數(shù)作用示意圖
輸入信號通過各個網(wǎng)絡(luò)層的隱節(jié)點產(chǎn)生輸出的過程稱為前向傳播。在網(wǎng)絡(luò)訓(xùn)練過程,前向傳播會生成一個標量損失函數(shù)。其過程表達式為(1)(2)(3)(4)(5)。其中,x為輸入,w[i]、b[i]為第i層的權(quán)值參數(shù)和偏置,z[i]、a[i]是第i層輸入神經(jīng)元的值和經(jīng)激活函數(shù)激活后神經(jīng)元的值,g[i]為第i層的激活函數(shù)。
第一層需要計算
z[1]=w[1]x+b[1],a[1]=g[1](z[1])
(1)
第二層需要計算
z[2]=w[2]a[1]+b[2],a[2]=g[2](z[2])
(2)
第三層需要計算
z[3]=w[3]a[2]+b[3],a[3]=g[3](z[3])
(3)
第四層需要計算:
z[4]=w[4]a[3]+b[4],a[4]=g[4](z[4])
(4)
將上述的輸入x記作a[0],前向傳播的過程可以寫成通式
z[i]=w[i]a[i-1]+b[i],a[i]=g[i](z[i])
(5)
分析式(1)~(5),在神經(jīng)網(wǎng)絡(luò)前向傳播的過程中,輸入經(jīng)過權(quán)值和偏置的累加線性映射,得到一個初值,這個初值要經(jīng)過激活函數(shù)的非線性映射進一步加工,以增強網(wǎng)絡(luò)表達能力。因此分析前向傳播過程,激活函數(shù)應(yīng)該具備以下性質(zhì):
1)激活函數(shù)對數(shù)據(jù)進行非線性映射從而增加表達能力,因此該過程要求激活函數(shù)為非線性函數(shù);
2)激活函數(shù)應(yīng)該符合或近似符合零均值分布條件,以增加其對數(shù)據(jù)的適應(yīng)性;
3)激活函數(shù)計算的時間、空間復(fù)雜度應(yīng)該盡量較小。
反向傳播是根據(jù)輸出層的實際輸出與目標期望輸出通過某種計算公式來計算誤差損失,并通過每一層的誤差損失求其反向梯度來更新權(quán)值參數(shù)。其過程表達式為(6)、(7)、(8)、(9)、(10),反向傳播過程使用梯度下降法的參數(shù)更新公式為式(11)、(12)。其中,將da[j]作為輸入,得到da[j-1]、dw[j]、db[j]作為輸出,a為學(xué)習(xí)率,其余參數(shù)表達參照2.1節(jié)中的前向傳播。
dz[j]=da[j]*g[j]′(z[j])
(6)
dw[j]=dz[j]*a[j-1]T
(7)
db[j]=dz[j]
(8)
da[j-1]=(w[j])T*dz[j]
(9)
dz[j-1]=(w[j])T*dz[j]*g[j-1]′(z[j-1])
(10)
w=w[j]-a*(w[j+1])T*dz[j+1]*
g[j]′(z[j]) *a[j-1]T
(11)
b=b-a*db=b[j]-a*(w[j+1])T*
dz[j+1]*g[j]′(z[j])
(12)
分析式子(6)~(12),可以得出權(quán)值參數(shù)的更新與激活函數(shù)導(dǎo)數(shù)值的大小存在線性相關(guān)關(guān)系,深層神經(jīng)網(wǎng)絡(luò)的參數(shù)更新中會出現(xiàn)激活函數(shù)的導(dǎo)數(shù)連乘。因此分析前向傳播過程,激活函數(shù)應(yīng)該具備以下性質(zhì):
1)要求激活函數(shù)的導(dǎo)數(shù)不能太小或太大,以避免出現(xiàn)梯度消失或梯度爆炸的問題;
2)要求激活函數(shù)的導(dǎo)數(shù)不能過多的置“0”,以避免出現(xiàn)“神經(jīng)元壞死“問題;
3)要求激活函數(shù)便于計算機求導(dǎo)計算,優(yōu)化計算成本及性能[23],以避免計算量巨大的問題;
4)要求激活函數(shù)理論上存在一定的稀疏性,以符合神經(jīng)科學(xué)的研究論證;
5)要求模型剛開始訓(xùn)練的時,激活函數(shù)的導(dǎo)數(shù)應(yīng)該較大,加速模型收斂;同時在模型收斂后半段,應(yīng)要求激活函數(shù)有一定的軟飽和性,即導(dǎo)數(shù)漸漸趨于0,使得模型收斂至最優(yōu)值;
6)要求最好選擇一個正負值都可以輸出的激活函數(shù),因參數(shù)w的更新方向與該層的輸入a[j-1]有關(guān),使得參數(shù)的更新方向自由;
7)要求激活函數(shù)應(yīng)該具備一定的飽和性,使得模型對數(shù)據(jù)噪聲具有一定的魯棒性。
考慮函數(shù)f(x)=x*e-|x|,將其命名為XeX。其函數(shù)、導(dǎo)數(shù)表達式為(13)(14);其函數(shù)、導(dǎo)數(shù)圖像如圖3、圖4。從式(13)(14)可以看出,函數(shù)XeX具備一些性質(zhì):
1)其本身為非線性函數(shù);
2)符合0均值分布;
3)在零點附近其導(dǎo)數(shù)較大,能加速模型的收斂;
4)函數(shù)輸出有正負值,保證了參數(shù)更新的方向自由;
5)具有軟飽和性,對數(shù)據(jù)噪聲具備一定的魯棒性。
(13)
(14)
圖3 XeX函數(shù)圖
圖4 XeX導(dǎo)數(shù)圖
(15)
(16)
圖5 ReLU-XeX函數(shù)圖
圖6 ReLU-XeX導(dǎo)數(shù)圖
圖7 函數(shù)圖對比
圖8 導(dǎo)數(shù)圖對比
圖7、圖8為Leaky ReLU(a=0.1)、relu-softplus[13]、relu-softsign[14]以及ReLU-XeX激活函數(shù)在負半軸的函數(shù)、導(dǎo)數(shù)圖像。對比圖5、6、7、8可以得出:
1)ReLU-XeX相較于Leaky ReLU(a=0.1),其負半軸斜率先大后小的特性有利于模型加速收斂;
2)ReLU-XeX相較于relu-softplus、relusoftsign,其導(dǎo)數(shù)與正半軸導(dǎo)數(shù)(導(dǎo)數(shù)為1)不連續(xù)且相對較小(a控制著其大小),這使得輸入值的正負對權(quán)值參數(shù)的更新影響更大,增大了輸入正負值的區(qū)分度;
為了驗證上文提出的ReLU-XeX激活函數(shù)的有效性,本文分別在MNIST、CIFAR-10、CIFAR-100、MSTAR四種數(shù)據(jù)集上,對sigmoid、tanh、ReLU、Leaky ReLU(a=0.1)、relu-softplus、relu-softsign、ReLU-XeX七種激活函數(shù)作性能測試。針對四種數(shù)據(jù)集,文中分別設(shè)計了相應(yīng)的卷積神經(jīng)網(wǎng)絡(luò)模型。
目前深度學(xué)習(xí)有很多成熟的開源框架,如Pytorch、TensorFlow、Caffe、CNTK等等。本實驗是在深度學(xué)習(xí)框架Pytorch下完成的,運行顯卡為NVIDIA GeForce GTX 1060,并且使用了CUDA進行加速。本文在Jupyter Notebook下運用matplotlib對實驗結(jié)果進行了可視化,并對參與實驗的幾種激活函數(shù)展開了性能對比和分析。
MNIST數(shù)據(jù)集是用于識別0~9這十種數(shù)字的圖像數(shù)據(jù)集,一共包含70000張28*28像素的灰度手寫數(shù)字圖片,其中60000張圖像為訓(xùn)練集,10000張圖像為測試集,圖9為其部分圖像樣本。
圖9 MNIST數(shù)據(jù)集
圖10為針對MNIST數(shù)據(jù)集設(shè)計的卷積神經(jīng)網(wǎng)絡(luò)模型;表1為本模型相關(guān)的參數(shù)及優(yōu)化方法、損失函數(shù)設(shè)計。將尺寸為28×28的灰度圖像按中心裁剪的方法裁剪成24×24,并對其作歸一化處理輸入設(shè)計好的卷積神經(jīng)網(wǎng)絡(luò)模型。三個卷積層的卷積核尺寸都是3×3,卷積步長(stride)為1,卷積填充(padding)為1,每個卷積層后都跟著一個最大池化層。最后將提取的特征圖展開為特征向量,由一個全連接層相接。
表2是在該模型在不同激活函數(shù)作用下得到的測試集準確率。由表2可知,文中提出的改進激活函數(shù)ReLU-XeX在參數(shù)a=0.2、b=0.2和a=0.2、b=0.05時均取得了比其它六種激活函數(shù)更優(yōu)的效果。其中在a=0.2、b=0.05時取得了最高準確率99.02%,相較于sigmoid提高8.08%;相較于tanh提高0.73%;相較于ReLU提高0.19%;相較于Leaky ReLU(a=0.1)提高0.09%;相較于relu-softplus提高0.26%;相較于relu-softsign提高0.05%。
圖11為30個訓(xùn)練周期,即9000個訓(xùn)練批次得到的該模型在不同激活函數(shù)作用下訓(xùn)練集的平均損失與訓(xùn)練批次數(shù)的關(guān)系,從圖中可以看出,relu-softplus、relu-softsign以及本文提出的改進激活函數(shù)ReLU-XeX相較于傳統(tǒng)激活函數(shù)sigmoid、tanh、ReLU、Leaky ReLU,在模型收斂速度上有更大的優(yōu)勢。圖12為模型訓(xùn)練初期,模型的60~150批次數(shù)訓(xùn)練的平均損失,從圖中能看出該模型收斂的先后順序是ReLU-XeX(a=0.5,b=0.05)、relu-softplus、ReLU-XeX(a=0.2,b=0.05)、relu-softsign、ReLU-XeX(a=0.2,b=0.5)。圖13為幾種激活函數(shù)的導(dǎo)數(shù)圖像,參考之前得到的結(jié)論,權(quán)值參數(shù)的更新和激活函數(shù)導(dǎo)數(shù)值的大小成正相關(guān),這種模型收斂的先后順序得到了論證。
圖10 設(shè)計的MNIST的CNN模型
表1 MNIST卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù)設(shè)計
表2 MNIST數(shù)據(jù)集下的實驗結(jié)果
圖11 各激活函數(shù)的模型損失
圖12 損失下降對比
圖13 導(dǎo)數(shù)對比
CIFAR-10是包含10種類別共60000張32*32像素的三通道圖像數(shù)據(jù)集;CIFAR-100是對CIFAR-10更加細致劃分而得到的100類圖像數(shù)據(jù)集。它們都是50000張用作訓(xùn)練集,10000張用作測試集,部分數(shù)據(jù)展示如圖14。MSTAR美國國防高等研究計劃署(DARPA)推出的開源SAR軍事目標圖像數(shù)據(jù)庫。本文采用的MSTAR數(shù)據(jù)集種訓(xùn)練集有2746張圖像,測試集有2426張圖像,都是128×128分辨率的三通道十類別軍事目標圖像,部分數(shù)據(jù)展示如圖15。
圖14 CIFAR-10/100數(shù)據(jù)集
圖16為針對CIFAR-10/CIFAR-100/MSTAR數(shù)據(jù)集設(shè)計的卷積神經(jīng)網(wǎng)絡(luò)模型;表3為模型相關(guān)的參數(shù)及優(yōu)化方法、損失函數(shù)設(shè)計。表4為模型在不同激活函數(shù)作用下得到的測試集準確率,從表4中可以看出,激活函數(shù)在不同數(shù)據(jù)集的表現(xiàn)效果不盡相同,這與具體模型的特點以及數(shù)據(jù)集的特征有關(guān)。文中提出的改進激活函數(shù)ReLU-XeX在參數(shù)a=0.2、b=0.2和a=0.2、b=0.05時整體取得了比其它六種激活函數(shù)更優(yōu)的效果。
圖15 MSTAR數(shù)據(jù)集
圖16 CIFAR-10/CIFAR-100/MSTAR卷積神經(jīng)網(wǎng)絡(luò)模型
表3 模型參數(shù)設(shè)計
表4 CIFAR-10/CIFAR-100/MSTAR的實驗結(jié)果
上文通過研究激活函數(shù)的發(fā)展進程,以及在分析神經(jīng)網(wǎng)絡(luò)前向傳播和反向傳播中激活函數(shù)所起到的作用的基礎(chǔ)上,提出了改進的激活函數(shù)ReLU-XeX,有效的緩解了梯度消失、“神經(jīng)元壞死”等問題。在MNIST、CIFAR-10、CIFAR-100、MSTAR數(shù)據(jù)集上的仿真結(jié)果表明,改進的激活函數(shù)ReLU-XeX在本文仿真中整體表現(xiàn)強于其它的一些激活函數(shù),且在模型的收斂速度上有所提升。
實驗數(shù)據(jù)顯示,激活函數(shù)的表現(xiàn)性能不僅與激活函數(shù)本身的性質(zhì)有關(guān),還和數(shù)據(jù)集的數(shù)據(jù)分布、模型復(fù)雜度有關(guān)。當網(wǎng)絡(luò)模型足夠復(fù)雜,類比大腦神經(jīng)信息傳播,此時激活函數(shù)理論上也應(yīng)該要具備很高的稀疏性,以防止過擬合。本文提出的改進的激活函數(shù)ReLU-XeX在ReLU的基礎(chǔ)上置負半軸軟飽和,在模型較為復(fù)雜時其理論上可能仍存在稀疏性不足的問題。但深度學(xué)習(xí)的應(yīng)用對實時性有很高的要求,也即需要用較簡易的模型完成實際任務(wù),本文提出的改進的激活函數(shù)ReLU-XeX保留了負半軸的部分信息,提高了簡易模型的泛化能力。同時,ReLU-XeX在負半軸達到飽和后,其導(dǎo)數(shù)始終為零,減小了離群點對模型的干擾以及增強了模型對噪聲的魯棒性。本文為激活函數(shù)的設(shè)計改進提供了一種思路,激活函數(shù)仍存在許多可以進一步優(yōu)化改進的地方。