甘桃菁,朱文斌
(華南理工大學工商管理學院,廣東廣州 510000)
近年來,深度學習網絡在機器翻譯[1]、圖像分類[2]等領域都有很好的表現。但是深度學習網絡具有復雜結構,有數量眾多的節點和參數,面臨著過擬合的問題。Dropout 是由Hinton 等人[3]提出的一種正則化算法,通過隨機丟失一些網絡節點,將節點的輸出置為0,以減輕過擬合問題。名詞dropout指將神經網絡中的神經元去除,同時也會暫時移除該神經元的所有輸入和輸出連接。
在一個完全連接的神經網絡中,一層網絡的定義如下:
其中,φ是一個非線性激活函數,如ReLU、tanh和sigmoid 等。xj是一個神經元的輸出,y是該層神經元的輸出,w和b分別是權重和偏差。
若增加標準的dropout,則一層的定義如下:
每個rj服從概率為p的伯努利分布,其值為0 或1。使用rj對每一個神經元的輸出xj進行控制。只有當rj=1時,該神經元才會輸出,否則為0。
在圖1 中,網絡一為標準的神經網絡。網絡二是在網絡一的基礎上運用dropout,丟棄左邊的輸入節點,此節點的輸出連接均失效。網絡三是在網絡二的基礎上再丟棄隱藏層的兩個節點,此兩個節點的輸入和輸出連接都失效,無法再傳輸任何信息。

圖1 標準網絡和運用dropout后的網絡示例圖

圖2 變領域搜索算法的示例圖

圖3 使用變領域搜索的思想看Dropout
自從dropout提出以來,它已經被成功地應用于許多深度學習模型[4-5]。人們也基于dropout 提出許多變體[6-9]。Dropout在訓練網絡的每次迭代中,會以概率p隨機丟棄節點。因此有學者提出自適應調整丟棄率p的方法[6],不需要再提前固定概率p。Wan 等人[8]提出DropConnect,不再是隨機丟棄某個神經元,而是隨機丟棄某個神經元的某個連接權重。
為了探究Dropout 良好表現的原因,各個研究者從不同的角度對其進行分析。Wager等人[10]將dropout視為一種自適應L2 正則化技術,并提出dropout 和自適應優化算法AdaGrad[11]相關。還有一些研究試圖用不同的理論去解釋dropout。Gao 和Zhou[12]表明dropout 可以幫助降低深層神經網絡的拉德馬赫復雜性。而Gal 等人[13]則從貝葉斯的角度討論dropout,把它當作深度高斯過程的近似。
在dropout 被提出的原始論文中,Hinton 認為dropout 隨機使一些神經元的輸出變為0,打破神經元之間的固定聯系,可以防止神經元之間的協同適應[3-5]。協同適應可以解釋為一個過程,通過這個過程,多個節點的表現會趨向一致,互相之間更加依賴。這種現象也稱為共同適用問題[13-14]。與此同時,Hinton 還將dropout 描述為一種集成技術,用共享參數集成許多子網絡。因此,Hinton認為在訓練過程中丟棄神經元實際上是訓練指數數量的稀疏網絡,并在測試階段對這些網絡的結果進行平均,這個過程也稱為模型組合。
Dropout是一種模型組合方法,這與求解組合優化時常用的一種算法有相似之處:變鄰域搜索算法(Variable Neighborhood Search,VNS)[15]。VNS 是Mladenovic和Hansen 提出的一種改進的局部搜索算法。局部搜索算法是一種近似算法,其基本原理是在鄰近解中不斷迭代,使目標函數逐步優化,直至不能再優化為止。爬山法、模擬退火算法都屬于局部搜索算法。在搜索過程中,VNS是在不同的領域中交替地進行局部搜索,因此更容易跳出局部最優解。若用爬山的思想來解釋變領域搜索,相當于爬到最高的山峰后,再變化到另一個爬山地形,繼續爬到該地形的最高點。
Dropout 在每次訓練時會隨機丟棄神經元,相當于每次訓練時隨機切換一個新的訓練網絡。因此可以將不同的訓練網絡視作不同的搜索區域,每次的訓練過程視為在當前搜索區域上尋找最大或者最小值。因此,可以用變領域搜索算法的思想來解釋Dropout。
通常用于訓練神經網絡的數據集較大,所以在每次訓練時只會選擇一部分的數據用來訓練。人們通常將這稱為批訓練法,其中批也稱為batch。若一個完整的數據集有100個數據,每個批次的大小為5,則整個數據集會分為20 個batch 數據。因此Dropout 是使用不同的網絡去訓練不同batch的數據。
但使用Dropout算法后的訓練時間通常是具有相同架構的標準神經網絡的2~3 倍。這可能是因為每個網絡在一個batch 的數據上訓練一次后,就被隨機替換成下一個網絡。這個過程相當于爬山還沒爬到局部最高點,僅僅是在最高點的方向上前進一步,就切換成下一個爬山地形。因此標準的Dropout 與VNS有一定差別。參照VNS 的思想,可以提出一個基于Dropout的算法:DropoutVNS,其與標準Dropout的不同點在于切換訓練網絡的標準不同。
不同于Dropout 隨機切換訓練網絡,DropoutVNS使用多個batch 數據訓練到穩定時再切換網絡。“穩定”被定義為相鄰兩次batch 數據得到的訓練指標相近。若訓練時使用的評判指標為a,第i次訓練得到的指標結果為ai,則第i次訓練穩定的公式表達如下:
其中,ε稱為穩定參數,可以選擇10-5、10-6等。在后續實驗中會評估不同的ε對模型結果的影響。若可隨機丟棄的神經元個數為N,則dropout算法在每次切換網絡時,可以在2N個網絡中選擇,定義這些網絡的集合為D。若整個數據集可以分為M個batch數據,則標準dropout 會切換M 次網絡,而dropoutVNS 的切換次數會小于等于M。
為了更好地解釋dropoutVNS,這里定義三個訓練算法:標準算法、dropoutVNS以及dropout。
1)標準算法:一直使用一個完整網絡來訓練。
2)dropoutVNS:使用多個batch數據訓練同一個網絡到穩定時,再隨機選擇下一個網絡。其中每個網絡都是屬于集合D,每個網絡會以一定概率丟棄節點。
3)dropout:每輸入一個batch的數據就切換一個網絡來訓練,每次會隨機刪掉完整網絡中的某些節點。其中每個網絡都是屬于集合D。
DropoutVNS 與dropout 最大的不同在于,切換網絡時dropoutVNS是使用多個batch數據訓練到穩定后再切換下一個網絡,而dropout 是每個batch 數據都隨機切換一個網絡。
在圖4 中,每個算法都訓練5 個batch 的數據,而標準算法的切換次數為0,一直使用完整網絡訓練。Dropout 算法的切換次數為5,每訓練一個batch 數據就會隨機切換一個網絡,DropoutVNS的切換次數為2,只在訓練穩定時才會切換網絡。

圖4 不同算法的訓練示例圖
為了評估dropoutVNS對模型性能的提升效果,在三個圖像分類數據集上分別進行實驗分析:MNIST[16]、CIFAR-10、CIFAR-100[17]。
與Hinton等人[3]在2012年發表的論文中采用的網絡結構一致,在MNIST上使用只有全連接層的神經網絡,在CIFAR-10、CIFAR-100 上使用卷積神經網絡。在這些實驗中,目標是研究dropoutVNS相較于標準算法和dropout算法,是否能夠提高模型的預測性能。
本次實驗數據集使用MNIST 數據集。網絡結構為784-1024-1024-1024-10,有三個節點數為1 024的隱藏層,輸入和輸出節點數分別為784和10。激活函數使用ReLU。訓練時使用批訓練方法,每個batch有60個數據,共有1 000個batch。最后使用整個數據集訓練100次,即epoch為100。一共重復5次實驗,每次實驗取最后一個epoch 在測試集上的error 值,然后計算5次實驗的error的平均值和標準差。
選擇3 個穩定參數ε,從0.000 01,依次減少100倍,直到0.000 000 001,目的是觀察其對模型性能的影響。表1 總結了3 種算法,以及dropoutVNS 中不同穩定參數在MNIST 數據集上的測試集error 值以及訓練時間。

表1 不同算法在MNIST數據集上的測試集error值以及訓練時間
其中,測試集error 值的單位為%,測試集error 值為1.89,指的是有1.89%的圖像被錯誤分類,剩下的圖像被正確歸類。因此error也稱為分類錯誤率,而準確率=1-錯誤率。在測試集error 值中,±符號后面的數字是相應的標準差。丟棄概率p固定為0.5,即網絡中的每個節點有50%的可能被丟棄。穩定參數為0.000 01 指的是穩定條件為兩次訓練的error 之差的絕對值小于0.000 01,當達到穩定條件時dropoutVNS 會切換一次網絡。
從表1 可知,在模型性能方面,當穩定參數為0.000 000 1時,dropoutVNS與dropout的預測性能相差不大。而在其他的穩定參數下,dropoutVNS均比dropout 在模型預測性能方面有略微提升。總體而言,dropoutVNS 相比dropout 可以提升模型的預測性能。而dropoutVNS 也比標準的算法網絡提升約3%的準確率。
在訓練時間方面,無論選擇哪個穩定參數,dropoutVNS 的訓練時間都比dropout 算法的訓練時間少。即在MNIST數據集上,dropoutVNS使用更少的訓練時間,就達到與dropout相同甚至比其更好的預測性能。
本次實驗使用CIFAR-10數據集。網絡結構則為卷積神經網絡,共有三個卷積層,卷積核分別為96、128、256,后接兩個節點數為1 024 的全連接層,最后的輸出節點數為10。在每個卷積層和全連接層后面均加入dropout或者dropoutVNS,激活函數為ReLU,學習率為0.001,使用Momentum 優化器并且momentum值為0.9。在批訓練參數方面,每個batch 有64 個數據,因此共有781個batch,并使用整個數據集訓練300次。其余實驗設置與使用MNIST 數據集的實驗設置相同。
從表2可知,在不同的穩定參數下,dropoutVNS均比dropout 可以更好地提升模型預測能力,其中,最好的是穩定參數為0.000 01 的dropoutVNS,其error 相較于dropout 減少約1%。而dropoutVNS 也比標準的算法網絡提升約4%的準確率。

表2 不同算法在CIFAR-10數據集上的測試集error值以及訓練時間
在訓練時間方面,兩者相差不大。即dropoutVNS使用幾乎相同的時間,就比dropout 算法提升約1%的準確率。
本次實驗使用預測難度更大的數據集CIFAR-100,CIFAR-100 相比CIFAR-10 擁有更多的圖像類別。網絡結構同樣選用卷積神經網絡,有三個卷積層,卷積核分別為96、128、256,兩個節點數為1 024的全連接層,輸出節點數為100。在卷積網絡的卷積層和全連接層后面均加入dropout或dropoutVNS,激活函數為ReLU,學習率為0.001,使用Momentum優化器且momentum值為0.9。在整個數據集的訓練次數上,因為CIFAR-100 更難訓練,所以epoch 增大到700。其余實驗設置與使用CIFAR-10 數據集的實驗設置相同。
從表3可知,在不同的穩定參數下,dropoutVNS均比dropout在模型預測性能方面有較大提升。其中,最好的是穩定參數為0.000 000 1的dropoutVNS,相較于dropout 減少約2%的測試集error 值。而dropoutVNS也比標準的算法網絡提升約6%的準確率。

表3 不同算法在CIFAR-100數據集上的測試集error值以及訓練時間
在訓練時間方面,相較于dropout,dropoutVNS 使用的訓練時間更少,可以減少約20分鐘的時間。即在CIFAR-100 數據集上,dropoutVNS 使用更少的時間,就可以比dropout算法提升約2%的準確率。
分別在三個常用的圖像分類數據集中,比較dropoutVNS、dropout 和標準網絡的性能。同時,在使用dropoutVNS算法時選取不同的穩定參數,分析穩定參數對模型性能的影響。以上實驗結果說明,dropout-VNS相較于標準網絡能大大提高模型的預測能力,其中在CIFAR-100 數據集上可以提升約6%的準確率。而dropoutVNS 相較于dropout 也能實現更好的模型預測性能。在MNIST數據集上,dropoutVNS使用更少的訓練時間,就達到與dropout相同甚至比其更好的預測性能。在CIFAR-10 數據集上,dropoutVNS 使用幾乎相同的訓練時間就可以獲得更小的錯誤率。在CIFAR-100數據集上,dropoutVNS使用更少的訓練時間就獲得更小的錯誤率。
Dropout 切換訓練網絡與VNS 變化領域搜索有相似之處,可以將Dropout 看作是一種特殊的變領域搜索算法。但Dropout 在切換訓練網絡時是完全隨機的,而VNS 是在找到局部最優點后才變化領域。因此,在標準Dropout的基礎上進行改進,將切換訓練網絡的標準改為穩定后再切換,從而提出一種新的正則化方法:DropoutVNS。在三個圖像分類數據集的實驗結果均表明,DropoutVNS明顯優于標準的網絡,在CIFAR-100數據集上可以提升約6%的準確率。與此同時DropoutVNS 也優于Dropout,可以提升模型預測性能,提高圖像分類的準確性,減少訓練時間。