劉小文,郭大波,李 聰
(山西大學 物理電子工程學院,山西 太原 030006)
卷積神經網絡是深度學習中模仿人腦神經網絡處理信息的一種學習網絡,可以用于大型圖像處理.在生物神經網絡中[1],神經元通過樹突接收來自其他神經元的信號,各樹突接收信號的權重(突觸權值)不同,神經元接收的信號來自于各樹突接收的信號與其權重的乘積之和.卷積神經網絡采用權值共享網絡結構使之更類似于生物神經網絡,同時模型的容量可以通過改變網絡的深度和廣度來調整,從而對自然圖像也具有很強的處理能力[2].
對于卷積神經網絡的研究,自2006年Hinton等[3]在Science 上提出了深度學習,許多學者從不同的方向都有所創新.有基于構建圖像表示方法研的CNN圖像分類方法研究[4],有基于自適應學習率的研究[5],有將dropout層運用于池化階段的方法[6],有致力于預訓練與隨機初始化模型[7],這些方法都在一定程度上提高了卷積神經網絡的表達能力.本文主要研究在圖像分類問題上,激活函數的優化對提高分類準確率和降低損失率的影響.
對于一個單層的感知機,可以很容易地完成一個二分類的運算,如圖 1 所示.
圖 1 中y=w1x1+w2x2+b.


圖 2 含激活函數的單層感知機Fig.2 Single layer perceptron with activation function
圖 2 中a=w1x1+w2x2+b,y=σ(a).
這樣輸出值由于經過激勵函數σ(a),就可以處理非線性的分類問題,多層感知器的情況同上.
激活函數是指把激活的神經元的特征通過非線性函數把特征保留并映射出來,這就是神經網絡能解決非線性問題的關鍵所在[12].實際就是在卷積神經網絡中起到決定信號能否傳遞的作用.在卷積神經網絡中,當網絡具有的是線性屬性,那么函數的線性方程及其組合也僅僅有線性表達的能力,網絡的多層就沒有了意義,相當于只有一個隱藏層的線性網絡.使用激活函數增加了神經網絡模型的表達能力,使其可以運用到眾多的非線性網絡模型中,深度神經網絡也才真正具有了人工智能的意義[13].
常見的飽和非線性激活函數包括Sigmoid函數(如圖 3)和雙曲正切函數Tanh函數(如圖 4).

圖 3 sigmoid函數Fig.3 sigmoid function

圖 4 tanh函數Fig.4 tanh function
經過研究發現,這兩個激活函數存在較大缺陷.Sigmoid的缺陷是梯度消失和計算成本昂貴.當Sigmoid函數趨近于0或1時,梯度趨近于0.即當進行反向傳播時,輸出值接近0或1的神經元會達到飽和狀態,因此神經元的權重不會更新,與此類神經元相鄰的神經元的權值也會更新得很慢,出現梯度彌散問題.當有多個神經元出現這種情況時,網絡將無法執行反響傳播.同樣,Tanh的缺陷也是有“殺死”梯度的可能性.
為了解決這種激活函數的缺陷問題,近幾年有學者提出了近似生物神經的ReLU函數(如圖 5)及其變體PReLU函數(如圖 6).

圖 5 Relu函數Fig.5 Relu function

圖 6 PRelu函數Fig.6 PRelu function
ReLU函數有效解決了Sigmoid函數的梯度消失問題,但依然存在均值偏移的缺點[14].在前項傳導過程中,當x<0時神經元保持非激活狀態,并且在后向傳導中“殺死”梯度,網絡無法學習.而PReLU函數就解決了ReLU函數在x負半軸為0的問題,其負半軸斜率系數α可以由學習得到,它具有無神經元死亡和收斂速度更快的問題.圖 6 展示了x<0時兩種不同的α系數的圖像函數.
但是,在訓練過程中發現,隨著訓練次數的增多,神經網絡容易出現震蕩、 不收斂甚至過擬合的情況,導致訓練結果嚴重失真.就此問題,提出了一種ReLU函數的變體ReLU閾值函數.通過在caltech101數據模型上多次的對比訓練,發現ReLU閾值函數表現穩定,在提高收斂的基礎上,對于測試集的準確率也有一定提升.
改進的ReLU閾值激活函數在原來ReLU激活函數的基礎上對于輸入的x有了限制,不是一味地學習所有的值,而是當達到一定范圍時,函數就會“dead”,不再學習,這樣避免了過擬合的情況.其中x取何值時函數會“dead”,需要根據不同的數據集訓練確定.用圖 7 示例,當x≥10時函數的導數為0,函數在此區間不再有學習訓練數據的特征,將此函數定義為ReLU10函數.

圖 7 ReLU10函數Fig.7 ReLU10 function
實驗平臺簡介: PC機(Ubuntu操作系統),處理器Inter Core i7, 顯卡型號Tesla K40C,12 G顯存,caffe深度學習框架.
首先用Alexnet網絡模型對caltech101數據集進行訓練,將網絡中的激活函數分別用幾種經典的激活函數取代,調節合適的學習率后訓練數據,訓練結果如圖 8 和圖 9 所示.

圖 8 訓練準確率結果Fig.8 Test-accuracy result

圖 9 訓練損失結果Fig.9 Test-loss result
其中,ReLU10是指當x≥10時,令y′=0,圖像如圖 7 所示.由訓練結果發現,改進的ReLU閾值函數雖然訓練速度略慢,但是收斂性卻是最好的,而且測試集的準確率也能達到最大.各激活函數訓練的最大準確率和最小損失數據見表 1.

表 1 不同激活函數的訓練結果比較
為了保證實驗的準確性,將含有ReLU閾值函數的Alexnet網絡模型[15]用于訓練caltech256數據集.經過對比實驗發現,閾值在x=25時表現最為優秀,函數圖像如圖 10 所示,訓練結果如圖 11 和圖 12 所示.實驗表明,此激活函數不僅提高了測試集的分類準確率,而且結果更收斂,波動最小.各激活函數訓練的最大準確率和最小損失數據見表 2.

圖 10 ReLU25函數Fig.10 ReLU25 function

圖 11 訓練準確率結果Fig.11 Test-accuracy result

圖 12 訓練損失結果Fig.12 Test-loss result

最大準確率最小損失ReLU0.6545.435ReLU100.7411.260ReLU200.9020.503ReLU250.9230.496ReLU300.9030.634
本文提出了一種改進的激活函數——ReLU閾值函數,應用于卷積神經網絡后對數據集caltech101和caltech256進行訓練,在準確率和收斂性上較經典的激活函數都有較大優化,其中閾值為25時表現最佳,有效地避免神經網絡出現震蕩、 不收斂甚至過擬合的情況,提高了網絡的穩定性.