李健
(北京信息科技大學理學院,北京 100192)
近年來,深度學習(Deep Learning,DL)在機器學習的各個領域如圖像分類與識別、目標檢測、數據分析、自然語言處理等得到了廣泛的應用[1]。在圖像分類領域,卷積神經網絡[2]是一種使用較多的主流網絡模型。而在卷積神經網絡中,激活函數[3]發揮著至關重要的作用。
Berger A L 等人在分析邏輯斯諦回歸問題時提出的Sigmoid[4]函數作為激活函數用到了圖像分類問題中。2010 年,Hinton 等人為了解決Sigmoid 在深層神經網絡中的梯度消失問題[5]于2010 年提出了ReLU 函數[6]。針對ReLU 函數的“神經元壞死”現象和偏移問題[7],何愷明等人2015 年提出了一種參數可學習的激活函數PReLU[8],提高了負部數據的利用率,但其引入了系數因子等超參數且對噪聲的魯棒性不好[9];Clevert等人于同年提出了一種在負部上為指數函數的激活函數ELU[10],可以進行更深入地學習和具有更好的泛化性能,但其也存在計算量較大,與批次歸一化結合可能會損害分類精度的問題[11]。
本文通過分析現有的激活函數,提出一種新的激活函數Rectified Sigmoid Linear Unit(RSLU)。RSLU 函數通過加入兩個梯度控制參數,同時取正負值且具有非飽和性,有效地解決了Sigmoid 和ReLU 存在的梯度消失、負部消亡、非0 均值輸出等問題,實驗表明,RS?LU 函數在圖像分類問題上的性能優于現有的激活函數,具有實用價值。
為了解決現實世界中諸如圖像分類等諸多非線性問題,通常需要在神經網絡中加入非線性映射來提取并保留數據的非線性特征,因此前人在神經網絡中引入了非線性激活函數。常用的激活函數有Sigmoid、ReLU 等。
Sigmoid 函數,也叫Logistic 函數,最早由皮埃爾?弗朗索瓦?韋呂勒在1844 年研究人口增長時引入并命名。后來,Sigmoid 函數用于實現邏輯斯諦回歸(Logis?tic Regression)[12]模型,并逐漸作為激活函數用在深度學習中,其函數表達式為
與其他激活函數相比,Sigmoid 函數的優點有:在二分類問題上表現較好;收斂速度較快,計算量較少。但是,Sigmoid 函數也有缺點:函數輸出均值不為0,存在“均值偏移”問題,影響參數更新;函數在輸出接近0或1 時梯度趨于0,具有飽和性,即產生“梯度消失”現象,從而無法完成深層網絡的訓練。
ReLU 函數,全稱為 Rectified Linear Unit,其函數表達式為:f(x)=max( 0,x)。它是迄今為止應用最多的激活函數,由Hinton 等人于2010 年提出。之后,ReLU函數作為激活函數在圖像分類等問題上取得了不錯的成效。
從其表達式不難看出,ReLU 函數有以下優點:具有稀疏性,運算速度快,在正區間解決了Sigmoid 函數的“梯度消失”問題,導數計算簡單,模型收斂快。但是,ReLU 函數也有缺點:輸出為負值時特征無法激活,導致“神經元死亡”,降低了模型的實用性;同Sigmoid函數一樣存在“均值偏移”問題,影響梯度更新方向與模型收斂速度。
針對上述Sigmoid 函數和ReLU 函數存在的問題,受 Prajit Ramachandran 等關于Swish 函數[13]的研究工作的啟發,本文將Sigmoid 函數和ReLU 函數結合并加以改進,提出了一種改進的激活函數——RSLU,它較好地解決了Sigmoid 函數和ReLU 函數存在的“均值偏移”、硬飽和性以及“神經元壞死”問題,增強了模型的穩定性和有效性以及泛化性。
其表達式為:

其中,α表示梯度放大系數,取值范圍為[0 ,2];β表示梯度縮小系數,取值范圍為[- 2,0]。RSLU 函數的導數為:

RSLU 函數及其導數的圖像如圖1 所示。

圖1 RSLU激活函數
由式(2)可以得出,RSLU 函數是一個非線性函數,可以用在卷積神經網絡中充當激活函數.與其它激活函數不同的是,RSLU 函數中添加了兩個參數α和β。兩個參數的具體作用如下:
參數α是激活控制及梯度放大參數。如圖2 所示,參數β保持不變且為-0.5,參數α的取值分別為0.2,0.5,1.5。由圖 2 可知,參數α可以控制 RSLU 函數在負區域中被激活的特征,α越大,負區域上的特征被激活越多;同時,α作為梯度放大參數,可控制負區域被激活值的梯度更新值的大小,α越大,負區域的更新梯度值越大,有著放大梯度更新值的功能。

圖2 不同α 對應的函數及導數圖像
參數β是激活控制及梯度縮小系數。如圖3 所示為α=0.5 時參數β分別取-0.5,-0.2,-0.1 時f( )x的函數及其導數圖像.如圖3 看到的那樣,參數β越大,負區域中的被激活區域越小,即被激活的特征越少;并且,在梯度更新控制上,β的作用與α相反,即β越大,更新的梯度值越小,起到了收縮梯度更新值的作用。
綜上所述,當α保持不變時,RSLU 函數的導函數的值隨著β的增大而減小,此時我們可以通過增加參數β的值來放緩梯度更新的過程;當β保持不變時,RSLU 函數的導函數的值隨著α的增大而增大,而此時我們可以通過增加參數α的值來加快梯度更新的過程.并且,通過在訓練中調整α和β的值,可以合理地控制負區域被激活值的多少。這樣,通過調整參數α和β的值,就可以更好的控制分類算法運行的過程和速率,從而實現模型運行的穩定性和高效性.
同Sigmoid、ReLU 相比,本文提出的RSLU 函數有以下優點:
(1)通過 RSLU 的表達式和圖 1 可知,RSLU 函數在正負部都有取值,且輸出均值為0,解決了Sigmoid函數和RELU 函數都存在的非0 均值輸出即“均值偏移”問題,使梯度可以朝正負兩個方向更新,從而讓模型可以更好的收斂和運行;
(2)RSLU 函數為非飽和函數,即隨著參數的更新,函數不管取到何值,函數的梯度不會趨于0 或∞,從而解決了“梯度消失”問題,使得此激活函數可以用在深層神經網絡中;
(3)在RSLU 函數的負區域,加入了取值為( 0,1) 的微小梯度。在訓練中,通過控制α和β的取值,可以使負區域激活更多的特征值,從而更好地緩解了ReLU函數的“神經元死亡”現象,提高了數據的利用率;
(4)RSLU 中加入了兩個梯度更新控制參數α和β,可以更好地控制負區域的激活和梯度更新的過程,讓模型訓練過程變得可控,從而使模型的穩定性和實用性進一步增強。
為了驗證RSLU 函數在用于圖像分類的卷積神經網絡中的實際效果,采用深度學習框架TensorFlow 在MNIST 數據集上做了具體實驗。實驗通過在卷積神經網絡中比較不同激活函數表現,來對改進效果進行驗證。本節具體介紹了實驗實現的過程,并對實驗結果進行分析來驗證改進的有效性.以下實驗中,RSLU 函數中的參數α的初始值設為0.3,參數β的初始值設為-0.5。本實驗中,其他參數不變,只改變模型中激活函數層中的激活函數,來進行實驗并得到結果,且所有實驗結果均取五次實驗的平均值進行記錄。最終的實驗結果表明,改進的RSLU 函數相比于現有的激活函數,收斂速度更快,運行的時間較短,且可得到更高的分類精度。
實驗的操作系統為Windows10 64 位操作系統,使用的 CPU 是 Intel Xeon CPU E5-2620 v3@2.40GHz,顯卡為 NVIDIA Quadro K2200,基于 TensorFlow 框架,在idle 上進行開發和調試,分析了圖像分類的訓練時的損失值和分類精確率,通過最終的損失值下降曲線、準確率曲線以及模型運行時間來分析不同激活函數的性能。為了評估RSLU 激活函數,在MNIST 數據集上對比分析了 Sigmoid、ReLU、Leaky-ReLU、ELU 和 RSLU五種激活函數的具體表現,最后得出結論。
評測標準—損失值:損失值衡量了訓練完成后模型得到的預測值和真實值的差異程度,即損失值越小,預測值越接近真實值。本實驗中對于手寫數字體的分類屬于多分類問題,最后使用Softmax 層計算各個類別的概率,因此采用相對應的交叉熵損失函數cross-en?tropy,也稱為多分類對數損失函數,而根據此函數可得到訓練的損失值.這個損失函數根據Softmax 層得到的概率來計算損失值,其公式如下:

其中,pi表示為分類為第i類的概率預測值,exi表示Softmax 層中第i個神經元的輸出;Loss表示分類的損失值,也就是預測值和真實值的交叉熵,二者的交叉熵越大,則損失值越小,也即訓練的誤差越小;yi代表第i類的概率真實值,當為第i類時yi=1,不為第i類時yi=0。
評測標準—準確率:準確率表示訓練完成后進行測試時分類正確的圖像的比率,計算公式為:

其中,Acc代表分類的準確率,取值范圍為[0 ,1];nt表示分類正確的圖像的數量,n表示總的圖像數量。
本實驗采用卷積神經網絡作為圖像識別的神經網絡模型,模型中各層的設置及參數如圖4 所示。

圖4 本文實驗采用的卷積神經網絡結構圖
其中,conv 表示卷積層,卷積核大小為5×5,卷積步長為1,其中第一個卷積層卷積核的個數為32,第二個卷積層卷積核的個數為64;activation layer 表示激活層,在此層中激活函數對輸入的特征進行非線性激活,提升模型的非線性;pooling 表示池化層,本實驗中均采用窗口大小為2×2 的最大池化,步長為2;fc 代表全連接層,其中第一層神經元個數為1024,第二層神經元個數為10。同時,設置實驗的訓練輪數為1000 輪,每輪訓練的圖像數量即批尺寸為100,學習率設為0.0001,優化方法為AdamOptimizer。下面的實驗中,將會采用圖3 的卷積神經網絡模型進行圖像分類,并且通過在激活層應用不同的激活函數,對比分析現有激活函數和RSLU 激活函數的表現,驗證改進的有效性。
本文選用經典的MNIST 數據集進行實驗。MNIST數據集是一個用于手寫數字體圖像分類的圖像數據集,包含60000 張訓練圖片和10000 張測試圖片。在MNIST 數據集上,用上節提到的卷積神經網絡模型來引入現有的激活函數和本文改進的激活函數進行實驗并得出數據,進行比較與驗證。
在MNIST 數據集上利用圖4 的模型測試不同激活函數得到的實驗結果如表1 所示。根據表1 可得,提出的改進的激活函數RSLU 相對于其他四種已有的激活函數來說Loss值最低,而分類精度Acc值則最高。具體來說,在訓練集上,RSLU 的Loss值相比于Sigmoid 函數下降了約0.47,相比于ReLU 函數減少了約0.04,而對于現有的激活函數Leaky-ReLU 和ELU來說分別下降了約0.13 和0.10。并且,RSLU 的分類精度比Sigmoid 函數高了 19%,比 ReLU 函數高了1.94%,而相比于Leaky-ReLU 和ELU,精度分別提升了1.66%、3.28%,證明本文提出的改進RSLU 函數在卷積神經網絡的圖像分類問題中可以提高分類的精確率,且分類精度高于現有的激活函數。而在運行時間上,RSLU 函數也比較短,比最快的ReLU 函數僅多了1.55s,而比 Sigmoid 函數少 7.56s,證明 RSLU 函數可以提高分類效率。
圖5 是幾種激活函數在MNIST 實驗中的Loss變化曲線,其中EPOCH 為訓練的輪數。由圖5 可得,隨著訓練更新的次數的增加,Sigmoid 函數的Loss的減少幅度基本不變,且最后的值較大;ELU、Leaky-ReLU 的Loss變化情況類似,最終數值比Sigmoid 稍小;ReLU 函數比前三者的下降速度快,最后得到的值和ELU、Leaky-ReLU 相當;而RSLU 的Loss比其余所有激活函數減小的速度都快,且最終得到的Loss也最小。因此,可認為RSLU 函數在提高收斂速度、減少模型運行時間上來說是有效的。
圖6 為各激活函數在MNIST 上的分類準確率Acc變化曲線。總體來看,各激活函數的Acc變化情況與Loss變化情況類似,同樣RSLU 相比其他函數有著更快的準確率提升速度。從圖6 中的曲線可以看出,在分類準確率這一評測指標上,Sigmoid 函數表現最差,即分類精度較低;而ReLU、Leaky-ReLU、ELU 三者最終的準確率相比Sigmoid 函數來說有較大的提升,可達到0.93 以上;RSLU 函數相比其他函數來說準確率最高,比最高的ReLU 函數多了約0.02。因此,本文改進的激活函數RSLU 在卷積神經網絡的圖像分類問題中可以達到比現有激活函數更高的分類精度,也就意味著改進是有效果的。

表1 不同激活函數在(MNIST 上的實驗結果

圖5 MNIST實驗中各激活函數的Loss值曲線對比

圖6 MNIST實驗中各激活函數的準確率曲線對比
通過以上的實驗結果和實驗數據可以看出,改進的RSLU 函數在利用卷積神經網絡進行圖像分類的問題上,在同樣的網絡模型和數據中,相比于Sigmoid 函數、ReLU 函數以及現有的激活函數來說,分類損失值較小,分類精度較高,而且收斂速度較快,運行時間較短,性能優于現有的激活函數。由此可見,本文提出的改進的激活函數RSLU 改善了Sigmoid 函數和ReLU函數的“均值偏移”問題,加快了模型收斂速度,減少了模型運行時間;同時,改進了Sigmoid 函數的“梯度消失”問題和ReLU 函數的“神經元死亡”問題。加入兩個控制參數α和β,使模型可以學習利用更多數據,從而得到更高的分類精度,提升了模型的穩定性和可靠性,也使模型的總體性能得到了提升。綜上所述,本文對于激活函數的改進是有效的。
本文針對現有的激活函數Sigmoid 在利用卷積神經網絡進行圖像分類問題中的“梯度消失”問題以及ReLU 函數存在的“神經元壞死”問題,和二者共同存在的“均值偏移”現象影響模型收斂和運算的問題,提出了改進的具有雙參數控制的激活函數RSLU。通過在MNIST 數據集上對RSLU 函數以及現有激活函數進行了對比實驗,實驗結果表明,RSLU 函數有效地改善了二者的不足,加快了模型的收斂,提升了模型的分類精度,同時相比現有的激活函數性能也有所提高。
本文為今后深度學習網絡模型的發展及改進提供了一個可行的思路和方向,即通過改進網絡中的數據處理函數來提升網絡的性能。文中只提到了激活函數的改進,而進一步的研究工作可以對網絡中的損失函數、優化函數等來進行優化,同時激活函數的改進工作也可以推廣到目標檢測、語音識別等其他深度學習領域。