夏正新,蘇 翀
(1.南京郵電大學繼續(xù)教育學院,江蘇 南京 210042 2.南京郵電大學管理學院,江蘇 南京 210003 3.南京郵電大學醫(yī)療信息工程研究中心,江蘇 南京 210042)
深度神經網絡的出現(xiàn),對實際應用產生了深遠的影響,其已被廣泛應用于網絡流量監(jiān)控[1]、物聯(lián)網[2]以及醫(yī)學[3]等領域。 作為神經網絡的核心要素之一,激活函數(shù)在深度神經網絡的有效性和訓練動力學中起著核心作用。整流線性單元(ReLU)[4-6],因其工作原理簡單、計算效率高,被廣泛應用于深度學習領域。為了克服整流線性單元的“非零中心化”和“神經元壞死”等問題,Leaky ReLU[7]、指數(shù)線性單元(ELU)[8]和參數(shù)整流線性單元(PReLU)[9]被相繼提出,并在一定程度上取得了較好的效果。此外,借助光滑近似的思想,一些非線性激活函數(shù) Swish[10]和 Mish[11]脫穎而出,進一步提高了神經網絡的準確性和穩(wěn)定性。由于上述非線性激活函數(shù)飽和區(qū)范圍相對固定,限制了其擬合不同網絡模型和數(shù)據(jù)分布的能力。為此,本文提出了一種多參數(shù)學習的門控激活函數(shù),該函數(shù)使用多個參數(shù),在一定范圍內動態(tài)調節(jié)函數(shù)飽和區(qū),并通過實驗研究其適應不同網絡模型和數(shù)據(jù)分布的能力。
Swish激活函數(shù)抽象形式定義如下:f(x)=xσ(x)。 其中,σ(·) 是一個邏輯函數(shù),σ ∈ (0, 1);當σ(·)結果為1時,激活函數(shù)的輸出值為x,當σ(·)結果趨于0,則激活函數(shù)的輸出趨于0。這種1代表“開”,0代表“關”。具體應用于深度神經網絡時,Swish函數(shù)的具體形式如公式(1)所示。
式中,參數(shù)β被設計用于控制Swish激活函數(shù)的飽和區(qū)在一定范圍內波動,以期望獲得更好的泛化性能;參數(shù)β值既可以通過學習得到,也可以是一個由人工設定的超參數(shù)。
Mish激活函數(shù)抽象形式定義如下:f(x)=xσ(δ(x))。 其中,σ(·) 與 Swish 激活函數(shù)中的解釋一致;δ(x)代表一個非線性函數(shù)。同理可知:σ(·)是一個邏輯開關函數(shù)。應用于深度神經網絡時,Mish函數(shù)的具體形式如下。
與Swish函數(shù)相比,Mish函數(shù)使用了Tanh和softplus兩個函數(shù)來共同實現(xiàn)函數(shù)的門控機制,同時還巧妙地利用了Tanh函數(shù)的零中心對稱的特性,從而在更多的網絡模型和數(shù)據(jù)集上取得了相對更好的性能。
Swish和Mish函數(shù)已經被證明在較多的數(shù)據(jù)集上優(yōu)于包括ReLU函數(shù)在內的大多數(shù)激活函數(shù),這很大程度上歸功于其內在的“門控機制”。由式(1)和(2)可知,Swish激活函數(shù)使用的門控函數(shù)是sigmoid,而Mish激活函數(shù)使用的門控函數(shù)主要是Tanh和softplus;上述函數(shù)具體公式分別如式(3)和(4)所示。
目前,各種門控函數(shù)具有不同的優(yōu)點,但卻不能確定哪一個門控函數(shù)更加合理。其原因主要在于各種門控函數(shù)的飽和區(qū)范圍表達相對固定,其選擇更多地依賴于使用者的經驗。當激活函數(shù)所使用的門控函數(shù)恰好符合當前網絡模型和數(shù)據(jù)集的特征表達時,其效果會較好,反之,則效果會下降。
為解決上述問題,Swish函數(shù)引入參數(shù)β以期控制門控函數(shù)的飽和區(qū)范圍,由于未區(qū)分控制正值還是負值數(shù)據(jù),導致參數(shù)β控制不夠精細。此外,參數(shù)訓練范圍不可控會導致參數(shù)β的最小值和最大值之間差距過大,反而對網絡的性能造成負面影響。
結合式(3)和(4),這兩個門控函數(shù)都基于ex的指數(shù)函數(shù)。當x大于0時,無論是Swish激活函數(shù)還是Mish激活函數(shù)會把x映射到新的數(shù)值空間,且沒有丟棄原有數(shù)據(jù);而當x小于0時,激活函數(shù)中的指數(shù)函數(shù)ex會隨著x值的變化越變越小而趨于無窮小,從而導致激活函數(shù)會有選擇性地丟失一部分負值數(shù)據(jù)。這種丟棄原有數(shù)據(jù)的方式類似于神經網絡的DropOut機制[12],不同之處在于 DropOut是隨機選擇丟棄原有數(shù)據(jù),并不局限于正、負數(shù)據(jù),也不局限于數(shù)值的大小。綜上所述,Swish和Mish函數(shù)正是依靠這種門控機制實現(xiàn)了神經網絡對于非線性表達的要求。
另外,ReLU函數(shù)僅提取正值數(shù)據(jù)進行網絡訓練,同時丟棄負值數(shù)據(jù),從而導致神經元的部分激活,以期實現(xiàn)非線性轉換。從理論上講,正、負值數(shù)據(jù)對應的特征信息是同等重要的,ReLU函數(shù)這種機制會丟失部分特征信息,會導致“神經元壞死”等問題,且在一定程度上降低了深度神經網絡的性能。為了解決這個問題,Leaky ReLU[7]、指數(shù)線性單元(ELU)[8]和參數(shù)整流線性單元(PReLU)[9]被相繼提出,并在一定程度上取得了較好的效果。此外,上述激活函數(shù)還使用了可學習的參數(shù)或者超參數(shù),以調整負值數(shù)據(jù)的分布,但由于參數(shù)訓練的范圍無法控制,使其對網絡的性能改進非常有限。
綜上所述,可以看出上述激活函數(shù)都會丟棄或者部分丟棄輸入x小于零所對應的負值數(shù)據(jù);而負值數(shù)據(jù)對于整個深度神經網絡的訓練是有作用的。為此,提出一個多參數(shù)學習的門控激活函數(shù),期望通過引入參數(shù)訓練范圍可調這一創(chuàng)新機制,在一定范圍內動態(tài)調節(jié)激活函數(shù)的飽和區(qū),以期緩解負值數(shù)據(jù)的丟棄問題,進而優(yōu)化深度神經網絡,提高其性能。最終實驗結果表明:所提出的這種參數(shù)訓練范圍可調的門控激活函數(shù)可取得相對更好的性能。
式中,σ(·)為Tanh函數(shù),δ(·)為一個分段的邏輯函數(shù),具體的定義為
由式(5)和(6)可知,Mpish函數(shù)也屬于一種門控機制激活函數(shù),不同之處在于:門控機制由α1、α2、β 三個參數(shù)來控制,其中 α1、α2為可訓練參數(shù),分別控制兩端飽和區(qū)的映射范圍,具體分別如圖1和圖2所示。β參數(shù)是建立在α2參數(shù)基礎上的一個超參數(shù),范圍一般在[0,0.5]之間選擇,可以根據(jù)不同的網絡模型和數(shù)據(jù)集由人工設定,具體如圖3所示。β參數(shù)的作用類似于殘差網絡[11],用于緩解梯度消失和網絡退化等問題。此外,超參數(shù)β可根據(jù)當前網絡模型的實際情況,決定是否對激活函數(shù)的負值數(shù)據(jù)進行一個類似殘差網絡的直接映射方式,使得原本要被丟棄的負值數(shù)據(jù)能夠繼續(xù)向下傳遞,進而改善由于丟棄負值對神經網絡造成的負面影響。
圖1 Mpish函數(shù)在參數(shù)α1不同取值下的波形圖
圖2 Mpish函數(shù)在參數(shù)α2不同取值下的波形圖
圖3 Mpish函數(shù)在參數(shù)β不同取值下的波形圖
Mpish與Swish和Mish函數(shù)圖像類似,其無上界、平滑、非單調等特性對激活函數(shù)效果的提高有著重要作用。與Swish和Mish函數(shù)不同的是,Mpish函數(shù)具有下界可調性,即函數(shù)有無下界是由超參數(shù)β來控制的;當β=0時,Mpish函數(shù)下有界,β>0時,則無下界。當激活函數(shù)下有界時,會產生很強的正則化效果;而當激活函數(shù)下無界時,可以避免梯度消失問題。此外,Mpish函數(shù)的β參數(shù)既可以使得Mpish函數(shù)可以根據(jù)情況選擇下有界或下無界,也可以變相調節(jié)激活函數(shù)的非線性程度,有助于其適應更多復雜情況。為了研究各參數(shù)對Mpish函數(shù)波形圖的影響,這里需預先固定其他參數(shù)的值,具體取值僅是為了展示Mpish函數(shù)波形圖受當前參數(shù)的影響,并無其他特殊意義。圖1給出了Mpish函數(shù)在參數(shù)α1不同取值下的函數(shù)波形圖,變化主要體現(xiàn)在函數(shù)的右端飽和區(qū)。圖2則對應于Mpish函數(shù)在參數(shù)α2不同取值下的函數(shù)波形圖,變化主要體現(xiàn)在左端飽和區(qū)。圖3顯示了Mpish函數(shù)下界在參數(shù)β不同取值下的波形圖。圖4和5分別給出了Mpish在多個參數(shù)取不同值情況下與Swish和Mish的圖形對比。如圖4和5所示,當β>0函數(shù)是無下界的。當激活函數(shù)有界時,會產生較強的正則化效應;而當激活函數(shù)無界時,通過在可控范圍內調整激活函數(shù)的飽和區(qū),可以緩解神經網絡在飽和區(qū)范圍內而導致的梯度消失問題,從而使得神經網絡能夠取得更好的性能。因此,相較于Relu、Swish和Mish,Mpish能夠適應更多復雜情況。
圖4 Mpish函數(shù)在多個參數(shù)取不同值情況下與Swish的對比波形圖
圖5 Mpish函數(shù)在多個參數(shù)取不同值情況下與Mish的對比波形圖
由于參數(shù)訓練過程的不可控性,包括網絡模型和數(shù)據(jù)分布的影響,會導致可訓練參數(shù)α1、α2的上下限失去控制,偏差增大,進而導致深度神經網絡運行結果會出現(xiàn)不穩(wěn)定的情況。為此,設計一個參數(shù)訓練范圍控制函數(shù),目的是將參數(shù)值的訓練控制在一個特定的范圍內,其形式如式(7)所示。
該控制函數(shù)類似高斯函數(shù),其產生的波形如圖6所示。其中,x表示可訓練參數(shù)值(橫坐標),a控制波形的寬度,使得訓練參數(shù)能在一個適當?shù)姆秶鷥瓤焖偈諗康胶线m的輸出值(縱坐標)。b和c值控制了訓練參數(shù)輸出值的范圍,其中b控制波形的峰值高度,即控制參數(shù)輸出的最大值;c控制參數(shù)的起始值,即控制參數(shù)輸出的最小值。
圖6 參數(shù)訓練范圍控制函數(shù)波形圖
2.4.1 實驗設置
(1)實驗數(shù)據(jù)集。本實驗選用 CIFAR?10和CIFAR?100作為實驗數(shù)據(jù)集。(2)網絡模型。本實驗 分 別 采 用: ResNet?50[13]、 DenseNet?121[14]、MobileNet[15]、 SqueezeNet[16]和 Se ResNet?18[13]。(3)激活函數(shù)。 本實驗選擇 Relu、Swish、Mish這3個具有代表性,且性能優(yōu)良的激活函數(shù)作為基線激活函數(shù)進行比較。(4)實驗參數(shù)設置。本實驗使用BatchNorm[17]來減少對初始化數(shù)據(jù)的依賴性,迭代epochs=100,批數(shù)據(jù)尺寸 batch_size=128,學習率learning_rate = 0.001,優(yōu)化器使用的是 Adam[18-19]。(5)性能比較。為了考察激活函數(shù)的準確性和穩(wěn)定性,每個激活函數(shù)所在的網絡和數(shù)據(jù)集上各運行5次,每次迭代運行100輪,將5次的最后10輪迭代(91~100輪)的準確率的均值作比較。(6)實驗環(huán)境。軟件環(huán)境使用的是python3.9和Anaconda集成平臺,硬件環(huán)境使用圖形加速卡型號是RTX 3090(24 G顯存)單塊。 處理器是intel(R) Xeon(R) Gold 5218R CPU@2.10 GHz X2,服務器內存是256 GB。
2.4.2 實驗結果及分析
(1) 準確率
由表 1和表 2的結果可知,ReLu函數(shù)在DenseNet?121網絡上的準確率較高,接近或超過了Mish和Swish函數(shù),而在其他網絡模型上的準確率則是最低的;Mish和Swish函數(shù),除了DenseNet?121網絡,在其他網絡模型上準確率都要強于ReLu函數(shù);Mish函數(shù)準確率在大多數(shù)網絡上都要強于Swish函數(shù);Mpish函數(shù)的準確率則全面超越其他基線激活函數(shù)。
表1 在CIFAR?10上,4個激活函數(shù)對應網絡模型的Top?1準確率 %
表2 在CIFAR?100上,4個激活函數(shù)對應網絡模型的Top?1準確率 %
(2)可控參數(shù)訓練范圍設置
表3和表4分別列出了Mpish激活函數(shù)在CIFAR?10和 CIFAR?100數(shù)據(jù)集上,各網絡模型中的參數(shù)訓練范圍;其中,α1和 α1按照式(7)計算。值得注意的是,表1和表2的結果則是表3和表4中所列出的α1、α2和β這3個參數(shù)聯(lián)合訓練的結果。另外,表中x=0.5(可訓練)表示x的初始值設置為0.5,隨著學習過程的不斷迭代,會不斷調整其值;其他類似表達式的含義以此類推。
表3 在CIFAR?10上,各網絡模型的可控參數(shù)訓練范圍設定
表4 在CIFAR?100上,各網絡模型的可控參數(shù)訓練范圍設定
(3)激活函數(shù)在深度神經網絡中的穩(wěn)定性
為了觀察網絡層數(shù)對準確率的影響,本實驗假設在保持其他參數(shù)不變的情況下,在MNIST數(shù)據(jù)集上訓練了層數(shù)不同的全連接網絡。網絡中每層有500個神經元,無殘差網絡連接,使用BatchNorm來減少對初始化數(shù)據(jù)的依賴性,DropOut設為25%,優(yōu)化方法使用隨機梯度下降SGD[20],batch size=128,每個激活函數(shù)均使用相同的學習率。Mpish函數(shù)的可控參數(shù)設置為:α1= (e-x?x?4+0) + 0,x = 0.5( 可訓練)。 y =(e-x1?x1?4+0) - 1,α2= (e-x2?x2?4+y) + 1, 其 中x1= 1.0(可訓練),x2= 1.0(可訓練),β = 0.2。如圖7所示,ReLU、Mish、Swish和Mpish這4個激活函數(shù)分別從第12層到第30層的網絡進行訓練,隨著網絡層數(shù)的不斷增加,4個激活函數(shù)準確率下降的速度快慢不一;其中,ReLU函數(shù)隨著網絡層數(shù)的增加,準確率下降的幅度最大;Mish函數(shù)準確率下降的幅度比Swish函數(shù)要更小一些,從第21層開始,Swish函數(shù)下降的幅度比Mish函數(shù)要更大;而Mpish函數(shù)則隨著網絡層數(shù)的增加,一直保持較高的準確率且下降的幅度最小,一直到第30層時,仍然保持較高的準確率。該結果表明Mpish函數(shù)相較于其他激活函數(shù),在大型網絡中表現(xiàn)得更穩(wěn)定、性能更好。
圖7 4個激活函數(shù)在各網絡深度下的準確率
(4)激活函數(shù)的時間成本
表5以CIFAR10數(shù)據(jù)集為基礎,在5個網絡模型中,對比了Mpish函數(shù)與其他激活函數(shù)的時間成本。為了方便比較,實驗結果只保留整數(shù)位。從表5中可以看出ReLu函數(shù)的時間成本最低,這與其僅保留正值數(shù)據(jù)有關;Mish和 Swish函數(shù)的時間成本接近;而Mpish函數(shù)的時間成本則相較于其他激活函數(shù)要高;其原因在于:Mpish函數(shù)中使用了多個可訓練參數(shù),且隨著數(shù)據(jù)集中數(shù)據(jù)分布復雜程度的提高和神經網絡層數(shù)的增加,時間成本會有相應的增加。因此,當數(shù)據(jù)分布復雜和神經網絡層數(shù)較深時,會耗費相對較多的時間;但從時間成本增加的幅度和綜合考慮準確率等性能指標時,時間成本的增加在可以接受的范圍內。
表5 各個激活函數(shù)在不同網絡中的時間成本 s
Mpish作為一個多參數(shù)學習的門控激活函數(shù),與Mish、Swish和ReLU函數(shù)相比,可以有效提高深度神經網絡的性能,表現(xiàn)出較強的魯棒性和較高的穩(wěn)定性。未來,將進一步優(yōu)化Mpish激活函數(shù),以期進一步降低其時間成本。