深度網(wǎng)絡(luò)的過擬合問題討論

Author: Zongwei Zhou | 周縱葦
Weibo: @MrGiovanni
Email: zongweiz@asu.edu
原博客:深度網(wǎng)絡(luò)的過擬合問題討論


1. 問題背景

最近做深度學(xué)習(xí)實驗的時候遇到了一個很棘手的問題池摧,那就是大名鼎鼎的“過擬合”绽淘,直觀地表現(xiàn)在圖中是長這個樣子的,分析來講就是說深度網(wǎng)絡(luò)在擬合訓(xùn)練集的時候是可以很好地實現(xiàn)苫耸,Loss很小,Accuracy很大(我這兒能達到99.99%),但是呢这嚣,測試集的Loss很大,Accuracy在一個比較低的范圍內(nèi)波動(我這兒是70%-80%)塞俱,并沒有像論文中說的那樣姐帚,測試集的Loss隨著迭代的增加而減小,Accuracy隨著迭代的增加而增大障涯。

如果你沒有看出來上圖有什么毛病的話罐旗,我就放一張理想狀態(tài)的結(jié)果圖做對比(如下圖粗粗的線),畫的比較挫唯蝶,但是大概的意思在那兒尤莺,隨著迭代的增加,訓(xùn)練集和測試集的精確度應(yīng)該上升生棍,我們可以容忍測試集的精確度沒有訓(xùn)練集那么高,畢竟有擬合的誤差媳谁,但是像上圖我做出來的結(jié)果那樣涂滴,一定是“過擬合”啦友酱。

用白話來說“過擬合”就是:老師給你的題你都會做了,考試給你換個花樣你就懵逼了柔纵。好缔杉,老師給你的題就相當(dāng)于我們的訓(xùn)練數(shù)據(jù),考試的題相當(dāng)于測試數(shù)據(jù)搁料,“過擬合”就是深度網(wǎng)絡(luò)把訓(xùn)練的數(shù)據(jù)擬合的特別好或详,但是有點好過頭了,對訓(xùn)練數(shù)據(jù)當(dāng)然是100%好用郭计,但是一來測試數(shù)據(jù)就瘋了霸琴,那這樣的網(wǎng)絡(luò)訓(xùn)練出來其實是沒有用的,訓(xùn)練集已經(jīng)是監(jiān)督學(xué)習(xí)了昭伸,擬合的再好也沒用梧乘。 體現(xiàn)在函數(shù)上就是下圖

2. 網(wǎng)絡(luò)結(jié)構(gòu)介紹

我實驗中用到的深度網(wǎng)絡(luò)結(jié)構(gòu)原型是Fully Convolutional Networks,參考的論文中也叫它U-Net庐杨,總之就是一個用來做圖像分割的深度網(wǎng)絡(luò)选调。示意圖如下:

用Keras的實現(xiàn)代碼是:

大概的問題背景和網(wǎng)絡(luò)結(jié)構(gòu)介紹完畢,更多實驗Details請參考"PET/CT images segmentation via U-Net, using keras".

3. 問題分析

當(dāng)年LeNet-5在手寫字的識別上出盡了風(fēng)頭灵份,但是當(dāng)LeNet-5應(yīng)用到其他數(shù)據(jù)集中的時候卻出現(xiàn)了很多問題仁堪,從此,學(xué)者們開始了瘋狂的理論填渠、實踐探索弦聂。“過擬合”問題算是深度學(xué)習(xí)中一個特別重要的問題揭蜒,老生常談了横浑,也有不少解決的方法供我選擇。
舉例來講(感謝“知乎深度學(xué)習(xí)Keras”——QQ群中大神們的幫助):
1. 加入Dropout層
2. 檢查數(shù)據(jù)集是否過刑敫(Data Augmentation)
3. 用一用遷移學(xué)習(xí)的思想
4. 調(diào)參小tricks.

  • 調(diào)小學(xué)習(xí)速率(Learning Rate)
  • 調(diào)小每次反向傳播的訓(xùn)練樣本數(shù)(batch_size)

5. 試一試別的優(yōu)化器(optimizer)
6. Keras的回調(diào)函數(shù)EarlyStopping()
評價:我認為第一個是比較可行徙融,因為“教科書”上的確有說dropout是專門用來對付“過擬合”問題的。

關(guān)于數(shù)據(jù)集的大小瑰谜,這也是導(dǎo)致過擬合的原因欺冀,如果太小,很容易過擬合萨脑。那么多大的數(shù)據(jù)集夠了呢隐轩?反正我的肯定夠了,我的深度網(wǎng)絡(luò)輸入圖像是369,468幅渤早,68·80像素的职车,二通道輸入,總共的大小是19.5GB。這個數(shù)據(jù)量可以說是十分可觀了悴灵,所以對我來說扛芽,第二條可能不適用。那么如果想要擴充數(shù)據(jù)集积瞒,需要用到Data Augmentation川尖,這個是在醫(yī)學(xué)影像中十分常用的手段,包括平移茫孔,旋轉(zhuǎn)叮喳,拉伸,扭曲等等變換造出新的數(shù)據(jù)缰贝,來增加數(shù)據(jù)量馍悟。

第三條是深度學(xué)習(xí)中比較有效的方法了,英文名叫fine-tuning揩瞪,就是用已有的訓(xùn)練完的網(wǎng)絡(luò)參數(shù)作為初始化赋朦,在這個基礎(chǔ)上繼續(xù)訓(xùn)練。原來的網(wǎng)絡(luò)參數(shù)往往會在很多論文和github里頭能找到李破,這是在很大的圖像數(shù)據(jù)集中訓(xùn)練完的網(wǎng)絡(luò)宠哄,根據(jù)圖形圖像的“語義”相似性(我也不知道該怎么描述,就是認為世界上的圖片都有某種相似性嗤攻,就像人類毛嫉,每個人都長得不一樣,但是你不會把人和其他動物混在一起妇菱,這就是一個宏觀的承粤,抽象的相似性),把這個網(wǎng)絡(luò)“遷移”到一個新的圖像數(shù)據(jù)集中是有一定的道理的闯团。由于時間原因辛臊,我暫時還沒有采用這個。

第四條就是比較說不清道不明的調(diào)參了房交,這幾乎是機器學(xué)習(xí)的主要話題彻舰,人說“有多少人工,就有多少智能”候味,這個調(diào)參真的需要“經(jīng)驗”啊哈哈哈刃唤。知乎上有一篇比較精彩的帖子:你有哪些deep learning(rnn、cnn)調(diào)參的經(jīng)驗白群? 不好意思尚胞,第五條又是試湊法。帜慢。笼裳∥簦可供選擇的Optimizers有很多,都試一下侍咱,看看用哪兒效果好耐床,聽上去有點喪心病狂了。 第六條方法是一個小函數(shù)楔脯,叫做EarlyStopping,代碼如下

作用是監(jiān)視每次迭代的指標(biāo)胯甩,比如說這兒監(jiān)視的是val_loss(測試集的Loss)昧廷,隨著迭代的增加,當(dāng)val_loss不再發(fā)生大的變化的時候可以終止訓(xùn)練偎箫,在過擬合之前阻斷木柬。這種策略也稱為“No-improvement-in-n”,n就是Epoch的次數(shù)淹办。

不幸的是眉枕,以上六個方案,我測試了以后都沒有很好地解決“過擬合”問題怜森。

4. 正則化方法

正則化方法是指在進行目標(biāo)函數(shù)或代價函數(shù)優(yōu)化時速挑,在目標(biāo)函數(shù)或代價函數(shù)后面加上一個正則項,一般有L1正則與L2正則等副硅。這個很理論了姥宝,會涉及到一些公式。

這部分內(nèi)容我在學(xué)習(xí)的時候就當(dāng)它純理論來記恐疲,當(dāng)時根本沒有想過會去真正用它腊满,看來現(xiàn)在是必須要try一下了。

要在Keras中修改這部分代價函數(shù)(Objectives)的代碼培己,可以參考這部分內(nèi)容碳蛋,里面包括了若干個代價函數(shù),如果想要自己編寫代價函數(shù)也可以的省咨。根據(jù)這個博客:基于Theano的深度學(xué)習(xí)(Deep Learning)框架Keras學(xué)習(xí)隨筆08規(guī)則化(規(guī)格化)肃弟,有效解決過擬合的方法就是加入規(guī)則項。具體的規(guī)則化可以參見深度學(xué)習(xí)(DL)與卷積神經(jīng)網(wǎng)絡(luò)(CNN)學(xué)習(xí)筆記隨筆-04-基于Python的LeNet之MLP中對于規(guī)則化的介紹茸炒。博主Tig_Free是真神啊愕乎,膜拜一下!

5. 問題解決

最終壁公,過擬合的現(xiàn)象基本上被控制住了感论,總的來說,L1/L2規(guī)范化的確是很牛逼紊册,在學(xué)術(shù)論文中也有所體現(xiàn):

網(wǎng)絡(luò)調(diào)整如下:

配置:)
1. dropout層(0.3)
2. 全連接層的L2規(guī)范化
3. 優(yōu)化器(adadelta)
4. 學(xué)習(xí)速率(1e-9)

達到的效果比較令人滿意比肄,不僅訓(xùn)練集的Loss在降低快耿,Acc在上升,測試集的Loss也同樣降低芳绩,測試集的Acc在上升掀亥,整體的網(wǎng)絡(luò)學(xué)習(xí)性能也變得比以前好了。

至此妥色,深度網(wǎng)絡(luò)的過擬合問題暫時告一段落搪花。

6. 關(guān)于過擬合的參考材料

[1] 機器學(xué)習(xí)中使用「正則化來防止過擬合」到底是一個什么原理?為什么正則化項就可以防止過擬合嘹害?
[2] 機器學(xué)習(xí)中防止過擬合的處理方法
[3] 用簡單易懂的語言描述「過擬合 overfitting」撮竿?
[4] Reducing Overfitting in Deep Networks by Decorrelating Representations. Michael Cogswell, Faruk Ahmed, Ross Girshick, Larry Zitnick, Dhruv Batra (2015)
[5] Dropout: A Simple Way to Prevent Neural Networks from Overfitting. N Srivastava, G Hinton, A Krizhevsky, I Sutskever, R Salakhutdinov (2014)
[6] Overfitting & Regularization (墻)
[7] Regularization in Statistics. PJ Bickel, B Li (2006)
[8] Overfitting, Regularization, and Hyperparameters (墻)
[9] Overfitting. by Hal Daume III (墻)
[10] Data Science 101: Preventing Overfitting in Neural Networks. by Nikhil Buduma (墻)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笔呀,隨后出現(xiàn)的幾起案子幢踏,更是在濱河造成了極大的恐慌,老刑警劉巖许师,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件房蝉,死亡現(xiàn)場離奇詭異,居然都是意外死亡微渠,警方通過查閱死者的電腦和手機搭幻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敛助,“玉大人粗卜,你說我怎么就攤上這事∧苫鳎” “怎么了续扔?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焕数。 經(jīng)常有香客問我纱昧,道長,這世上最難降的妖魔是什么堡赔? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任识脆,我火速辦了婚禮,結(jié)果婚禮上善已,老公的妹妹穿的比我還像新娘灼捂。我一直安慰自己,他們只是感情好换团,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布悉稠。 她就那樣靜靜地躺著,像睡著了一般艘包。 火紅的嫁衣襯著肌膚如雪的猛。 梳的紋絲不亂的頭發(fā)上耀盗,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音卦尊,去河邊找鬼叛拷。 笑死,一個胖子當(dāng)著我的面吹牛岂却,可吹牛的內(nèi)容都是我干的忿薇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躏哩,長吁一口氣:“原來是場噩夢啊……” “哼煌恢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起震庭,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎你雌,沒想到半個月后器联,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡婿崭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年拨拓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氓栈。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡渣磷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出授瘦,到底是詐尸還是另有隱情醋界,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布提完,位于F島的核電站形纺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏徒欣。R本人自食惡果不足惜逐样,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望打肝。 院中可真熱鬧脂新,春花似錦、人聲如沸粗梭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽楼吃。三九已至始花,卻和暖如春妄讯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酷宵。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工亥贸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浇垦。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓炕置,卻偏偏與公主長得像,于是被迫代替她去往敵國和親男韧。 傳聞我的和親對象是個殘疾皇子朴摊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容