張占軍 彭艷兵 程 光
1(武漢郵電科學研究院 湖北 武漢 430074) 2(烽火通信科技股份有限公司南京研發 江蘇 南京 210019)
圖像分類是圖像處理的熱門研究課題之一,其核心在于特征提取及分類器設計。自 2006 年 Hinton 在深度神經網絡取得重大進展之后,深度神經網絡被認為是從原始數據自動提取特征最有希望的方式[1]。卷積神經網絡作為深度神經網絡中的一種,已經成功地應用在人臉檢測、手寫體識別[6]、語音檢測、文本分析[8]、視頻分析、車牌識別等領域。
隨著卷積神經網絡的廣泛應用,過擬合對網絡性能的限制作用逐漸凸顯出來。針對此問題研究人員提出多種防止過擬合的方法:增加數據量是預防過擬合最簡單的方法。Dropout方法作為有效提高神經網絡泛化能力的學習方法之一[11]將隱層神經元的輸出值以0.5的概率變為0,從而使這些節點失效,避免網絡對某一局部特征的過擬合。L1正則的效果是讓ω往0靠,使網絡中的權重盡可能為0。L2正則[15]的效果是減小ω的取值。二者都是為了減小網絡的復雜度,防止過擬合。還有學者提出提前終止法,就是在訓練的過程中觀察網絡在驗證集上的效果,并在效果變差時提前終止訓練。上述方法均可以起到預防過擬合的作用,但是提前終止法依賴人工觀察,靈活性差。有價值的數據集非常寶貴,增加數據會受到很多方面的限制。Dropout 和 正則只是控制了參數的取值,參數的總量并沒有改變。
本文從參數總量出發,提出LeNet-5_1, LeNet-5_2兩種網絡模型。在LeNet-5的網絡基礎上對卷積核進行拆分,LeNet-5_1將5×5的網絡拆分為兩個3×3的網絡,LeNet-5_2在LeNet-5_1的基礎上繼續拆分,將3×3的網絡拆分為1×3和3×1的網絡。拆分前后池化層和全連接層感受野沒有發生改變,但是參數總量卻大大減少,從根源上防止了過擬合現象。此外在數據處理上不采用增加數據量的方法,而是對輸入圖片進行數據增強,不僅增加了樣本數量,而且還增加了樣本多樣性。最后,文中還引入混合正則,通過調節比例來驗證L1、L2正則對網絡性能的影響程度。對比實驗結果表明, 本文方法有效地預防了過擬合,大幅提高了分類準確率。
本文用交叉熵損失函數來求loss的取值,具體公式為:
(1)
式中:y是預測的概率分布,y′是真實的概率分布(即Label的one-hot編碼)。然后再對每個batch的Hy′(y)求均值就得到loss的值loss_cross。本文求loss時加入了L1、L2混合正則,所以loss的最終結果:
loss_total=
(2)
loss_total的值越小表明模型的預測準確率越高,但是如果訓練集的loss_total很小,則表示預測集的準確率并不高,說明存在過擬合。梯度下降法就是通過求梯度來降低參數值,達到減少loss_total的目的。
本文采用tensorflow 提供的in_top_k函數,該函數可以求輸出結果中top k的準確率,默認使用top 1,也就是輸出分類最高的那一類的準確率,文中使用默認參數沒有做修改。測試集是按batch輸入的,每處理一個batch就用此函數計算這個batch的top 1上預測正確的樣本數predictions,并將所有batch中的predictions相加得到一個總數true_total,然后用true_total除以樣本總數num_total,得到的結果就是預測準確率。文中num_total設為10 000,即每隨機測10 000個樣本計算一次準確率,總共測20次并生成20個結果。
TensorBord[18]是TensorFlow官方推出的可視化工具。在執行TensorFlow計算圖的過程中,可以將各種類型的數據匯總并記錄到日志文件中,然后使用TensorBord讀取這些日志文件,解析數據并生成數據可視化的web界面,我們就可以從瀏覽器中分析所記錄的數據。本文的結果圖均來自TensorBord可視化。
CIFAR-10[19]數據集包含60 000個32×32的彩色圖像,共有10類,有50 000個訓練圖像和10 000個測試圖像。數據集分為5個訓練塊和1個測試塊,每個塊有10 000個圖像。測試塊包含從每類隨機選擇的1 000個圖像,訓練塊以隨機的順序包含這些圖像。
數據增強是利用了圖片數據本生的性質,圖片的冗余信息量大,因此可以制造不同的噪聲并讓圖片依然可以被識別出來。它可以給單幅圖增加多個副本,提高圖片的利用率,防止對某一張圖片結構的學習過擬合。本文對輸入數據做了剪裁、翻轉并調整亮度和對比度,以上所有操作都是隨機的。從32×32的原始圖像中截取24×24大小的區域,相當于增加了(32-24)2×2=128倍的數據量,再加上后續處理數據量還會翻倍,處理后的數據大大增加了模型的泛化能力,可以有效預防過擬合。如圖1所示。

圖1 輸入圖像處理過程
上述的圖片處理總共分5個步驟,分別是:
1) 從32×32 的原始圖像中隨機裁剪24×24 的圖片。
2) 對圖片做隨機左右翻轉。
3) 隨機調整圖片的亮度。
4) 隨機調整圖片的對比度。
5) 對圖片進行標準化。
本文通過指數衰減的方法設置梯度下降算法中的學習率,通過指數衰減的學習率即可以讓模型在訓練的前期快速接近較優解,又可以保證模型在訓練的后期不會有太大的波動,從而更加接近最優解。學習率的計算公式為:
decay_learning_rate=
(3)
式中:decayed_learning_rate為每一輪優化時使用的學習率,learning_rate為事先設定的初始學習率,decay_rate為衰減系數,decay_step為衰減速度。本文將decay_step的值設為總訓練樣本數除以每一個batch中的訓練樣本數。這樣每完整的過完一遍訓練數據,學習率就減小一次。這可以使得訓練數據集中的所有數據對模型訓練有相等的作用。
如圖2所示,是訓練過程中學習率的變化圖,由圖2可知學習率是呈指數衰減的。由于 staircase 的值設為 True,global_step/decay_step的值轉化成了整數,整個曲線呈階梯狀。

圖2 學習率指數衰減圖
本文采用滑動平均模型對loss和各變量做相應處理,滑動平均模型的計算公式為:
shadow_variable=decay×shadow_variable+
(1-decay)×variable
(4)
式中:decay是衰減率,用于控制模型更新的速度,variable為需要處理的變量,shadow_variable處理之后的變量值,又叫做影子變量。由上述公式可知,decay控制著模型更新的速度,越大越趨于穩定。實際運用中,decay一般會設置為十分接近 1 的常數,本文計算loss時decay=0.9,計算變量時decay=0.999。為了使得模型在訓練的初始階段更新得更快,本文提供了num_updates參數來動態設置decay的大小:
Decay=min{decay,(1+num_updates)/
(10+num_updates)}
(5)
式中:num_updates代表迭代次數,由公式可知當迭代次數較小時,decay=(1+num_updates)/(10+num_updates)并隨著迭代次數而快速增大,此時模型的更新速度很快。當迭代次數增大到一定程度,decay的值就保持給定的值不變,模型更新速度變慢。
正則化的思想就是在損失函數中加入刻畫模型復雜程度的指標。假設用于刻畫模型在訓練數據上表現的損失函數為J(θ),那么在優化時不是直接優化J(θ),而是優化J(θ)+αR(ω)。其中R(ω)刻畫的是模型的復雜程度,而α表示模型復雜損失在總損失中的比例,θ表示的是一個神經網絡中的所有參數,它包括邊上的權重w和偏置項b。刻畫模型復雜程度的函數R(ω)有兩種,一種是L1正則,計算公式是:
(6)
另一種是L2正則化,計算公式是:
(7)
令P(θ)=J(θ)+γR(ω),對ω和b求導得:
(8)
(9)
可以發現正則只對ω的更新有影響,而對b的更新沒有影響。
利用梯度下降法更新之后ω的值為:
L1正則:
(10)
L2正則:
(11)


圖3 ω取不同值的準確率
由圖3可知,當ω=1時,模型的準確率為58.1%,ω=0.5時,模型的準確率為69.2%,ω=0時,模型的準確率為85.1%。可見ω的值越小,模型的準確率越高,實驗證明本網絡中L2正則比L1正則在減輕過擬合方面有更好的效果。
實驗環境配置信息如表1所示。

表1 實驗環境配置信息
網絡結構變換主要來自經典模型VGGNet,將一個大卷積拆分為兩個或者多個小卷積,以增加網絡深度,提高分類準確率。而將一個較大的二維卷積拆分為兩個一維卷積,主要是引入了Factorization into small convolutions的思想。本文結合前人的經驗, 提出通過卷積拆分來預防過擬合的思想,并設計了LeNet-5_1、LeNet-5_2兩個模型,網絡參數如表2所示。

表2 三種網絡結構的詳細參數
LeNet-5_1將5×5的卷積拆分成兩個3×3的卷積,兩個3×3的卷積層串聯相當于一個5×5的卷積層,即一個像素會跟周圍5×5的像素產生關聯,可以說感受野大小為5×5,網絡拆分前后并沒有發生改變。LeNet-5_2在LeNet-5_1的基礎上繼續拆分,即將3×3的網絡拆分為3×1和1×3的網絡。拆分之后感受野仍然為5×5,但是這種非對稱的卷積結構拆分,其結果比對稱地拆分為幾個相同的小卷積效果更明顯,可以處理更多、更豐富的空間特征,增加特征多樣性。圖中的1×1卷積層主要實現升維降維的作用,靈活控制網絡中的參數數量。拆分之后的結構層次更多,參數更少,增加了非線性的表達能力并且在預防過擬合方面有很好的效果。如表3所示是三種網絡結構的參數對比表:

表3 卷基層參數統計表
從表中數據可以看出LeNet-5_1卷積層參數量只有LeNet-5的72%,LeNet-5_2卷積層參數量更少,只有LeNet-5的60%,減少了40%的參數。下面分析參數減少后對預防過擬合并提升模型準確率方面的影響。
如圖4所示,LeNet-5的準確率只有68%,LeNet-5_1的網絡結構能達到88.9%的準確率,而LeNet-5_2的網絡結構能達到91.2%的準確率。整個優化過程中沒有增加數據集,所達到的卷積效果和原始模型相同,但準確率卻提高了23個百分點,充分證明了改變網絡結構減少參數量對減輕過擬合提高模型準確率的作用是非常明顯的。

圖4 三種模型準確率
本文在LeNet-5基礎上提出的LeNet-5_1、LeNet-5_2模型,通過卷積核拆分減少了大量參數,有效地防止了過擬合,提高了模型的分類準確率。但由于LeNet-5模型結構相對簡單,受感受野的約束,模型的分類準確率受到了很大的限制。接下來可以嘗試更加復雜的網絡結構,繼續加深網絡,進一步提高模型的分類準確率。
[1] Hinton G E,Salakhutdinov R R.Reducing the dimensionality of data with neural networks[J]. Science,2006,313(5786):504-507.
[2] Li H, Lin Z, Shen X, et al. A convolutional neural network cascade for face detection[C]// Computer Vision and Pattern Recognition. IEEE, 2015:5325-5334.
[3] Lecun Y, Boser B, Denker J S, et al. Backpropagation applied to handwritten zip code recognition[J]. Neural Computation, 2014, 1(4):541-551.
[4] Tivive F H C, Bouzerdoum A. A new class of convolutional neural networks (SICoNNets) and their application of face detection[C]// International Joint Conference on Neural Networks. IEEE, 2003:2157-2162.
[5] Chen Y N, Han C C, Wang C T, et al. The Application of a Convolution Neural Network on Face and License Plate Detection[C]// International Conference on Pattern Recognition. IEEE Computer Society, 2006:552-555.
[6] Lecun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11):2278-2324.
[7] Sukittanon S, Surendran A C, Platt J C, et al. Convolutional networks for speech detection[C]// INTERSPEECH 2004-ICSLP, 8th International Conference on Spoken Language Processing, Jeju Island, Korea, October 4-8, 2004.
[8] Simard P Y, Steinkraus D, Platt J C. Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis[C]// International Conference on Document Analysis and Recognition, 2003. Proceedings. IEEE, 2003:958-962.
[9] Mobahi H, Collobert R, Weston J. Deep learning from temporal coherence in video.[C]// International Conference on Machine Learning, ICML 2009, Montreal, Quebec, Canada, June. 2009:93.
[10] 趙志宏,楊紹普,馬增強.基于卷積神經網絡LeNet-5的車牌字符識別研究[J]. 系統仿真學報,2010, 22(3): 638-641.
[11] Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1):1929-1958.
[12] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1097-1105.
[13] Yoo H J. Deep Convolution Neural Networks in Computer Vision[J]. Ieie Transactions on Smart Processing & Computing, 2015, 4(1):35-43.
[14] Rudin L I, Osher S, Fatemi E. Nonlinear total variation based noise removal algorithms[J]. Physica D Nonlinear Phenomena, 1992, 60(1-4):259-268.
[15] Tihonov A N. On the solution of ill-posed problems and the method of regularization[M]. Providence: American Mathematical Society Press, 1963:1035-1038.
[16] Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. eprint arXiv:1409.1556, 2014.
[17] Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2015:1-9.
[18] 黃文堅,唐源. TensorFlow實戰[M]. 北京:電子工業出版社,2017.
[19] Krizhevsky A. Learning multiple layers of features from tiny images [D]. Department of Computer Science, University of Toronto,2009.