李健
(北京信息科技大學(xué)理學(xué)院,北京 100192)
近年來(lái),深度學(xué)習(xí)(Deep Learning,DL)在機(jī)器學(xué)習(xí)的各個(gè)領(lǐng)域如圖像分類(lèi)與識(shí)別、目標(biāo)檢測(cè)、數(shù)據(jù)分析、自然語(yǔ)言處理等得到了廣泛的應(yīng)用[1]。在圖像分類(lèi)領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)[2]是一種使用較多的主流網(wǎng)絡(luò)模型。而在卷積神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)[3]發(fā)揮著至關(guān)重要的作用。
Berger A L 等人在分析邏輯斯諦回歸問(wèn)題時(shí)提出的Sigmoid[4]函數(shù)作為激活函數(shù)用到了圖像分類(lèi)問(wèn)題中。2010 年,Hinton 等人為了解決Sigmoid 在深層神經(jīng)網(wǎng)絡(luò)中的梯度消失問(wèn)題[5]于2010 年提出了ReLU 函數(shù)[6]。針對(duì)ReLU 函數(shù)的“神經(jīng)元壞死”現(xiàn)象和偏移問(wèn)題[7],何愷明等人2015 年提出了一種參數(shù)可學(xué)習(xí)的激活函數(shù)PReLU[8],提高了負(fù)部數(shù)據(jù)的利用率,但其引入了系數(shù)因子等超參數(shù)且對(duì)噪聲的魯棒性不好[9];Clevert等人于同年提出了一種在負(fù)部上為指數(shù)函數(shù)的激活函數(shù)ELU[10],可以進(jìn)行更深入地學(xué)習(xí)和具有更好的泛化性能,但其也存在計(jì)算量較大,與批次歸一化結(jié)合可能會(huì)損害分類(lèi)精度的問(wèn)題[11]。
本文通過(guò)分析現(xiàn)有的激活函數(shù),提出一種新的激活函數(shù)Rectified Sigmoid Linear Unit(RSLU)。RSLU 函數(shù)通過(guò)加入兩個(gè)梯度控制參數(shù),同時(shí)取正負(fù)值且具有非飽和性,有效地解決了Sigmoid 和ReLU 存在的梯度消失、負(fù)部消亡、非0 均值輸出等問(wèn)題,實(shí)驗(yàn)表明,RS?LU 函數(shù)在圖像分類(lèi)問(wèn)題上的性能優(yōu)于現(xiàn)有的激活函數(shù),具有實(shí)用價(jià)值。
為了解決現(xiàn)實(shí)世界中諸如圖像分類(lèi)等諸多非線性問(wèn)題,通常需要在神經(jīng)網(wǎng)絡(luò)中加入非線性映射來(lái)提取并保留數(shù)據(jù)的非線性特征,因此前人在神經(jīng)網(wǎng)絡(luò)中引入了非線性激活函數(shù)。常用的激活函數(shù)有Sigmoid、ReLU 等。
Sigmoid 函數(shù),也叫Logistic 函數(shù),最早由皮埃爾?弗朗索瓦?韋呂勒在1844 年研究人口增長(zhǎng)時(shí)引入并命名。后來(lái),Sigmoid 函數(shù)用于實(shí)現(xiàn)邏輯斯諦回歸(Logis?tic Regression)[12]模型,并逐漸作為激活函數(shù)用在深度學(xué)習(xí)中,其函數(shù)表達(dá)式為
與其他激活函數(shù)相比,Sigmoid 函數(shù)的優(yōu)點(diǎn)有:在二分類(lèi)問(wèn)題上表現(xiàn)較好;收斂速度較快,計(jì)算量較少。但是,Sigmoid 函數(shù)也有缺點(diǎn):函數(shù)輸出均值不為0,存在“均值偏移”問(wèn)題,影響參數(shù)更新;函數(shù)在輸出接近0或1 時(shí)梯度趨于0,具有飽和性,即產(chǎn)生“梯度消失”現(xiàn)象,從而無(wú)法完成深層網(wǎng)絡(luò)的訓(xùn)練。
ReLU 函數(shù),全稱(chēng)為 Rectified Linear Unit,其函數(shù)表達(dá)式為:f(x)=max( 0,x)。它是迄今為止應(yīng)用最多的激活函數(shù),由Hinton 等人于2010 年提出。之后,ReLU函數(shù)作為激活函數(shù)在圖像分類(lèi)等問(wèn)題上取得了不錯(cuò)的成效。
從其表達(dá)式不難看出,ReLU 函數(shù)有以下優(yōu)點(diǎn):具有稀疏性,運(yùn)算速度快,在正區(qū)間解決了Sigmoid 函數(shù)的“梯度消失”問(wèn)題,導(dǎo)數(shù)計(jì)算簡(jiǎn)單,模型收斂快。但是,ReLU 函數(shù)也有缺點(diǎn):輸出為負(fù)值時(shí)特征無(wú)法激活,導(dǎo)致“神經(jīng)元死亡”,降低了模型的實(shí)用性;同Sigmoid函數(shù)一樣存在“均值偏移”問(wèn)題,影響梯度更新方向與模型收斂速度。
針對(duì)上述Sigmoid 函數(shù)和ReLU 函數(shù)存在的問(wèn)題,受 Prajit Ramachandran 等關(guān)于Swish 函數(shù)[13]的研究工作的啟發(fā),本文將Sigmoid 函數(shù)和ReLU 函數(shù)結(jié)合并加以改進(jìn),提出了一種改進(jìn)的激活函數(shù)——RSLU,它較好地解決了Sigmoid 函數(shù)和ReLU 函數(shù)存在的“均值偏移”、硬飽和性以及“神經(jīng)元壞死”問(wèn)題,增強(qiáng)了模型的穩(wěn)定性和有效性以及泛化性。
其表達(dá)式為:
其中,α表示梯度放大系數(shù),取值范圍為[0 ,2];β表示梯度縮小系數(shù),取值范圍為[- 2,0]。RSLU 函數(shù)的導(dǎo)數(shù)為:
RSLU 函數(shù)及其導(dǎo)數(shù)的圖像如圖1 所示。
圖1 RSLU激活函數(shù)
由式(2)可以得出,RSLU 函數(shù)是一個(gè)非線性函數(shù),可以用在卷積神經(jīng)網(wǎng)絡(luò)中充當(dāng)激活函數(shù).與其它激活函數(shù)不同的是,RSLU 函數(shù)中添加了兩個(gè)參數(shù)α和β。兩個(gè)參數(shù)的具體作用如下:
參數(shù)α是激活控制及梯度放大參數(shù)。如圖2 所示,參數(shù)β保持不變且為-0.5,參數(shù)α的取值分別為0.2,0.5,1.5。由圖 2 可知,參數(shù)α可以控制 RSLU 函數(shù)在負(fù)區(qū)域中被激活的特征,α越大,負(fù)區(qū)域上的特征被激活越多;同時(shí),α作為梯度放大參數(shù),可控制負(fù)區(qū)域被激活值的梯度更新值的大小,α越大,負(fù)區(qū)域的更新梯度值越大,有著放大梯度更新值的功能。
圖2 不同α 對(duì)應(yīng)的函數(shù)及導(dǎo)數(shù)圖像
參數(shù)β是激活控制及梯度縮小系數(shù)。如圖3 所示為α=0.5 時(shí)參數(shù)β分別取-0.5,-0.2,-0.1 時(shí)f( )x的函數(shù)及其導(dǎo)數(shù)圖像.如圖3 看到的那樣,參數(shù)β越大,負(fù)區(qū)域中的被激活區(qū)域越小,即被激活的特征越少;并且,在梯度更新控制上,β的作用與α相反,即β越大,更新的梯度值越小,起到了收縮梯度更新值的作用。
綜上所述,當(dāng)α保持不變時(shí),RSLU 函數(shù)的導(dǎo)函數(shù)的值隨著β的增大而減小,此時(shí)我們可以通過(guò)增加參數(shù)β的值來(lái)放緩梯度更新的過(guò)程;當(dāng)β保持不變時(shí),RSLU 函數(shù)的導(dǎo)函數(shù)的值隨著α的增大而增大,而此時(shí)我們可以通過(guò)增加參數(shù)α的值來(lái)加快梯度更新的過(guò)程.并且,通過(guò)在訓(xùn)練中調(diào)整α和β的值,可以合理地控制負(fù)區(qū)域被激活值的多少。這樣,通過(guò)調(diào)整參數(shù)α和β的值,就可以更好的控制分類(lèi)算法運(yùn)行的過(guò)程和速率,從而實(shí)現(xiàn)模型運(yùn)行的穩(wěn)定性和高效性.
同Sigmoid、ReLU 相比,本文提出的RSLU 函數(shù)有以下優(yōu)點(diǎn):
(1)通過(guò) RSLU 的表達(dá)式和圖 1 可知,RSLU 函數(shù)在正負(fù)部都有取值,且輸出均值為0,解決了Sigmoid函數(shù)和RELU 函數(shù)都存在的非0 均值輸出即“均值偏移”問(wèn)題,使梯度可以朝正負(fù)兩個(gè)方向更新,從而讓模型可以更好的收斂和運(yùn)行;
(2)RSLU 函數(shù)為非飽和函數(shù),即隨著參數(shù)的更新,函數(shù)不管取到何值,函數(shù)的梯度不會(huì)趨于0 或∞,從而解決了“梯度消失”問(wèn)題,使得此激活函數(shù)可以用在深層神經(jīng)網(wǎng)絡(luò)中;
(3)在RSLU 函數(shù)的負(fù)區(qū)域,加入了取值為( 0,1) 的微小梯度。在訓(xùn)練中,通過(guò)控制α和β的取值,可以使負(fù)區(qū)域激活更多的特征值,從而更好地緩解了ReLU函數(shù)的“神經(jīng)元死亡”現(xiàn)象,提高了數(shù)據(jù)的利用率;
(4)RSLU 中加入了兩個(gè)梯度更新控制參數(shù)α和β,可以更好地控制負(fù)區(qū)域的激活和梯度更新的過(guò)程,讓模型訓(xùn)練過(guò)程變得可控,從而使模型的穩(wěn)定性和實(shí)用性進(jìn)一步增強(qiáng)。
為了驗(yàn)證RSLU 函數(shù)在用于圖像分類(lèi)的卷積神經(jīng)網(wǎng)絡(luò)中的實(shí)際效果,采用深度學(xué)習(xí)框架TensorFlow 在MNIST 數(shù)據(jù)集上做了具體實(shí)驗(yàn)。實(shí)驗(yàn)通過(guò)在卷積神經(jīng)網(wǎng)絡(luò)中比較不同激活函數(shù)表現(xiàn),來(lái)對(duì)改進(jìn)效果進(jìn)行驗(yàn)證。本節(jié)具體介紹了實(shí)驗(yàn)實(shí)現(xiàn)的過(guò)程,并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析來(lái)驗(yàn)證改進(jìn)的有效性.以下實(shí)驗(yàn)中,RSLU 函數(shù)中的參數(shù)α的初始值設(shè)為0.3,參數(shù)β的初始值設(shè)為-0.5。本實(shí)驗(yàn)中,其他參數(shù)不變,只改變模型中激活函數(shù)層中的激活函數(shù),來(lái)進(jìn)行實(shí)驗(yàn)并得到結(jié)果,且所有實(shí)驗(yàn)結(jié)果均取五次實(shí)驗(yàn)的平均值進(jìn)行記錄。最終的實(shí)驗(yàn)結(jié)果表明,改進(jìn)的RSLU 函數(shù)相比于現(xiàn)有的激活函數(shù),收斂速度更快,運(yùn)行的時(shí)間較短,且可得到更高的分類(lèi)精度。
實(shí)驗(yàn)的操作系統(tǒng)為Windows10 64 位操作系統(tǒng),使用的 CPU 是 Intel Xeon CPU E5-2620 v3@2.40GHz,顯卡為 NVIDIA Quadro K2200,基于 TensorFlow 框架,在idle 上進(jìn)行開(kāi)發(fā)和調(diào)試,分析了圖像分類(lèi)的訓(xùn)練時(shí)的損失值和分類(lèi)精確率,通過(guò)最終的損失值下降曲線、準(zhǔn)確率曲線以及模型運(yùn)行時(shí)間來(lái)分析不同激活函數(shù)的性能。為了評(píng)估RSLU 激活函數(shù),在MNIST 數(shù)據(jù)集上對(duì)比分析了 Sigmoid、ReLU、Leaky-ReLU、ELU 和 RSLU五種激活函數(shù)的具體表現(xiàn),最后得出結(jié)論。
評(píng)測(cè)標(biāo)準(zhǔn)—損失值:損失值衡量了訓(xùn)練完成后模型得到的預(yù)測(cè)值和真實(shí)值的差異程度,即損失值越小,預(yù)測(cè)值越接近真實(shí)值。本實(shí)驗(yàn)中對(duì)于手寫(xiě)數(shù)字體的分類(lèi)屬于多分類(lèi)問(wèn)題,最后使用Softmax 層計(jì)算各個(gè)類(lèi)別的概率,因此采用相對(duì)應(yīng)的交叉熵?fù)p失函數(shù)cross-en?tropy,也稱(chēng)為多分類(lèi)對(duì)數(shù)損失函數(shù),而根據(jù)此函數(shù)可得到訓(xùn)練的損失值.這個(gè)損失函數(shù)根據(jù)Softmax 層得到的概率來(lái)計(jì)算損失值,其公式如下:
其中,pi表示為分類(lèi)為第i類(lèi)的概率預(yù)測(cè)值,exi表示Softmax 層中第i個(gè)神經(jīng)元的輸出;Loss表示分類(lèi)的損失值,也就是預(yù)測(cè)值和真實(shí)值的交叉熵,二者的交叉熵越大,則損失值越小,也即訓(xùn)練的誤差越??;yi代表第i類(lèi)的概率真實(shí)值,當(dāng)為第i類(lèi)時(shí)yi=1,不為第i類(lèi)時(shí)yi=0。
評(píng)測(cè)標(biāo)準(zhǔn)—準(zhǔn)確率:準(zhǔn)確率表示訓(xùn)練完成后進(jìn)行測(cè)試時(shí)分類(lèi)正確的圖像的比率,計(jì)算公式為:
其中,Acc代表分類(lèi)的準(zhǔn)確率,取值范圍為[0 ,1];nt表示分類(lèi)正確的圖像的數(shù)量,n表示總的圖像數(shù)量。
本實(shí)驗(yàn)采用卷積神經(jīng)網(wǎng)絡(luò)作為圖像識(shí)別的神經(jīng)網(wǎng)絡(luò)模型,模型中各層的設(shè)置及參數(shù)如圖4 所示。
圖4 本文實(shí)驗(yàn)采用的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
其中,conv 表示卷積層,卷積核大小為5×5,卷積步長(zhǎng)為1,其中第一個(gè)卷積層卷積核的個(gè)數(shù)為32,第二個(gè)卷積層卷積核的個(gè)數(shù)為64;activation layer 表示激活層,在此層中激活函數(shù)對(duì)輸入的特征進(jìn)行非線性激活,提升模型的非線性;pooling 表示池化層,本實(shí)驗(yàn)中均采用窗口大小為2×2 的最大池化,步長(zhǎng)為2;fc 代表全連接層,其中第一層神經(jīng)元個(gè)數(shù)為1024,第二層神經(jīng)元個(gè)數(shù)為10。同時(shí),設(shè)置實(shí)驗(yàn)的訓(xùn)練輪數(shù)為1000 輪,每輪訓(xùn)練的圖像數(shù)量即批尺寸為100,學(xué)習(xí)率設(shè)為0.0001,優(yōu)化方法為AdamOptimizer。下面的實(shí)驗(yàn)中,將會(huì)采用圖3 的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行圖像分類(lèi),并且通過(guò)在激活層應(yīng)用不同的激活函數(shù),對(duì)比分析現(xiàn)有激活函數(shù)和RSLU 激活函數(shù)的表現(xiàn),驗(yàn)證改進(jìn)的有效性。
本文選用經(jīng)典的MNIST 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。MNIST數(shù)據(jù)集是一個(gè)用于手寫(xiě)數(shù)字體圖像分類(lèi)的圖像數(shù)據(jù)集,包含60000 張訓(xùn)練圖片和10000 張測(cè)試圖片。在MNIST 數(shù)據(jù)集上,用上節(jié)提到的卷積神經(jīng)網(wǎng)絡(luò)模型來(lái)引入現(xiàn)有的激活函數(shù)和本文改進(jìn)的激活函數(shù)進(jìn)行實(shí)驗(yàn)并得出數(shù)據(jù),進(jìn)行比較與驗(yàn)證。
在MNIST 數(shù)據(jù)集上利用圖4 的模型測(cè)試不同激活函數(shù)得到的實(shí)驗(yàn)結(jié)果如表1 所示。根據(jù)表1 可得,提出的改進(jìn)的激活函數(shù)RSLU 相對(duì)于其他四種已有的激活函數(shù)來(lái)說(shuō)Loss值最低,而分類(lèi)精度Acc值則最高。具體來(lái)說(shuō),在訓(xùn)練集上,RSLU 的Loss值相比于Sigmoid 函數(shù)下降了約0.47,相比于ReLU 函數(shù)減少了約0.04,而對(duì)于現(xiàn)有的激活函數(shù)Leaky-ReLU 和ELU來(lái)說(shuō)分別下降了約0.13 和0.10。并且,RSLU 的分類(lèi)精度比Sigmoid 函數(shù)高了 19%,比 ReLU 函數(shù)高了1.94%,而相比于Leaky-ReLU 和ELU,精度分別提升了1.66%、3.28%,證明本文提出的改進(jìn)RSLU 函數(shù)在卷積神經(jīng)網(wǎng)絡(luò)的圖像分類(lèi)問(wèn)題中可以提高分類(lèi)的精確率,且分類(lèi)精度高于現(xiàn)有的激活函數(shù)。而在運(yùn)行時(shí)間上,RSLU 函數(shù)也比較短,比最快的ReLU 函數(shù)僅多了1.55s,而比 Sigmoid 函數(shù)少 7.56s,證明 RSLU 函數(shù)可以提高分類(lèi)效率。
圖5 是幾種激活函數(shù)在MNIST 實(shí)驗(yàn)中的Loss變化曲線,其中EPOCH 為訓(xùn)練的輪數(shù)。由圖5 可得,隨著訓(xùn)練更新的次數(shù)的增加,Sigmoid 函數(shù)的Loss的減少幅度基本不變,且最后的值較大;ELU、Leaky-ReLU 的Loss變化情況類(lèi)似,最終數(shù)值比Sigmoid 稍小;ReLU 函數(shù)比前三者的下降速度快,最后得到的值和ELU、Leaky-ReLU 相當(dāng);而RSLU 的Loss比其余所有激活函數(shù)減小的速度都快,且最終得到的Loss也最小。因此,可認(rèn)為RSLU 函數(shù)在提高收斂速度、減少模型運(yùn)行時(shí)間上來(lái)說(shuō)是有效的。
圖6 為各激活函數(shù)在MNIST 上的分類(lèi)準(zhǔn)確率Acc變化曲線??傮w來(lái)看,各激活函數(shù)的Acc變化情況與Loss變化情況類(lèi)似,同樣RSLU 相比其他函數(shù)有著更快的準(zhǔn)確率提升速度。從圖6 中的曲線可以看出,在分類(lèi)準(zhǔn)確率這一評(píng)測(cè)指標(biāo)上,Sigmoid 函數(shù)表現(xiàn)最差,即分類(lèi)精度較低;而ReLU、Leaky-ReLU、ELU 三者最終的準(zhǔn)確率相比Sigmoid 函數(shù)來(lái)說(shuō)有較大的提升,可達(dá)到0.93 以上;RSLU 函數(shù)相比其他函數(shù)來(lái)說(shuō)準(zhǔn)確率最高,比最高的ReLU 函數(shù)多了約0.02。因此,本文改進(jìn)的激活函數(shù)RSLU 在卷積神經(jīng)網(wǎng)絡(luò)的圖像分類(lèi)問(wèn)題中可以達(dá)到比現(xiàn)有激活函數(shù)更高的分類(lèi)精度,也就意味著改進(jìn)是有效果的。
表1 不同激活函數(shù)在(MNIST 上的實(shí)驗(yàn)結(jié)果
圖5 MNIST實(shí)驗(yàn)中各激活函數(shù)的Loss值曲線對(duì)比
圖6 MNIST實(shí)驗(yàn)中各激活函數(shù)的準(zhǔn)確率曲線對(duì)比
通過(guò)以上的實(shí)驗(yàn)結(jié)果和實(shí)驗(yàn)數(shù)據(jù)可以看出,改進(jìn)的RSLU 函數(shù)在利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類(lèi)的問(wèn)題上,在同樣的網(wǎng)絡(luò)模型和數(shù)據(jù)中,相比于Sigmoid 函數(shù)、ReLU 函數(shù)以及現(xiàn)有的激活函數(shù)來(lái)說(shuō),分類(lèi)損失值較小,分類(lèi)精度較高,而且收斂速度較快,運(yùn)行時(shí)間較短,性能優(yōu)于現(xiàn)有的激活函數(shù)。由此可見(jiàn),本文提出的改進(jìn)的激活函數(shù)RSLU 改善了Sigmoid 函數(shù)和ReLU函數(shù)的“均值偏移”問(wèn)題,加快了模型收斂速度,減少了模型運(yùn)行時(shí)間;同時(shí),改進(jìn)了Sigmoid 函數(shù)的“梯度消失”問(wèn)題和ReLU 函數(shù)的“神經(jīng)元死亡”問(wèn)題。加入兩個(gè)控制參數(shù)α和β,使模型可以學(xué)習(xí)利用更多數(shù)據(jù),從而得到更高的分類(lèi)精度,提升了模型的穩(wěn)定性和可靠性,也使模型的總體性能得到了提升。綜上所述,本文對(duì)于激活函數(shù)的改進(jìn)是有效的。
本文針對(duì)現(xiàn)有的激活函數(shù)Sigmoid 在利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類(lèi)問(wèn)題中的“梯度消失”問(wèn)題以及ReLU 函數(shù)存在的“神經(jīng)元壞死”問(wèn)題,和二者共同存在的“均值偏移”現(xiàn)象影響模型收斂和運(yùn)算的問(wèn)題,提出了改進(jìn)的具有雙參數(shù)控制的激活函數(shù)RSLU。通過(guò)在MNIST 數(shù)據(jù)集上對(duì)RSLU 函數(shù)以及現(xiàn)有激活函數(shù)進(jìn)行了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,RSLU 函數(shù)有效地改善了二者的不足,加快了模型的收斂,提升了模型的分類(lèi)精度,同時(shí)相比現(xiàn)有的激活函數(shù)性能也有所提高。
本文為今后深度學(xué)習(xí)網(wǎng)絡(luò)模型的發(fā)展及改進(jìn)提供了一個(gè)可行的思路和方向,即通過(guò)改進(jìn)網(wǎng)絡(luò)中的數(shù)據(jù)處理函數(shù)來(lái)提升網(wǎng)絡(luò)的性能。文中只提到了激活函數(shù)的改進(jìn),而進(jìn)一步的研究工作可以對(duì)網(wǎng)絡(luò)中的損失函數(shù)、優(yōu)化函數(shù)等來(lái)進(jìn)行優(yōu)化,同時(shí)激活函數(shù)的改進(jìn)工作也可以推廣到目標(biāo)檢測(cè)、語(yǔ)音識(shí)別等其他深度學(xué)習(xí)領(lǐng)域。