【譯】如何應(yīng)對 CNN 中的過擬合問題

個人主頁:http://hellogod.cn

什么是卷積、最大池化和 Dropout窝爪?

這篇文章是深度學(xué)習(xí)系列中一篇文章。請查看#系列1#系列2

數(shù)據(jù)增強(Data augmentation)

歡迎來到本系列教程的第三部分的學(xué)習(xí)!這周我會講解一些卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)的內(nèi)容并且討論如何解決欠擬合過擬合

一蛤奢、卷積(Convolution)

那么究竟什么是卷積呢?你可能還記得我之前的博客陶贼,我們使用了一個小的濾波器(Filter)啤贩,并在整個圖像上滑動這個濾波器。然后骇窍,將圖像的像素值與濾波器中的像素值相乘瓜晤。使用深度學(xué)習(xí)的優(yōu)雅之處在于我們不必考慮這些濾波器應(yīng)該是什么樣的(神經(jīng)網(wǎng)絡(luò)會自動學(xué)習(xí)并選取最佳的濾波器)锥余。通過隨機梯度下降(Stohastic Gradient Descent,SGD)腹纳,網(wǎng)絡(luò)能夠自主學(xué)習(xí)從而達到最優(yōu)濾波器效果。濾波器被隨機初始化驱犹,并且位置不變嘲恍。這意味著他們可以在圖像中找到任何物體。同時雄驹,該模型還能學(xué)習(xí)到是在這個圖像的哪個位置找到這個物體佃牛。

零填充(Zero Padding)是應(yīng)用此濾波器時的有用工具。這些都是在圖像周圍的零像素的額外邊框 —— 這允許我們在將濾鏡滑過圖像時捕獲圖像的邊緣医舆。你可能想知道濾波器應(yīng)該多大俘侠,研究表明象缀,較小的濾波器通常表現(xiàn)更好。在這個例子當(dāng)中爷速,我們使用大小為 3x3 的濾波器央星。

當(dāng)我們將這些濾波器依次滑過圖像時,我們基本上創(chuàng)建了另一個圖像惫东。因此莉给,如果我們的原始圖像是 30x 30 ,則帶有12個濾鏡的卷積層的輸出將為 30x30x12 ×冢現(xiàn)在我們有一個張量颓遏,它基本上是一個超過 2 維的矩陣。現(xiàn)在你也就知道 TensorFlow 的名字從何而來滞时。

在每個卷積層(或多個)之后叁幢,我們通常就得到了最大池化(Max pooling)層。這個層會減少圖像中的像素數(shù)量坪稽。例如遥皂,我們可以從圖像中取出一個正方形然后用這個正方形里面像素的最大值代替這個正方形。


最大池化

得益于最大池化刽漂,我們的濾波器可以探索圖像的較大部分演训。另外,由于像素損失贝咙,我們通常會增加使用最大池化后的濾波器數(shù)量样悟。
理論上來說,每個模型架構(gòu)都是可行的并且為你的的問題提供一個很好的解決方案庭猩。然而窟她,一些架構(gòu)比其他架構(gòu)要快得多。一個很差的架構(gòu)可能需要超過你剩余生命的時間來得出結(jié)果蔼水。因此震糖,考慮你的模型的架構(gòu)以及我們?yōu)槭裁词褂米畲蟪夭⒏淖兯褂玫臑V波器的數(shù)量是有意義的。為了在 CNN 上完成這個部分趴腋,這個頁面提供了一個很好的視頻吊说,可以將發(fā)生在 CNN 內(nèi)部的事情可視化。

二优炬、欠擬合 vs. 過擬合

你如何知道你的模型是否欠擬合颁井? 如果你的驗證集的準(zhǔn)確度高于訓(xùn)練集,那就是模型欠擬合蠢护。此外雅宾,如果整個模型表現(xiàn)得不好,也會被稱為欠擬合葵硕。例如眉抬,使用線性模型進行圖像識別通常會出現(xiàn)欠擬合的結(jié)果贯吓。也有可能是 Dropout(Dropout)的原因?qū)е履阍谏顚由窠?jīng)網(wǎng)絡(luò)中遇到欠擬合的情況。
Dropout 在模型訓(xùn)練時隨機將部分激活函數(shù)設(shè)置為零(讓網(wǎng)絡(luò)某些隱含層節(jié)點的權(quán)重不工作)蜀变,以避免過擬合宣决。這種情況一般不會發(fā)生在驗證/測試集的預(yù)測中,如果發(fā)生昏苏,你可以移除 Dropout來解決尊沸。如果模型現(xiàn)在出現(xiàn)大規(guī)模的過擬合,你可以開始添加小批量的 Dropout贤惯。

通用法則:從過度擬合模型開始洼专,然后采取措施消除過擬合。

當(dāng)你的模型過度適合訓(xùn)練集時孵构,就會發(fā)生過擬合屁商。那么模型將難以泛化從而無法識別不在訓(xùn)練集中的新例子。例如颈墅,你的模型只能識別你的訓(xùn)練集中的特定圖像蜡镶,而不是通用模型,同時你在訓(xùn)練集上的準(zhǔn)確性會高于驗證/測試集恤筛。那么我們可以通過哪些方法來減少過擬合呢官还?

減少過擬合的步驟

  1. 添加更多數(shù)據(jù)
  2. 使用數(shù)據(jù)增強
  3. 使用泛化性能更佳的模型結(jié)構(gòu)
  4. 添加正規(guī)化(多數(shù)情況下是 Dropout,L1 / L2正則化也有可能)
  5. 降低模型復(fù)雜性毒坛。

第一步當(dāng)然是采集更多的數(shù)據(jù)望伦。但是,在大多數(shù)情況下煎殷,你是做不到這一點的屯伞。這里我們先假定你采集到了所有的數(shù)據(jù)。下一步是數(shù)據(jù)增強:這也是我們一直推薦使用的方法豪直。

數(shù)據(jù)增強包括隨機旋轉(zhuǎn)圖像劣摇、放大圖像、添加顏色濾波器等等弓乙。

數(shù)據(jù)增加只適用于訓(xùn)練集而不是驗證/測試集末融。檢查你是不是使用了過多的數(shù)據(jù)增強十分有效。例如唆貌,如果你那一只貓的圖片放大太多滑潘,貓的特征就不再可見了,模型也就不會通過這些圖像的訓(xùn)練中獲得更好的效果锨咙。下面讓我們來探索一下數(shù)據(jù)增強!

對于 Fast AI 課程的學(xué)習(xí)者:請注意教材中使用 “width_zoom_range” 作為數(shù)據(jù)擴充參數(shù)之一追逮。但是酪刀,這個選項在 Keras 中不再可用粹舵。

原始圖像

現(xiàn)在我們來看看執(zhí)行數(shù)據(jù)增強后的圖像。所有的“貓”仍然能夠被清楚地識別出來骂倘。

數(shù)據(jù)增強之后的圖像

第三步是使用泛化性能更佳的模型結(jié)構(gòu)眼滤。然而,更重要的是第四步:增加正則化历涝。三個最受歡迎的選項是:Dropout诅需,L1 正則化和 L2 正則化。我之前提到過荧库,在深入的學(xué)習(xí)中堰塌,大部分情況下你看到的都是 Dropout 。Dropout 在訓(xùn)練中刪除隨機的激活樣本(使其為零)分衫。在 Vgg 模型中场刑,這僅適用于模型末端的完全連接的層。然而蚪战,它也可以應(yīng)用于卷積層牵现。要注意的是,Dropout 會導(dǎo)致信息丟失邀桑。如果你在第一層失去了一些信息瞎疼,那么整個網(wǎng)絡(luò)就會丟失這些信息。因此壁畸,一個好的做法是第一層使用較低的Dropout丑慎,然后逐漸增加。第五個也是最后一個選擇是降低網(wǎng)絡(luò)的復(fù)雜性瓤摧。實際上竿裂,在大多數(shù)情況下,各種形式的正規(guī)化足以應(yīng)付過擬合照弥。


左邊是原來的神經(jīng)網(wǎng)絡(luò)腻异,右邊是采用 Dropout 后的網(wǎng)絡(luò)

三、批量歸一化(Batch Normalization )

最后这揣,我們來討論批量歸一化悔常。這是你永遠都需要做的事情!批量歸一化是一個相對較新的概念给赞,因此在 Vgg 模型中尚未實現(xiàn)机打。

如果你對機器學(xué)習(xí)有所了解,你一定聽過標(biāo)準(zhǔn)化模型輸入片迅。批量歸一化加強了這一步残邀。批量歸一化在每個卷積層之后添加“歸一化層”。這使得模型在訓(xùn)練中收斂得更快,因此也允許你使用更高的學(xué)習(xí)率芥挣。

簡單地標(biāo)準(zhǔn)化每個激活層中的權(quán)重不起作用驱闷。隨機梯度下降非常頑固。如果使得其中一個比重非常高空免,那么下一次訓(xùn)練它就會簡單地重復(fù)這個過程空另。通過批量歸一化,模型可以在每次訓(xùn)練中調(diào)整所有的權(quán)重而非僅僅只是一個權(quán)重蹋砚。

四扼菠、MNIST 數(shù)字識別

MNIST手寫數(shù)字數(shù)據(jù)集是機器學(xué)習(xí)中最著名的數(shù)據(jù)集之一。數(shù)據(jù)集也是一個檢驗我們所學(xué) CNN 知識的很好的方式坝咐。Kaggle也承載了 MNIST 數(shù)據(jù)集循榆。這段我很快寫出的代碼,在這個數(shù)據(jù)集上的準(zhǔn)確度為96.8%畅厢。

import pandas as pd
from sklearn.ensemble import RandomForestClassifier

train = pd.read_csv('train_digits.csv')
test = pd.read_csv('test_digits.csv')

X = train.drop('label', axis=1)
y = train['label']

rfc = RandomForestClassifier(n_estimators=300)
pred = rfc.fit(X, y).predict(test)

然而冯痢,配備深層 CNN 可以達到 99.7% 的效果。本周我將嘗試將 CNN 應(yīng)用到這個數(shù)據(jù)集上框杜,希望我在下周可以報告最新的準(zhǔn)確率并且討論我所遇到的問題浦楣。

如果你喜歡這篇文章,歡迎推薦它以便其他人可以看到它咪辱。您還可以按照此配置文件跟上我在 fast AI 課程中的進度振劳。到時候見!

譯者注: 翻譯本文的時候油狂,我事先查閱了一些資料以保證對于原文有更好的理解历恐,但是由于個人水平有限等等原因,有些地方表達的不甚清楚专筷,同時還添加了一定的輔助參考信息以更好的說明問題弱贼。若讀者在譯文中發(fā)現(xiàn)問題,歡迎隨時與我聯(lián)系或提 issue磷蛹。

個人主頁:http://hellogod.cn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吮旅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子味咳,更是在濱河造成了極大的恐慌庇勃,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件槽驶,死亡現(xiàn)場離奇詭異责嚷,居然都是意外死亡,警方通過查閱死者的電腦和手機掂铐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門罕拂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揍异,“玉大人,你說我怎么就攤上這事聂受≥锴兀” “怎么了烤镐?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵蛋济,是天一觀的道長。 經(jīng)常有香客問我炮叶,道長碗旅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任镜悉,我火速辦了婚禮祟辟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侣肄。我一直安慰自己旧困,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布稼锅。 她就那樣靜靜地躺著吼具,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矩距。 梳的紋絲不亂的頭發(fā)上拗盒,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音锥债,去河邊找鬼陡蝇。 笑死,一個胖子當(dāng)著我的面吹牛哮肚,可吹牛的內(nèi)容都是我干的登夫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼允趟,長吁一口氣:“原來是場噩夢啊……” “哼恼策!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拼窥,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤戏蔑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鲁纠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體总棵,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年改含,在試婚紗的時候發(fā)現(xiàn)自己被綠了情龄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖骤视,靈堂內(nèi)的尸體忽然破棺而出鞍爱,到底是詐尸還是另有隱情,我是刑警寧澤专酗,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布睹逃,位于F島的核電站,受9級特大地震影響祷肯,放射性物質(zhì)發(fā)生泄漏沉填。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一佑笋、第九天 我趴在偏房一處隱蔽的房頂上張望翼闹。 院中可真熱鬧,春花似錦蒋纬、人聲如沸猎荠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽关摇。三九已至,卻和暖如春琼掠,著一層夾襖步出監(jiān)牢的瞬間拒垃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工瓷蛙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悼瓮,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓艰猬,卻偏偏與公主長得像横堡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冠桃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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