深度學(xué)習(xí)性能提升的方法

深度學(xué)習(xí)性能提升的方法

原文: How To Improve Deep Learning Performance

克服過(guò)擬合和提高泛化能力的20條技巧和訣竅

提升算法性能的想法

  • 這個(gè)列表并不完整砍鸠,卻是很好的出發(fā)點(diǎn)。

  • 我的目的是給大家拋出一些想法供大家嘗試徘意,或許有那么一兩個(gè)有效的方法装盯。

  • 往往只需要嘗試一個(gè)想法就能得到提升禽篱。

  • 如果你用下面某一種想法取得了好效果,請(qǐng)?jiān)谠u(píng)論區(qū)給我留言!

  • 如果你還有其它想法或是對(duì)這些想法有拓展嗜逻,也請(qǐng)告訴大家动知,或許會(huì)對(duì)我們大家有幫助皿伺!

  • 我把這個(gè)列表劃分為四塊:

    • 從數(shù)據(jù)上提升性能
    • 從算法上提升性能
    • 從算法調(diào)優(yōu)上提升性能
    • 從模型融合上提升性能

1.從數(shù)據(jù)上提升性能

調(diào)整訓(xùn)練數(shù)據(jù)或是問(wèn)題的抽象定義方法可能會(huì)帶來(lái)巨大的效果改善。甚至是最顯著的改善盒粮。
下面是概覽:

  1. 收集更多的數(shù)據(jù)
  2. 產(chǎn)生更多的數(shù)據(jù)
  3. 對(duì)數(shù)據(jù)做縮放
  4. 對(duì)數(shù)據(jù)做變換
  5. 特征選擇
  6. 重新定義問(wèn)題

1)收集更多的數(shù)據(jù)

你還能收集到更多的訓(xùn)練數(shù)據(jù)嗎鸵鸥?
你的模型的質(zhì)量往往取決于你的訓(xùn)練數(shù)據(jù)的質(zhì)量。你需要確保使用的數(shù)據(jù)是針對(duì)問(wèn)題最有效的數(shù)據(jù)丹皱。
你還希望數(shù)據(jù)盡可能多妒穴。
深度學(xué)習(xí)和其它現(xiàn)代的非線性機(jī)器學(xué)習(xí)模型在大數(shù)據(jù)集上的效果更好,尤其是深度學(xué)習(xí)摊崭。這也是深度學(xué)習(xí)方法令人興奮的主要原因之一讼油。
請(qǐng)看下面的圖片:

image

什么是深度學(xué)習(xí)?
幻燈片來(lái)自Andrew Ng

不總是數(shù)據(jù)閱讀效果越好呢簸,多數(shù)情況下如此矮台。如果讓我選擇乏屯,我會(huì)選擇要更多的數(shù)據(jù)。
相關(guān)閱讀:

2) 產(chǎn)生更多的數(shù)據(jù)

深度學(xué)習(xí)算法往往在數(shù)據(jù)量大的時(shí)候效果好瘦赫。
我們?cè)谏弦还?jié)已經(jīng)提到過(guò)這一點(diǎn)辰晕。
如果由于某些原因你得不到更多的數(shù)據(jù),也可以制造一些數(shù)據(jù)确虱。

  • 如果你的數(shù)據(jù)是數(shù)值型的向量含友,那么隨機(jī)生成已有向量的變形向量。
  • 如果你的數(shù)據(jù)是圖像校辩,用已有的圖像隨機(jī)生成相似圖像唱较。
  • 如果你的數(shù)據(jù)是文本,做法你懂得......

這類做法通常被稱為數(shù)據(jù)擴(kuò)展或是數(shù)據(jù)生成召川。
你可以使用生成模型南缓,也可以用一些簡(jiǎn)單的小技巧。
舉個(gè)例子荧呐,若是用圖像數(shù)據(jù)汉形,簡(jiǎn)單地隨機(jī)選擇和平移已有的圖像就能取得很大的提升。它能提升模型的泛化能力倍阐,如果新的數(shù)據(jù)中包含這類變換就能得到很好的處理概疆。
有時(shí)候是往數(shù)據(jù)中增加噪聲,這相當(dāng)于是一種規(guī)則方法峰搪,避免過(guò)擬合訓(xùn)練數(shù)據(jù)岔冀。
相關(guān)閱讀:

3) 對(duì)數(shù)據(jù)做縮放

此方法簡(jiǎn)單有效。
使用神經(jīng)網(wǎng)絡(luò)模型的一條經(jīng)驗(yàn)法寶就是:
將數(shù)據(jù)縮放到激活函數(shù)的閾值范圍概耻。
如果你使用sigmoid激活函數(shù)使套,將數(shù)據(jù)縮放到0~1之間。如果選用tanh激活函數(shù)鞠柄,將值域控制在-1~1之間侦高。
輸入、輸出數(shù)據(jù)都經(jīng)過(guò)同樣的變換厌杜。比如奉呛,如果在輸出層有一個(gè)sigmoid函數(shù)將輸出值轉(zhuǎn)換為二值數(shù)據(jù),則將輸出的y歸一化為二進(jìn)制夯尽。如果選用的是softmax函數(shù)瞧壮,對(duì)y進(jìn)行歸一化還是有效的。
我還建議你將訓(xùn)練數(shù)據(jù)擴(kuò)展生成多個(gè)不同的版本:

  • 歸一化到0 ~ 1
  • 歸一化到-1 ~ 1
  • 標(biāo)準(zhǔn)化

然后在每個(gè)數(shù)據(jù)集上測(cè)試模型的性能匙握,選用最好的一組生成數(shù)據(jù)咆槽。
如果更換了激活函數(shù),最好重復(fù)做一次這個(gè)小實(shí)驗(yàn)肺孤。
在模型中不適合計(jì)算大的數(shù)值罗晕。此外济欢,還有許多其它方法來(lái)壓縮模型中的數(shù)據(jù)赠堵,比如對(duì)權(quán)重和激活值做歸一化小渊,我會(huì)在后面介紹這些技巧。
相關(guān)閱讀:

4) 對(duì)數(shù)據(jù)做變換

與上一節(jié)的方法相關(guān)茫叭,但是需要更多的工作量酬屉。
你必須真正了解所用到的數(shù)據(jù)。數(shù)據(jù)可視化揍愁,然后挑出異常值呐萨。
先猜測(cè)每一列數(shù)據(jù)的分布

  • 這一列數(shù)據(jù)是不是傾斜的高斯分布,若是如此莽囤,嘗試用Box-Cox方法糾正傾斜
  • 這一列數(shù)據(jù)是不是指數(shù)分布谬擦,若是如此,則進(jìn)行對(duì)數(shù)變換
  • 這一列數(shù)據(jù)是不是存在某些特性朽缎,但是難以直觀地發(fā)現(xiàn)惨远,嘗試一下對(duì)數(shù)據(jù)平方或者開(kāi)方
  • 是否可以將特征離散化,以便更好地強(qiáng)調(diào)一些特征

憑你的直覺(jué)话肖,嘗試幾種方法

  • 是否可以用投影的方法對(duì)數(shù)據(jù)預(yù)處理北秽,比如PCA?
  • 是否可以將多個(gè)屬性合并為單個(gè)值最筒?
  • 是否可以發(fā)掘某個(gè)新的屬性贺氓,用布爾值表示?
  • 是否可以在時(shí)間尺度或是其它維度上有些新發(fā)現(xiàn)床蜘?

神經(jīng)網(wǎng)絡(luò)有特征學(xué)習(xí)的功能钢猛,它們能夠完成這些事情。
不過(guò)你若是可以將問(wèn)題的結(jié)構(gòu)更好地呈現(xiàn)出來(lái)梳玫,網(wǎng)絡(luò)模型學(xué)習(xí)的速度就會(huì)更快劝堪。
在訓(xùn)練集上快速嘗試各種變換方法,看看哪些方法有些弹囚,而哪些不起作用厨相。
相關(guān)閱讀:

5) 特征選擇

神經(jīng)網(wǎng)絡(luò)受不相關(guān)數(shù)據(jù)的影響很小鸥鹉。
它們會(huì)對(duì)此賦予一個(gè)趨近于0的權(quán)重蛮穿,幾乎忽略此特征對(duì)預(yù)測(cè)值的貢獻(xiàn)。
你是否可以移除訓(xùn)練數(shù)據(jù)的某些屬性呢毁渗?
我們有許多的特征選擇方法和特征重要性方法來(lái)鑒別哪些特征可以保留践磅,哪些特征需要移除。
動(dòng)手試一試灸异,試一試所有的方法府适。
如果你的時(shí)間充裕羔飞,我還是建議在相同的神經(jīng)網(wǎng)絡(luò)模型上選擇嘗試多個(gè)方法,看看它們的效果分別如何檐春。

  • 也許用更少的特征也能得到同樣的逻淌、甚至更好的效果。
  • 也許所有的特征選擇方法都選擇拋棄同一部分特征屬性疟暖。那么就真應(yīng)該好好審視這些無(wú)用的特征卡儒。
  • 也許選出的這部分特征給你帶來(lái)了新的啟發(fā),構(gòu)建出更多的新特征俐巴。

相關(guān)閱讀:

6) 問(wèn)題重構(gòu)

在回到你問(wèn)題的定義上來(lái)骨望。
你所收集到的這些觀測(cè)數(shù)據(jù)是描述問(wèn)題的唯一途徑嗎?
也許還有其它的途徑欣舵。也許其它途徑能更清晰地將問(wèn)題的結(jié)構(gòu)暴露出來(lái)擎鸠。
我自己非常喜歡這種練習(xí),因?yàn)樗鼜?qiáng)迫我們拓寬思路缘圈。很難做好劣光。尤其是當(dāng)你已經(jīng)投入大量的時(shí)間、精力准验、金錢在現(xiàn)有的方法上赎线。
即使你列舉了3 ~ 5種不同的方式,至少你對(duì)最后所選用的方式有充足的信心糊饱。

  • 也許你可以將時(shí)間元素融入到一個(gè)窗口之中
  • 也許你的分類問(wèn)題可以轉(zhuǎn)化為回歸問(wèn)題垂寥,反之亦然
  • 也許可以把二值類型的輸出轉(zhuǎn)化為softmax的輸出
  • 也許你可以對(duì)子問(wèn)題建模

深入思考問(wèn)題是一個(gè)好習(xí)慣,最好在選擇工具下手之前先完成上述步驟另锋,以減少無(wú)效的精力投入滞项。
無(wú)論如何,如果你正束手無(wú)策夭坪,這個(gè)簡(jiǎn)單的連續(xù)能讓你思如泉涌文判。
另外,你也不必拋棄前期的大量工作室梅,詳情可以參見(jiàn)后面的章節(jié)戏仓。

相關(guān)閱讀:

  1. 從算法上提升性能

機(jī)器學(xué)習(xí)總是與算法相關(guān)。
所有的理論和數(shù)學(xué)知識(shí)都在描述從數(shù)據(jù)中學(xué)習(xí)決策過(guò)程的不同方法(如果我們這里僅討論預(yù)測(cè)模型)亡鼠。
你選用深度學(xué)習(xí)來(lái)求解赏殃,它是不是最合適的技術(shù)呢?
在這一節(jié)中间涵,我們會(huì)簡(jiǎn)單地聊一下算法的選擇仁热,后續(xù)內(nèi)容會(huì)具體介紹如何提升深度學(xué)習(xí)的效果。
下面是概覽:

  1. 算法的篩選
  2. 從文獻(xiàn)中學(xué)習(xí)
  3. 重采樣的方法

我們一條條展開(kāi)勾哩。

1) 算法的篩選

你事先不可能知道哪種算法對(duì)你的問(wèn)題效果最好抗蠢。
如果你已經(jīng)知道举哟,你可能也就不需要機(jī)器學(xué)習(xí)了。
你有哪些證據(jù)可以證明現(xiàn)在已經(jīng)采用的方法是最佳選擇呢迅矛?
我們來(lái)想想這個(gè)難題妨猩。
當(dāng)在所有可能出現(xiàn)的問(wèn)題上進(jìn)行效果評(píng)測(cè)時(shí),沒(méi)有哪一項(xiàng)單獨(dú)的算法效果會(huì)好于其它算法诬乞。所有的算法都是平等的册赛。這就是天下沒(méi)有免費(fèi)的午餐理論的要點(diǎn)钠导。

也許你選擇的算法并不是最適合你的問(wèn)題震嫉。
現(xiàn)在,我們不指望解決所有的問(wèn)題牡属,但當(dāng)前的熱門算法也許并不適合你的數(shù)據(jù)集票堵。
我的建議是先收集證據(jù),先假設(shè)有其它的合適算法適用于你的問(wèn)題逮栅。
篩選一些常用的算法悴势,挑出其中適用的幾個(gè)。

  • 嘗試一些線性算法措伐,比如邏輯回歸和線性判別分析
  • 嘗試一些樹(shù)模型特纤,比如CART、隨機(jī)森林和梯度提升
  • 嘗試SVM和kNN等算法
  • 嘗試其它的神經(jīng)網(wǎng)絡(luò)模型侥加,比如LVQ捧存、MLP、CNN担败、LSTM等等

采納效果較好的幾種方法昔穴,然后精細(xì)調(diào)解參數(shù)和數(shù)據(jù)來(lái)進(jìn)一步提升效果。
將你所選用的深度學(xué)習(xí)方法與上述這些方法比較提前,看看是否能擊敗他們吗货?
也許你可以放棄深度學(xué)習(xí)模型轉(zhuǎn)而選擇更簡(jiǎn)單模型,訓(xùn)練的速度也會(huì)更快狈网,而且模型易于理解宙搬。
相關(guān)閱讀:

2) 從文獻(xiàn)中學(xué)習(xí)

從文獻(xiàn)中"竊取"思路是一條捷徑。
其它人是否已經(jīng)做過(guò)和你類似的問(wèn)題拓哺,他們使用的是什么方法勇垛。
閱讀論文、書(shū)籍拓售、問(wèn)答網(wǎng)站窥摄、教程以及Google給你提供的一切信息。
記下所有的思路础淤,然后沿著這些方向繼續(xù)探索崭放。
這并不是重復(fù)研究哨苛,這是幫助你發(fā)現(xiàn)新的思路。

優(yōu)先選擇已經(jīng)發(fā)表的論文
已經(jīng)有許許多多的聰明人寫(xiě)下了很多有意思的事情币砂。利用好這寶貴的資源吧建峭。
相關(guān)閱讀:

3) 重采樣的方法

你必須明白自己模型的效果如何。
你估計(jì)的模型效果是否可靠呢决摧?
深度學(xué)習(xí)模型的訓(xùn)練速度很慢亿蒸。
這就意味著我們不能用標(biāo)準(zhǔn)的黃金法則來(lái)評(píng)判模型的效果,比如k折交叉驗(yàn)證掌桩。

  • 也許你只是簡(jiǎn)單地把數(shù)據(jù)分為訓(xùn)練集和測(cè)試集边锁。如果是這樣,就需要保證切分后的數(shù)據(jù)分布保持不變波岛。單變量統(tǒng)計(jì)和數(shù)據(jù)可視化是不錯(cuò)的方法茅坛。
  • 也許你們可以擴(kuò)展硬件來(lái)提升效果。舉個(gè)例子则拷,如果你有一個(gè)集群或是AWS的賬號(hào)贡蓖,我們可以并行訓(xùn)練n個(gè)模型,然后選用它們的均值和方差來(lái)獲取更穩(wěn)定的效果煌茬。
  • 也許你可以選擇一部分?jǐn)?shù)據(jù)做交叉驗(yàn)證(對(duì)于early stopping非常有效)斥铺。
  • 也許你可以完全獨(dú)立地保留一部分?jǐn)?shù)據(jù)用于模型的驗(yàn)證。

另一方面坛善,也可以讓數(shù)據(jù)集變得更小晾蜘,采用更強(qiáng)的重采樣方法。

  • 也許你會(huì)看到在采樣后的數(shù)據(jù)集上訓(xùn)練得到的模型效果與在全體數(shù)據(jù)集上訓(xùn)練得到的效果有很強(qiáng)的相關(guān)性浑吟。那么笙纤,你就可以用小數(shù)據(jù)集進(jìn)行模型的選擇,然后把最終選定的方法應(yīng)用于全體數(shù)據(jù)集上组力。
  • 也許你可以任意限制數(shù)據(jù)集的規(guī)模省容,采樣一部分?jǐn)?shù)據(jù),用它們完成所有的訓(xùn)練任務(wù)燎字。

你必須對(duì)模型效果的預(yù)測(cè)有十足的把握腥椒。
相關(guān)閱讀:

  1. 從算法調(diào)優(yōu)上提升性能

你通過(guò)算法篩選往往總能找出一到兩個(gè)效果不錯(cuò)的算法。但想要達(dá)到這些算法的最佳狀態(tài)需要耗費(fèi)數(shù)日候衍、數(shù)周甚至數(shù)月笼蛛。
下面是一些想法,在調(diào)參時(shí)能有助于提升算法的性能蛉鹿。

  • 模型可診斷性
  • 權(quán)重的初始化
  • 學(xué)習(xí)率
  • 激活函數(shù)
  • 網(wǎng)絡(luò)結(jié)構(gòu)
  • batch和epoch
  • 正則項(xiàng)
  • 優(yōu)化目標(biāo)
  • 提早結(jié)束訓(xùn)練

你可能需要指定參數(shù)來(lái)多次(3-10次甚至更多)訓(xùn)練模型滨砍,以得到預(yù)計(jì)效果最好的一組參數(shù)。對(duì)每個(gè)參數(shù)都要不斷的嘗試。
有一篇關(guān)于超參數(shù)最優(yōu)化的優(yōu)質(zhì)博客:

1) 可診斷性

只有知道為何模型的性能不再有提升了惋戏,才能達(dá)到最好的效果领追。
是因?yàn)槟P瓦^(guò)擬合呢,還是欠擬合呢响逢?
千萬(wàn)牢記這個(gè)問(wèn)題绒窑。千萬(wàn)。
模型總是處于這兩種狀態(tài)之間舔亭,只是程度不同罷了些膨。
一種快速查看模型性能的方法就是每一步計(jì)算模型在訓(xùn)練集和驗(yàn)證集上的表現(xiàn),將結(jié)果繪制成圖表钦铺。

image

在訓(xùn)練集和驗(yàn)證集上測(cè)試模型的準(zhǔn)確率

  • 如果訓(xùn)練集的效果好于驗(yàn)證集订雾,說(shuō)明可能存在過(guò)擬合的現(xiàn)象,試一試增加正則項(xiàng)
  • 如果訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率都很低职抡,說(shuō)明可能存在欠擬合葬燎,你可以繼續(xù)提升模型的能力误甚,延長(zhǎng)訓(xùn)練步驟缚甩。
  • 如果訓(xùn)練集和驗(yàn)證集的曲線有一個(gè)焦點(diǎn),可能需要用到early
    stopping的技巧了

經(jīng)常繪制類似的圖表窑邦,深入研究并比較不同的方法擅威,以提高模型的性能。

這些圖表也許是你最有價(jià)值的診斷工具冈钦。
另一種有效的診斷方法是研究模型正確預(yù)測(cè)或是錯(cuò)誤預(yù)測(cè)的樣本郊丛。
在某些場(chǎng)景下,這種方法能給你提供一些思路瞧筛。

  • 也許你需要更多的難預(yù)測(cè)的樣本數(shù)據(jù)
  • 也許你可以從訓(xùn)練集中刪去那些容易被學(xué)習(xí)的樣本
  • 也許你可以有針對(duì)性地對(duì)不同類型的輸入數(shù)據(jù)訓(xùn)練不同的模型

相關(guān)閱讀:

2) 權(quán)重的初始化

有一條經(jīng)驗(yàn)規(guī)則:用小的隨機(jī)數(shù)初始化權(quán)重厉熟。
事實(shí)上,這可能已經(jīng)足夠了较幌。但是這是你網(wǎng)絡(luò)模型的最佳選擇嗎揍瑟?
不同的激活函數(shù)也可以有不同的應(yīng)對(duì)策略,但我不記得在實(shí)踐中存在什么顯著的差異乍炉。
保持你的模型結(jié)構(gòu)不變绢片,試一試不同的初始化策略。
記住岛琼,權(quán)重值就是你模型需要訓(xùn)練的參數(shù)底循。幾組不同的權(quán)重值都能取得不錯(cuò)的效果,但你想得到更好的效果槐瑞。

  • 嘗試所有的初始化方法熙涤,找出最好的一組初始化值
  • 試一試用非監(jiān)督式方法預(yù)學(xué)習(xí),比如自動(dòng)編碼機(jī)
  • 嘗試用一組現(xiàn)有的模型權(quán)重參數(shù),然后重新訓(xùn)練輸入和輸出層(遷移學(xué)習(xí))

記住祠挫,修改權(quán)重初始化值的方法與修改激活函數(shù)或者目標(biāo)函數(shù)的效果相當(dāng)猬错。
相關(guān)閱讀:

3) 學(xué)習(xí)率

調(diào)節(jié)學(xué)習(xí)率也能帶來(lái)效果提升。
這里也有一些探索的思路:

  • 嘗試非常大茸歧、非常小的學(xué)習(xí)率
  • 根據(jù)參考文獻(xiàn)倦炒,在常規(guī)值附近用網(wǎng)格化搜索
  • 嘗試使用逐步減小的學(xué)習(xí)率
  • 嘗試每隔固定訓(xùn)練步驟衰減的學(xué)習(xí)率
  • 嘗試增加一個(gè)向量值,然后用網(wǎng)格搜索

大的網(wǎng)絡(luò)模型需要更多的訓(xùn)練步驟软瞎,反之亦然逢唤。如果你添加了更多的神經(jīng)節(jié)點(diǎn)和網(wǎng)絡(luò)層,請(qǐng)加大學(xué)習(xí)率涤浇。
學(xué)習(xí)率與訓(xùn)練步驟鳖藕、batch大小和優(yōu)化方法都有耦合關(guān)系。

相關(guān)閱讀:

4) 激活函數(shù)

也許你應(yīng)該選用ReLU激活函數(shù)著恩。
僅僅因?yàn)樗鼈兊男Ч谩?br> 在ReLU之前流行sigmoid和tanh,然后是輸出層的softmax蜻展、線性和sigmoid函數(shù)喉誊。除此之外,我不建議嘗試其它的選擇纵顾。
這三種函數(shù)都試一試伍茄,記得把輸入數(shù)據(jù)歸一化到它們的值域范圍。
顯然施逾,你需要根據(jù)輸出內(nèi)容的形式選擇轉(zhuǎn)移函數(shù)敷矫。
比方說(shuō),將二值分類的sigmoid函數(shù)改為回歸問(wèn)題的線性函數(shù)汉额,然后對(duì)輸出值進(jìn)行再處理曹仗。同時(shí),可能需要調(diào)整合適的損失函數(shù)蠕搜。在數(shù)據(jù)轉(zhuǎn)換章節(jié)去尋找更多的思路吧怎茫。
相關(guān)閱讀:

5) 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

調(diào)整網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)也會(huì)有一些幫助讥脐。
你需要設(shè)計(jì)多少個(gè)節(jié)點(diǎn)遭居,需要幾層網(wǎng)絡(luò)呢?
別打聽(tīng)了旬渠,鬼知道是多少俱萍。
你必須自己找到一組合理的參數(shù)配置。

  • 試一試加一層有許多節(jié)點(diǎn)的隱藏層(拓寬)
  • 試一試一個(gè)深層的神經(jīng)網(wǎng)絡(luò)告丢,每層節(jié)點(diǎn)較少(縱深)
  • 嘗試將上面兩種組合
  • 嘗試模仿近期發(fā)表的問(wèn)題類似的論文
  • 嘗試拓?fù)淠J胶蜁?shū)本上的經(jīng)典技巧(參考下方的鏈接)

這是一個(gè)難題枪蘑。越大的網(wǎng)絡(luò)模型有越強(qiáng)的表達(dá)能力,也許你就需要這樣一個(gè)。
更多晨的結(jié)構(gòu)提供了抽象特征的更多結(jié)構(gòu)化組合的可能岳颇,也許你也需要這樣一個(gè)網(wǎng)絡(luò)照捡。
后期的網(wǎng)絡(luò)模型需要更多的訓(xùn)練過(guò)程,需要不斷地調(diào)節(jié)訓(xùn)練步長(zhǎng)和學(xué)習(xí)率话侧。
相關(guān)閱讀:
下面的鏈接可能給你提供一些思路:

6) batch和epoch

batch的大小決定了梯度值瞻鹏,以及權(quán)重更新的頻率悲立。一個(gè)epoch指的是訓(xùn)練集的所有樣本都參與了一輪訓(xùn)練,以batch為序新博。
你嘗試過(guò)不同的batch大小和epoch的次數(shù)嗎薪夕?
在前文中,我們已經(jīng)討論了學(xué)習(xí)率赫悄、網(wǎng)絡(luò)大小和epoch次數(shù)的關(guān)系原献。
深度學(xué)習(xí)模型常用小的batch和大的epoch以及反復(fù)多次的訓(xùn)練。
這或許對(duì)你的問(wèn)題會(huì)有幫助埂淮。

  • 嘗試將batch大小設(shè)置為全體訓(xùn)練集的大泄糜纭(batch learning)
  • 嘗試將batch大小設(shè)置為1(online learning)
  • 用網(wǎng)格搜索嘗試不同大小的mini-batch(8,16同诫,32粤策,...)
  • 嘗試再訓(xùn)練幾輪epoch,然后繼續(xù)訓(xùn)練很多輪epoch

嘗試設(shè)置一個(gè)近似于無(wú)限大的epoch次數(shù)误窖,然后快照一些中間結(jié)果,尋找效果最好的模型秩贰。
有些模型結(jié)構(gòu)對(duì)batch的大小很敏感霹俺。我覺(jué)得多層感知器對(duì)batch的大小很不敏感,而LSTM和CNN則非常敏感毒费,但這都是仁者見(jiàn)仁丙唧。

相關(guān)閱讀:

7) 正則項(xiàng)

正則化是克服訓(xùn)練數(shù)據(jù)過(guò)擬合的好方法溪厘。
最近熱門的正則化方法是dropout胡本,你試過(guò)嗎?
Dropout方法在訓(xùn)練過(guò)程中隨機(jī)地略過(guò)一些神經(jīng)節(jié)點(diǎn)畸悬,強(qiáng)制讓同一層的其它節(jié)點(diǎn)接管侧甫。簡(jiǎn)單卻有效的方法。

  • 權(quán)重衰減來(lái)懲罰大的權(quán)重值
  • 激活限制來(lái)懲罰大的激活函數(shù)值

嘗試用各種懲罰措施和懲罰項(xiàng)進(jìn)行實(shí)驗(yàn),比如L1披粟、L2和兩者之和咒锻。
相關(guān)閱讀:

8) 優(yōu)化方法和損失函數(shù)

以往主要的求解方法是隨機(jī)梯度下降守屉,然而現(xiàn)在有許許多多的優(yōu)化器惑艇。
你嘗試過(guò)不同的優(yōu)化策略嗎?
隨機(jī)梯度下降是默認(rèn)的方法拇泛。先用它得到一個(gè)結(jié)果敦捧,然后調(diào)節(jié)不同的學(xué)習(xí)率、動(dòng)量值進(jìn)行優(yōu)化碰镜。
許多更高級(jí)的優(yōu)化方法都用到更多的參數(shù)兢卵,結(jié)構(gòu)更復(fù)雜,收斂速度更快绪颖。這取決于你的問(wèn)題秽荤,各有利弊吧。
為了壓榨現(xiàn)有方法的更多潛力柠横,你真的需要深入鉆研每個(gè)參數(shù)窃款,然后用網(wǎng)格搜索法測(cè)試不同的取值。過(guò)程很艱辛牍氛,很花時(shí)間晨继,但值得去嘗試。
我發(fā)現(xiàn)更新/更流行的方法收斂速度更快搬俊,能夠快速了解某個(gè)網(wǎng)絡(luò)拓?fù)涞臐摿ξ裳铮纾?/p>

你也可以探索其它的優(yōu)化算法,例如更傳統(tǒng)的算法(Levenberg-Marquardt)和比較新的算法(基因算法)唉擂。其它方法能給SGD創(chuàng)造好的開(kāi)端餐屎,便于后續(xù)調(diào)優(yōu)。
待優(yōu)化的損失函數(shù)則與你需要解決的問(wèn)題更相關(guān)玩祟。
不過(guò)腹缩,也有一些常用的伎倆(比如回歸問(wèn)題常用MSE和MAE),換個(gè)損失函數(shù)有時(shí)也會(huì)帶來(lái)意外收獲空扎。同樣藏鹊,這可能也與你輸入數(shù)據(jù)的尺度以及所使用的激活函數(shù)相關(guān)。
相關(guān)閱讀:

9) Early Stopping

你可以在模型性能開(kāi)始下降的時(shí)候停止訓(xùn)練。
這幫我們節(jié)省了大量時(shí)間黑忱,也許因此就能使用更精細(xì)的重采樣方法來(lái)評(píng)價(jià)模型了宴抚。
early
stopping也是防止數(shù)據(jù)過(guò)擬合的一種正則化方法勒魔,需要你在每輪訓(xùn)練結(jié)束后觀察模型在訓(xùn)練集和驗(yàn)證集上的效果。
一旦模型在驗(yàn)證集上的效果下降了菇曲,則可以停止訓(xùn)練冠绢。
你也可以設(shè)置檢查點(diǎn),保存當(dāng)時(shí)的狀態(tài)常潮,然后模型可以繼續(xù)學(xué)習(xí)弟胀。
相關(guān)閱讀:

  1. 用融合方法提升效果

你可以將多個(gè)模型的預(yù)測(cè)結(jié)果融合喊式。
繼模型調(diào)優(yōu)之后孵户,這是另一個(gè)大的提升領(lǐng)域。
事實(shí)上岔留,往往將幾個(gè)效果還可以的模型的預(yù)測(cè)結(jié)果融合夏哭,取得的效果要比多個(gè)精細(xì)調(diào)優(yōu)的模型分別預(yù)測(cè)的效果好。
我們來(lái)看一下模型融合的三個(gè)主要方向:

  1. 模型融合
  2. 視角融合
  3. stacking

1) 模型融合

不必挑選出一個(gè)模型献联,而是將它們集成竖配。
如果你訓(xùn)練了多個(gè)深度學(xué)習(xí)模型,每一個(gè)的效果都不錯(cuò)里逆,則將它們的預(yù)測(cè)結(jié)果取均值进胯。
模型的差異越大,效果越好原押。舉個(gè)例子胁镐,你可以使用差異很大的網(wǎng)絡(luò)拓?fù)浜图记伞?br> 如果每個(gè)模型都獨(dú)立且有效,那么集成后的結(jié)果效果更穩(wěn)定诸衔。
相反的盯漂,你也可以反過(guò)來(lái)做實(shí)驗(yàn)。
每次訓(xùn)練網(wǎng)絡(luò)模型時(shí)署隘,都以不同的方式初始化宠能,最后的權(quán)重也收斂到不同的值。多次重復(fù)這個(gè)過(guò)程生成多個(gè)網(wǎng)絡(luò)模型磁餐,然后集成這些模型的預(yù)測(cè)結(jié)果。
它們的預(yù)測(cè)結(jié)果會(huì)高度相關(guān)阿弃,但對(duì)于比較難預(yù)測(cè)的樣本也許會(huì)有一點(diǎn)提升诊霹。
相關(guān)閱讀:

2) 視角融合

如上一節(jié)提到的,以不同的角度來(lái)訓(xùn)練模型渣淳,或是重新刻畫(huà)問(wèn)題脾还。
我們的目的還是得到有用的模型,但是方式不同(如不相關(guān)的預(yù)測(cè)結(jié)果)入愧。
你可以根據(jù)上文中提到的方法鄙漏,對(duì)訓(xùn)練數(shù)據(jù)采取完全不同的縮放和變換技巧嗤谚。
所選用的變化方式和問(wèn)題的刻畫(huà)角度差異越大,效果提升的可能性也越大怔蚌。
簡(jiǎn)單地對(duì)預(yù)測(cè)結(jié)果取均值是一個(gè)不錯(cuò)的方式巩步。

3)stacking

你還可以學(xué)習(xí)如何將各個(gè)模型的預(yù)測(cè)結(jié)果相融合。
這被稱作是stacked泛化桦踊,或者簡(jiǎn)稱為stacking椅野。
通常,可以用簡(jiǎn)單的線性回歸的方式學(xué)習(xí)各個(gè)模型預(yù)測(cè)值的權(quán)重籍胯。
把各個(gè)模型預(yù)測(cè)結(jié)果取均值的方法作為baseline竟闪,用帶權(quán)重的融合作為實(shí)驗(yàn)組。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杖狼,一起剝皮案震驚了整個(gè)濱河市炼蛤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝶涩,老刑警劉巖理朋,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異子寓,居然都是意外死亡暗挑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門斜友,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)炸裆,“玉大人,你說(shuō)我怎么就攤上這事鲜屏∨肟矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵洛史,是天一觀的道長(zhǎng)惯殊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)也殖,這世上最難降的妖魔是什么土思? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮忆嗜,結(jié)果婚禮上己儒,老公的妹妹穿的比我還像新娘。我一直安慰自己捆毫,他們只是感情好闪湾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著绩卤,像睡著了一般途样。 火紅的嫁衣襯著肌膚如雪江醇。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天何暇,我揣著相機(jī)與錄音陶夜,去河邊找鬼。 笑死赖晶,一個(gè)胖子當(dāng)著我的面吹牛律适,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遏插,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼捂贿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了胳嘲?” 一聲冷哼從身側(cè)響起厂僧,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎了牛,沒(méi)想到半個(gè)月后颜屠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹰祸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年甫窟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛙婴。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡石咬,死狀恐怖霸奕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烹吵,我是刑警寧澤巴帮,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布邢享,位于F島的核電站侨赡,受9級(jí)特大地震影響摇庙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜絮姆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一醉冤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧篙悯,春花似錦冤灾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匿垄。三九已至移宅,卻和暖如春归粉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漏峰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工糠悼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浅乔。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓倔喂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親靖苇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子席噩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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