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