·過擬合(Overfitting)
深層神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練過程,就是尋找一個模型能夠很好的擬合現(xiàn)有的數(shù)據(jù)(訓(xùn)練集),同時能夠很好的預(yù)測未來的數(shù)據(jù)。
在訓(xùn)練過程中由于模型建立的不恰當,往往所訓(xùn)練得到的模型能夠?qū)τ?xùn)練集的數(shù)據(jù)非常好的擬合,但是卻在預(yù)測未來的數(shù)據(jù)上表現(xiàn)得非常差,這種情況就叫做過擬合(Overfitting)。
為了訓(xùn)練出高效可用的深層神經(jīng)網(wǎng)絡(luò)模型,在訓(xùn)練時必須要避免過擬合的現(xiàn)象。過擬合現(xiàn)象的優(yōu)化方法通常有三種,分別是:正則化(Regulation),擴增訓(xùn)練集(Data augmentation)以及提前停止迭代(Early stopping)。
·正則化(Regulation)
正則化方法是指在進行損失函數(shù)(costfunction)優(yōu)化時,在損失函數(shù)后面加上一個正則項。
正則化方法中目前常用的有兩種方法:L2 正則化和 Dropout 正則化。
L2 正則
L2 正則是基于 L2 范數(shù),即在函數(shù)后面加上參數(shù)的 L2 范數(shù)的平方,即:
其中J0是原損失函數(shù),m 表示數(shù)據(jù)集的大小。使用下式對參數(shù)進行更新:
其中,因此知道 w 在進行權(quán)重衰減。在神經(jīng)網(wǎng)絡(luò)中,當一個神經(jīng)元的權(quán)重越小時,那么該神經(jīng)元在神經(jīng)網(wǎng)絡(luò)中起到的作用就越小,當權(quán)重為 0 時,那么該神經(jīng)元就可以被神經(jīng)網(wǎng)絡(luò)剔除。而過擬合現(xiàn)象出現(xiàn)的原因之一就是,模型復(fù)雜度過高。那么,也就是說 L2 正則化后,權(quán)重會衰減,從而降低了模型的復(fù)雜度,從而一定程度上避免對數(shù)據(jù)過擬合。
隨機失活(Dropout)正則
其實 Dropout 的思路與 L2 的思路是一致的,都是降低模型的復(fù)雜度,從而避免過擬合。只是實現(xiàn)的方法有所不同。
Dropout 的做法是,在訓(xùn)練過程中,按照一定的概率隨機的忽略掉一些神經(jīng)元,使其失活,從而就降低了模型的復(fù)雜度,提高了泛化的能力,一定程度上避免了過擬合。
常用的實現(xiàn)方法是 InvertedDropout。
使用 Dropout 的小技巧
·1、通常丟棄率控制在 20%~50%比較好,可以從 20%開始嘗試。如果比例太低則起不到效果,比例太高則會導(dǎo)致模型的欠學(xué)習(xí)。
·2、在大的網(wǎng)絡(luò)模型上應(yīng)用。當 dropout 用在較大的網(wǎng)絡(luò)模型時更有可能得到效果的提升,模型有更多的機會學(xué)習(xí)到多種獨立的表征。
·3、在輸入層(可見層)和隱藏層都使用 dropout。在每層都應(yīng)用 dropout 被證明會取得好的效果。
·4、增加學(xué)習(xí)率和沖量。把學(xué)習(xí)率擴大 10~100 倍,沖量值調(diào)高到 0.9~0.99.
·5、限制網(wǎng)絡(luò)模型的權(quán)重。大的學(xué)習(xí)率往往導(dǎo)致大的權(quán)重值。對網(wǎng)絡(luò)的權(quán)重值做最大范數(shù)正則化等方法被證明會提升效果。
·擴增訓(xùn)練集(Data augmentation)
“有時候不是因為算法好贏了,而是因為擁有更多的數(shù)據(jù)才贏了。”
特別在深度學(xué)習(xí)中,更多的訓(xùn)練數(shù)據(jù),意味著可以訓(xùn)練更深的網(wǎng)絡(luò),訓(xùn)練出更好的模型。
然而很多時候,收集更多的數(shù)據(jù)并不那么容易,要付出很大的代價。那么,為了得到更多的訓(xùn)練數(shù)據(jù),我們可以在原有的數(shù)據(jù)上做一些改動產(chǎn)生新的可用數(shù)據(jù),以圖片數(shù)據(jù)為例,將圖片水平翻轉(zhuǎn),放大或者選擇一個小角度都可以得到新的圖片數(shù)據(jù)用于訓(xùn)練。
雖然這樣的效果沒有全新的數(shù)據(jù)更加好,但是付出的代價卻是接近于零的。所以,很多情況下,這是一個非常好的數(shù)據(jù)擴增方法。
·提前停止迭代(Early stopping)
在訓(xùn)練過程中繪制訓(xùn)練集誤差函數(shù)的同時也繪制交叉驗證集的誤差。從下面的圖可以看出,訓(xùn)練集誤差隨著迭代次數(shù)增加而不斷降低,而驗證集誤差卻是先降低后上升。很明顯,在這個模型中,我們希望驗證集誤差和訓(xùn)練集誤差都盡量的小,那么最優(yōu)點就是在驗證集誤差的最低點,訓(xùn)練應(yīng)該在該點處停止,也就是選取該點處的權(quán)重值作為神經(jīng)網(wǎng)絡(luò)的參數(shù)。
但是這種優(yōu)化方法有很大的缺點。因為提前停止訓(xùn)練,也就是停止優(yōu)化訓(xùn)練集的誤差,通常情況下,在驗證集誤差達到最小值時,訓(xùn)練集誤差還未處于一個足夠小的值。從而使得該模型雖然沒有出現(xiàn)過擬合現(xiàn)象,卻是出現(xiàn)了欠擬合的情況。當然,這種優(yōu)化方法還是有著表現(xiàn)優(yōu)異的使用場景的。
編輯:hfy
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100767
發(fā)布評論請先 登錄
相關(guān)推薦
評論