《On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima》-ICLR2017文章閱讀
這是一篇發表在ICLR2017上面的文章。
這篇文章探究了深度學習中一個普遍存在的問題——使用大的batchsize訓練網路會導致網路的泛化效能下降(文中稱之為Generalization Gap)。文中給出了Generalization Gap現象的解釋:大的batchsize訓練使得目標函式傾向於收斂到sharp minima(類似於local minima),sharp minima導致了網路的泛化效能下降,同時文中給出了直觀的資料支援。而小的batchsize則傾向於收斂到一個flat minima,這個現象支援了大家普遍認為的一個觀點:小的batchsize存在固有噪聲,這些噪聲影響了梯度的變化。文中還給出了一些方法去嘗試消除Generalization Gap現象。
1:背景介紹
一般的深度學習演算法都是通過優化一個目標函式來訓練網路引數的,這是一個非凸的優化問題。整個過程可以表達為下面的式子:
f(x)是損失函式。SGD是一種常見的優化方法:
Bk是batchsize的大小,一般取值{32,64,…,512},經過實踐的檢驗,這些常見的batchsize大小設定可以有以下的優點:
1:收斂到凸函式的最小值點以及非凸函式的駐點;
2:避免鞍點的出現;
3:對輸入資料具有魯棒性。
SGD的主要缺點——並行化困難,一個常見方法是增大batchsize,然而這導致了Generalization Gap的出現。
作者觀察到Generalization Gap的出現是和大batchsize訓練時候的最優值的銳度(sharpness)相關的,後面的工作為這個現象提供實驗支援,並且嘗試解決Generalization Gap這個問題。
2:大Batch方法的缺點
首先,大Batch方法與小Batch方法在訓練的時候實際上得到的目標函式的值是差不多的,這個現象的可能原因有下面幾點(LB=Large-Batch;SB=Small-Batch):
1:LB方法過度擬合模型;
2:LB方法被吸引到鞍點;
3:LB方法缺乏SB方法的探索性質,並傾向於放大最接近初始點的最小值;
4:SB和LB方法收斂到具有不同泛化特性的定性不同的最小化。
文章主要研究上面的3、4兩點可能原因。
作者認為大Batch方法之所以出現Generalization Gap問題,原因是大Batch方法訓練時候更容易收斂到sharp minima,而小Batch的方法則更容易收斂到flat minima。並且大Batch方法不容易從這些sharp minima的basins中出來。下圖給出了sharp minima和flat minima的一個示意圖。
sharp minima的存在是導致Generalization Gap出現的最重要原因,如下圖所示:
下面作者進行了一系列視覺化的資料實驗來驗證上面的觀點:首先,Table1是作者選用的幾種網路結構以及資料集。其中C1和C3是Alex-Net結構,C2和C4是Google-Net結構。
實驗用到的資料庫:
其中,TIMIT是一個語音識別的資料庫。
考慮到文章的目的是探索LB和SB方法的最小值的性質,而不是追求state-of-art或者是時間消耗,最終的實驗結果是用最後的testing accuracy來表示的。
實驗中LB方法的Batchsize定義為整個資料集的10%,SB方法的Batchsize定義為256。優化器使用ADAM(ADAGRAD、adaQN等幾個方法得到的結論是類似的)。損失函式使用的是交叉熵形式。
對應Table1中6個網路的實驗的結果如table2所示。可以看到,SB和LB兩種演算法在Training階段取得的結果非常相近,而Testing階段LB方法明顯出現了Generalization Gap的現象。
這裡再一次強調,LB方法出現的Generalization Gap現象並不是過擬合造成的,這可以由figure2的圖看出,這個F2和C1網路的訓練-測試曲線,提前停止訓練(防止過擬合)的方法對這個實驗並沒有幫助。
Figure3給出的是一維的引數曲線,Xs和Xl分別表示SB和LB方法在ADAM優化器中得到的預測結果,其中
上面figure3給出的只是目標函式的一個現行切分,figure7則給出了一個非線性切分的結果圖:
可以觀察到此時的LB與SB方法的銳度(sharpness)區別更為明顯。
上面所做的工作對於sharpness的應用和解釋都是比較鬆弛的,事實上,sharpness的定義可以由目標函式的Hessian矩陣計算,但是神經網路的Hessian矩陣計算非常困難。下面作者介紹了一個鋒利度sharpness的數學定義,雖然不完美,但是計算開銷上是具有可行性的,這個定義只在最優值的一個鄰域內計算,但是考慮到最優值可能在多個方向上得到,作者給出了兩種方案:一是在整個空間上面Rn進行優化過程,二是在一個隨機大小的子空間上面進行優化。這裡作者給出了一個矩陣A(n*p)的概念,A是一個在全空間隨機抽樣產生的矩陣,列數p就是隨機產生的子空間維數,文中設定為p=100。
(3)式是一個範圍限定集,(4)式就是本文中對於鋒利度sharpness的數學定義。
Table3、4是文中對於六個網路結構的優化過程中的鋒利度sharpness的計算結果。其中table3表示了整個空間上的最小值鋒利度,而table4則是子空間(100維)。
作者還指出,sharp minima並不出現在所有方向上,根據作者的實驗觀察,只有5%的子空間上會出現,在其他方向上,minima相對比較flat。
3:小Batch方法的優點
事實上關於batchsize的選擇是存在一個閾值的,batchsize大於這個閾值會導致模型質量的退化。這個現象可以由figure4看出來,figure4中的F2的約15000和C1的約500,大於這個閾值網路準確度大幅下降。
現在思考一下SB方法的原理,它使用的梯度具有內在的噪聲,從實驗以及經驗來看,這些噪聲使得SB方法的minimum在到達一個相對sharp的區域時,能夠將最優值推出去,到達一個相對flat的區域,而這些噪聲不足以將一個本來就很flat的minimum推出去。而LB方法明顯大於上面所說的閾值的時候,梯度記憶體在的噪聲不足以將minimum推出sharp區域。
下面作者又做了這樣一個實驗:用256的小batch訓練一個網路100個epoch,每一個epoch以後保留迭代的結果,將這100個結果作為LB大一個起始訓練點,稱之為piggybacked LB。
Figure5給出了實驗的結果,起始幾個epoch時候SB或者是piggybacked LB都還沒有完成各自的優化過程,所以test accuracy都比較低,sharpness比較高。當到達一定數量的訓練epoch時候,兩個方法的sharpness都下降了,test accuracy都提高,這個時候說明SB已經完成了它的“探索”過程,找到了一個比較flat的minimum,並且引導piggybacked LB的LB也收斂到這個比較flat的minimum。
還有一點推測是LB方法傾向於被初始點X0附近的minima吸引,SB方法則會相對原理這些初始點附近的minima,作者的實驗支援了這個猜想,他們觀察到:小batch的最優值與起始點的距離是大batch的最優點與起始點距離的3到10倍。
作者下面還給出了figure6這樣一個sharpness隨著loss變化的曲線,從中我們可以看出,當一開始loss比較大的時候,LB和SB方法的sharpness的差不多的,然而隨著loss的減少(優化過程),LB的sharpness逐漸增加,SB的sharpness逐漸減少,最終到一個flat的minimum。
4:對大Batch方法嘗試改進
這部分作者嘗試對大batch方法泛化效能差的現象進行改進,和之前的實驗設定一樣,仍然選用10%的資料集大小作為LB方法,256的batchsize作為SB方法,優化器選用ADAM優化器。
4.1 資料增強
資料增強是一個針對資料庫domain specific的過程,這部分實驗作者訓練了C1到C4四個image-based的CNN來說明問題。對於資料增強,作者使用的手段是水平對映(horizontal reflection)、隨機旋轉至10°、隨機平移到影象尺寸的0.2倍。
table6所示是資料增強後的結果,可以看到資料增強的LB方法可以達到和SB方法(也在訓練時候做過資料增強)差不多的預測精度,但是sharpness仍然較高,表明資料增強並沒有改變LB方法存在的sharp minima的現象。
4.2 CONSERVATIVE TRAINING
2014年文章【Mu Li, Tong Zhang, Yuqiang Chen, and Alexander J Smola. Efficient mini-batch training for stochastic optimization. In Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining】中作者曾今證明過優化下面一個式子可以使得SGD演算法的LB方法的收斂率得到改善:
這個策略的動機是:為了更加充分地利用大batch方法中的每一個batch,每一個batch需要“不精確地”計算3-5次梯度的迭代,這個做法不僅提高了SGD的收斂率,並且在凸優化過程中取得了很好的經驗效果,作者將這個想法用到了CNN優化這個非凸的問題上來。
Table7是CONSERVATIVE TRAINING的實際效果。同上面的資料增強方法一樣,這個做法使得網路的泛化效能得到一定改善,但是sharpness仍然存在。
4.3 ROBUST TRAINING
所謂的ROBUST TRAINING,其實是通過優化一個最壞情況下的cost,而不是常規的cost。從數學角度來說,是通過優化下面的式子來實現的:
Figure8很直觀的解釋了ROBUST TRAINING的數學含義。
考慮到計算上面的式子在CNN的優化過程中並不現實(計算量),這涉及到一個large-scale second-order conic program(SOCP)問題(我也不知道這是個啥問題。。)。
在深度學習中,robustness的概念可以分為兩個方面:即資料的robustness和優化過程的robustness。資料的robustness是吧CNN當成一個統計模型,而優化過程的robustness則是把CNN當成一個黑箱模型,而對於優化過程的robustness實際上就是對抗學習adversarial training。
對抗學習不同於資料增強對資料進行的那些常規操作,它是有目標的的增強對抗樣本。但是很遺憾在本文作者的實驗中,對抗學習的泛化效能以及sharpness和baseline非常接近。因此,這種方法也不能夠解決sharp minima的現象。
5:結論與討論
這篇文章中,作者給出了大batch優化過程中最優值傾向於收斂到sharp minima的資料實驗支援,而sharp minima是導致網路泛化效能下降的重要原因(Generalization Gap)。作者通過提出一個鋒利度sharpness的數學概念來表徵sharp minima現象。同時,作者也給出了幾種嘗試去解決大batch方法的方案:資料增強、保守學習以及健壯學習,但是根據作者的實驗,這幾種方法雖然一定程度上提高了網路的泛化效能,但是sharp minima的現象依然存在。一個比較有希望的解決方案是dynamic sampling(動態取樣),這個方法選取的batchsize隨著迭代次數的增加會發生變化,這在文中的piggybacked LB實驗中證明是可行的。
最近有很多學者也在研究一個loss surface的屬性問題,他們的研究表明CNN在優化時確實存在很多個區域性最優值,並且這些區域性最優值的值大小非常接近。作者本文中發現sharp minimum和flat minimum的loss值其實也是非常接近的。
最後,文中也丟擲了幾個問題:
(a) 是否有人能夠證明大batch的訓練方法在神經網路的優化過程中嚴格收斂到sharp minima?
(b) 優化過程的sharp和flat兩種minimum的密度如何?
(c) 是否有人能夠設計出一種適合採用大的batch用來訓練的CNN網路結構?
(d) 能夠找到一種合適的初始化方法使得大batch的方法能夠收斂到flat minimum上面去?
(e) 能夠從一個演算法的機制上面去找到一個演算法,使得大batch方法遠離sharp minima?