孫克雷,虞佳明,孫 剛
(1.安徽理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽淮南232001;2.阜陽(yáng)師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院,安徽阜陽(yáng)236037)
在近年來(lái)機(jī)器學(xué)習(xí)的熱潮中,深度學(xué)習(xí)無(wú)疑是最令人矚目的方向,它通過(guò)模仿人類大腦的工作原理來(lái)使機(jī)器能夠像人類一樣來(lái)理解判斷圖像、語(yǔ)音和文本等數(shù)據(jù)。目前,深度學(xué)習(xí)的技術(shù)在工程和科學(xué)領(lǐng)域是不可或缺的,例如機(jī)器人,汽車工程,網(wǎng)絡(luò)信息學(xué),生物信息學(xué)等。在深度學(xué)習(xí)框架中存在一些神經(jīng)網(wǎng)絡(luò),如用于識(shí)別物體圖像的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[1-2];用于處理時(shí)間序列數(shù)據(jù)的循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)[3],等等。適當(dāng)選擇神經(jīng)網(wǎng)絡(luò)的激活函數(shù)是深度學(xué)習(xí)模擬的關(guān)鍵因素。目前,Nair 等[4]提出的ReLU 激活函數(shù)是神經(jīng)網(wǎng)絡(luò)中比較常用的激活函數(shù)。而且眾多的學(xué)者在ReLU 函數(shù)的基礎(chǔ)上提出了不少新的激活函數(shù),如鄭宗生等[5]提出的T-ReLU 激活函數(shù),王紅霞等[6]提出的組合激活函數(shù)relu-softsign,He 等[7]針對(duì)損失函數(shù)對(duì)坡度因子不可導(dǎo)的特性提出的參數(shù)修正線性單元(parametric ReLU,PReLU)等等。
Softplus 函數(shù)作為ReLU 函數(shù)的平滑版本,但作為激活函數(shù)應(yīng)用在卷積神經(jīng)網(wǎng)絡(luò)中效果并不好。本文針對(duì)Softplus 函數(shù)作為激活函數(shù)效果不理想問(wèn)題,提出對(duì)Softplus 函數(shù)進(jìn)行參數(shù)修正。通過(guò)參數(shù)調(diào)節(jié)緩解Softplus 函數(shù)的均值偏移問(wèn)題和梯度消失現(xiàn)象,從而提高Softplus 函數(shù)在神經(jīng)網(wǎng)絡(luò)中的性能。
ReLU 是一個(gè)分段函數(shù),其函數(shù)圖像如圖1 中實(shí)線所示。函數(shù)如下:
其導(dǎo)數(shù)為:
圖1 ReLU 和Softplus 函數(shù)曲線
當(dāng)x>0 時(shí),ReLU 的導(dǎo)數(shù)為1,因此在x>0 時(shí)它的梯度不會(huì)出現(xiàn)衰減,可有效地緩解梯度消失的現(xiàn)象。
ReLU 函數(shù)在x≤0 的部分輸出均為0,使得神經(jīng)網(wǎng)絡(luò)訓(xùn)練中不會(huì)激活全部的神經(jīng)元,具有一定的稀疏特性。這種強(qiáng)制性的稀疏特性可以屏蔽一些不必要的特征,使得后面的計(jì)算變得快速高效。但同時(shí)在輸入落入x≤0 區(qū)域時(shí),會(huì)使得神經(jīng)網(wǎng)絡(luò)中相應(yīng)神經(jīng)元的權(quán)值無(wú)法進(jìn)行更新。最后神經(jīng)元的梯度會(huì)永遠(yuǎn)變成0,不會(huì)在對(duì)任何數(shù)據(jù)有激活作用,即出現(xiàn)神經(jīng)元死亡,導(dǎo)致計(jì)算的結(jié)果不收斂。此外強(qiáng)制的稀疏處理會(huì)屏蔽一部分的有效特征,導(dǎo)致模型學(xué)習(xí)到有用的特征比較少。而且,ReLU 函數(shù)整體的輸出均值大于0,無(wú)法緩解均值偏移現(xiàn)象。
Softplus 函數(shù)是由Glorot 等[8]提出的ReLU 函數(shù)的近似平滑版本。它是非線性的,且在定義域內(nèi)是連續(xù)可微函數(shù),變化比較平緩。與Sigmoid系函數(shù)比更加符合生物神經(jīng)元信號(hào)激活原理,還避免了ReLU 函數(shù)由于強(qiáng)制稀疏性帶來(lái)的缺點(diǎn)。函數(shù)圖像如圖1 中虛線所示,函數(shù)如下:
從圖1 中可以看出,Softplus 函數(shù)對(duì)于小于0的部分抑制和大于0 的部分激活。它在這兩部分上是連續(xù)可導(dǎo)的,使得梯度可以在定義域內(nèi)傳播,更接近生物特性。然而Softplus 和ReLU 一樣是非零均值的,導(dǎo)致輸出平均值為正數(shù),影響模型的收斂速度和效果,并且在輸入趨于負(fù)無(wú)窮時(shí),會(huì)出現(xiàn)梯度消失現(xiàn)象。
根據(jù)文獻(xiàn)[9]所提出的“輸出均值接近零的激活函數(shù)能夠提升神經(jīng)網(wǎng)絡(luò)性能”原理,本文結(jié)合該原理對(duì)Softplus 進(jìn)行改進(jìn),提出了基于參數(shù)修正的激活函數(shù)PSoftplus(Parametric Softplus)。
在定義域中Softplus 的輸出都是為正的,使得Softplus 的輸出平均值恒大于0,存在均值偏移現(xiàn)象。針對(duì)偏移現(xiàn)象做出改進(jìn),首先將Softplus函數(shù)沿x軸向下平移β個(gè)單位,使得Softplus 的輸出均值在一定程度上接近于零,這樣可以在一定程度上緩解均值偏移現(xiàn)象。然后設(shè)坡度因子α對(duì)調(diào)整后的函數(shù)整體進(jìn)行修正,減緩在訓(xùn)練過(guò)程中出現(xiàn)梯度消失/溢出現(xiàn)象。改進(jìn)過(guò)后的PSoftplus 函數(shù)如下:
其中:參數(shù)β用來(lái)調(diào)節(jié)負(fù)數(shù)輸入時(shí)的輸出,當(dāng)β的值越大時(shí),此時(shí)輸出的均值就越接近于零;參數(shù)α在函數(shù)的正數(shù)部分和負(fù)數(shù)部分起不同的作用,在x>0 時(shí)是調(diào)節(jié)函數(shù)正數(shù)部分的坡度,α的值越大,函數(shù)圖像的正數(shù)部分的曲線的坡度越陡,在深度學(xué)習(xí)中這樣容易導(dǎo)致梯度溢出;在x<0 時(shí)會(huì)影響函數(shù)負(fù)數(shù)部分的達(dá)到飽和的位置,此時(shí)α的值越小,函數(shù)的飽和點(diǎn)會(huì)越靠近零點(diǎn),在訓(xùn)練時(shí)就越容易導(dǎo)致梯度消散。
為保證改進(jìn)后的函數(shù)是以零點(diǎn)為中心的,需保證在x=0 時(shí),函數(shù)的輸出也同樣為零,即有:
式(5)中,參數(shù)α是一個(gè)恒大于零的數(shù)。由此計(jì)算出參數(shù)β=ln 2。
在卷積神經(jīng)網(wǎng)絡(luò)的后向傳播的過(guò)程中,在經(jīng)過(guò)多次的非線性變換后,傳遞到網(wǎng)絡(luò)底層的梯度會(huì)變大或變小,變化的速度由激活函數(shù)導(dǎo)數(shù)為底、以非線性變換層數(shù)為指數(shù)的冪的值決定[11]。由此可設(shè)網(wǎng)絡(luò)的非線性變換的次數(shù)為n,則網(wǎng)絡(luò)的梯度變化速度Vgrad為:
為緩解訓(xùn)練時(shí)梯度傳播時(shí)出現(xiàn)消失/溢出現(xiàn)象,則必須要保證梯度在傳遞過(guò)程中的速度不能太快。在式(6)基礎(chǔ)上,通過(guò)多次實(shí)驗(yàn)對(duì)參數(shù)α取值進(jìn)行交叉驗(yàn)證,確定最優(yōu)的α=1.5,式(4)即為:
驗(yàn)證PSoftplus 函數(shù)比Softplu 函數(shù)的輸出均值更接近于零,可以設(shè)函數(shù)輸入值的概率模型為θ(x,ω),x為函數(shù)輸入,ω為輸入x的概率。設(shè)x+為正數(shù)輸入,x-為負(fù)數(shù)輸入。可以得到輸出均值mpsofiplus和msoftplus為:
顯然,在式(8)、(9)中ω為正,所以Softplus 的輸出均值msoftplus始終為正;在式(8)中的第一項(xiàng)為正數(shù),第二項(xiàng)為負(fù)數(shù),在一定程度上可以修正輸出均值接近于零。因此,相比于Softplus 函數(shù),PSoftplus 函數(shù)的輸出均值更加接近零。如圖2 所示,Softplus 為虛線,PSoftplus 函數(shù)為實(shí)線。
為驗(yàn)證本文提出的改進(jìn)的激活函數(shù)PSoftplus在卷積神經(jīng)網(wǎng)絡(luò)中的效果。在數(shù)據(jù)集MNIST、CIFAR-10 和CIFAR-100 上分別使用常用的激活函數(shù)進(jìn)行訓(xùn)練和驗(yàn)證。
圖2 Softplus 和PSoftplus 函數(shù)曲線
首先在MNIST 數(shù)據(jù)集上訓(xùn)練搭建好的CNN模型。通過(guò)多次構(gòu)建模型進(jìn)行實(shí)驗(yàn)比較得出,由于MNIST 數(shù)據(jù)集簡(jiǎn)單,只需要使用三層卷積的模型和50 次的迭代訓(xùn)練就可以達(dá)到期望的效果。在驗(yàn)證集上的準(zhǔn)確率如圖3 所示。
圖3 MNIST 上驗(yàn)證準(zhǔn)確率
從圖3 可以看出,使用PSoftplus 函數(shù)在簡(jiǎn)單的手寫字符MNIST 數(shù)據(jù)集上的識(shí)別準(zhǔn)確率比使用Softplus 函數(shù)的識(shí)別準(zhǔn)確率提升了2.2%。在MNIST 數(shù)據(jù)集上的驗(yàn)證準(zhǔn)確率和損失如表1 所列,我們的方法最后的效果與其它激活函數(shù)的效果對(duì)比還是令人滿意的,取得了98.69%的準(zhǔn)確率和0.514 7 的損失。
表1 MNIST 上準(zhǔn)確率和損失
CIFAR-10 和CIFAR-100 數(shù)據(jù)集是比較復(fù)雜的圖像數(shù)據(jù)集,對(duì)模型的架構(gòu)需要重新設(shè)計(jì)。在建立包含不同卷積層數(shù)的模型進(jìn)行實(shí)驗(yàn)對(duì)比之后得出,使用具有六層卷積層的模型能夠保證在訓(xùn)練的過(guò)程中獲得足夠的特征,避免模型出現(xiàn)過(guò)擬合和欠擬合問(wèn)題。只需要使用具有6 層卷積的模型和100 次迭代訓(xùn)練就可以得到期望的效果,在兩個(gè)數(shù)據(jù)集的驗(yàn)證集上的驗(yàn)證準(zhǔn)確率如圖4 和5。
圖4 CIFAR-10 上驗(yàn)證準(zhǔn)確率
圖5 CIFAR-10 上驗(yàn)證準(zhǔn)確率
從圖4 和圖5 可以看出,改進(jìn)后的激活函數(shù)的效果比Softplus 函數(shù)的要好的多。在CIFAR-10 數(shù)據(jù)集上,改進(jìn)后的函數(shù)的驗(yàn)證準(zhǔn)確率比Softplus 函數(shù)提高了5.73%。在CIFAR-100 數(shù)據(jù)集上,改進(jìn)后的激活函數(shù)的的驗(yàn)證準(zhǔn)確率比Softplus函數(shù)提高了8.21%。如表2、3 中所列,改進(jìn)后的激活函數(shù)在CIFAR-10 和CIFAR-100 數(shù)據(jù)集上的驗(yàn)證準(zhǔn)確率分別達(dá)到了90.35%和67.24%。
綜合在三個(gè)數(shù)據(jù)集上的對(duì)比結(jié)果,PSoftplus函數(shù)均取得了良好的效果。
表2 CIFAR-10 上準(zhǔn)確率和損失
表3 CIFAR-100 上準(zhǔn)確率和損失
為提高Softplus 函數(shù)的效果,我們提出了一種基于改進(jìn)Softplus 激活函數(shù)的卷積神經(jīng)網(wǎng)絡(luò)模型。根據(jù)“輸出均值接近零的激活函數(shù)可以提升神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)性能”原理,主要進(jìn)行了如下兩方面的改進(jìn)。
(1)首先,通過(guò)將Softplus 函數(shù)的輸出向下平移一定的距離,達(dá)到緩解均值偏移現(xiàn)象的效果;
(2)然后對(duì)平移過(guò)后的函數(shù)輸出乘以一個(gè)參數(shù)調(diào)整函數(shù)在正數(shù)部份的坡度和負(fù)數(shù)部分的飽和點(diǎn)位置,以緩解在訓(xùn)練過(guò)程中出現(xiàn)的梯度消失/溢出現(xiàn)象。
實(shí)驗(yàn)結(jié)果表明在使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像識(shí)別方面,與原始的Softplus 函數(shù)相比,改進(jìn)的函數(shù)取得了很好的結(jié)果;與ReLU 及其改進(jìn)單元相比,改進(jìn)的函數(shù)也取得了不錯(cuò)的效果。但在本文中使用的兩個(gè)參數(shù)并不是經(jīng)過(guò)訓(xùn)練得到的,可能并不是最好的參數(shù)選擇。未來(lái)將致力于對(duì)參數(shù)選取方面進(jìn)行更進(jìn)一步的改進(jìn)。