自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深度學(xué)習(xí)如煉丹,你有哪些迷信做法?網(wǎng)友:Random seed=42結(jié)果好

開發(fā) 開發(fā)工具 深度學(xué)習(xí)
近日,reddit 上一則帖子引發(fā)了網(wǎng)友熱議,「機(jī)器學(xué)習(xí)調(diào)參領(lǐng)域有哪些迷信的看法或做法呢?」

[[441423]]

每個(gè)機(jī)器學(xué)習(xí)領(lǐng)域的研究者都會(huì)面臨調(diào)參過程的考驗(yàn),當(dāng)往往說來容易做來難。調(diào)參的背后往往是通宵達(dá)旦的論文研究與 GitHub 查閱,并需要做大量的實(shí)驗(yàn),不僅耗時(shí)也耗費(fèi)大量算力,更深深地傷害了廣大工程師的頭發(fā)。

[[441424]]

有人不禁要問:調(diào)參是門玄學(xué)嗎?為什么模型明明調(diào)教得很好了,可是效果離我的想象總有些偏差。

近日,reddit 上一則帖子引發(fā)了網(wǎng)友熱議,「機(jī)器學(xué)習(xí)調(diào)參領(lǐng)域有哪些迷信的看法或做法呢?」

原貼地址:

https://www.reddit.com/r/MachineLearning/comments/rkewa3/d_what_are_your_machine_learning_superstitions/?sort=confidence

關(guān)于調(diào)參的那些「秘訣」

在機(jī)器學(xué)習(xí)中,超參數(shù)調(diào)整是一項(xiàng)必備技能,通過觀察在訓(xùn)練過程中的監(jiān)測指標(biāo)如損失 loss 和準(zhǔn)確率來判斷當(dāng)前模型處于什么樣的訓(xùn)練狀態(tài),及時(shí)調(diào)整超參數(shù)以更科學(xué)地訓(xùn)練模型能夠提高資源利用率。

每個(gè)人都會(huì)根據(jù)自己的實(shí)際經(jīng)驗(yàn)進(jìn)行模型調(diào)參,最終,絕大多數(shù)研究者可能得出的經(jīng)驗(yàn)就是:

  • Random seed = 0 得到壞的結(jié)果
  • Random seed = 42 得到好的結(jié)果
  • Even-valued k in k-Means = insightful segmentation

有人將這一經(jīng)驗(yàn)總結(jié)奉為所謂的 ML「迷信做法」,但其實(shí)不然,幾乎所有學(xué)者都這樣做。

不過,也有網(wǎng)友對這一經(jīng)驗(yàn)總結(jié)持懷疑態(tài)度:網(wǎng)友 @SlashSero 遺憾地表示,這種情況甚至?xí)霈F(xiàn)在非常有名的科學(xué)出版物上,尤其是在交叉驗(yàn)證不可行或者易受其他參數(shù)選擇影響的機(jī)器學(xué)習(xí)應(yīng)用中,因此超參數(shù)優(yōu)化(HPO)不可行。不妨看看 NeurIPS 會(huì)議論文有多少擁有真正透明的代碼庫和易于復(fù)現(xiàn)的交叉驗(yàn)證研究,以證實(shí)他們的工作較去年提升了 0.5-1% 的性能。

另外,很多時(shí)候出于對研究者的信任,但其實(shí)會(huì)導(dǎo)致新的深度學(xué)習(xí)模型在實(shí)踐中并沒有表現(xiàn)出明顯優(yōu)于傳統(tǒng)模型的性能。我們應(yīng)該看到,社區(qū)存在這樣一種現(xiàn)狀:花費(fèi)大量時(shí)間確保模型真正兌現(xiàn)它所表現(xiàn)出的性能,并且可復(fù)現(xiàn)和透明,這是一項(xiàng)吃力不討好的工作。消耗計(jì)算資源不說,還有可能失去在一個(gè)發(fā)展極快的領(lǐng)域發(fā)表論文和獲得表彰的機(jī)會(huì)。

為了實(shí)現(xiàn)模型最佳性能,各路網(wǎng)友也紛紛曬出自己的煉丹經(jīng)驗(yàn):有網(wǎng)友認(rèn)為 Random seed 必須是 10 的倍數(shù),最好是 1000(不過該回答遭到了別人的反駁)。

除了 Random seed 設(shè)置外,有研究者分享了自己的一些科研小技巧。

模型的訓(xùn)練過程,近乎黑盒,假如期間發(fā)生程序錯(cuò)誤,很難察覺到,有網(wǎng)友建議隨時(shí)隨地進(jìn)行「print」是一個(gè)很好的習(xí)慣,在程序第一次運(yùn)行時(shí),一定要打印所有可能的東西,「print」能讓你知道程序進(jìn)行到哪一步,有沒有陷入死循環(huán)...... 其實(shí),絕大多數(shù)程序員都會(huì)這樣做。

除了「print」外,有人表示日志記錄也非常有必要,在實(shí)驗(yàn)室做科研,有時(shí)為了跑一個(gè)程序,需要花費(fèi)好幾天的時(shí)間,但總有那么不順心的地方,要么好久不斷電的實(shí)驗(yàn)室突然斷電,要么服務(wù)器崩了…… 所以隨時(shí)隨地保存日志也是每個(gè)程序員必備的,查看日志記錄,你能發(fā)現(xiàn)程序運(yùn)行到哪了,粗略估計(jì)模型性能,還能查看錯(cuò)誤:

還有網(wǎng)友曬出了自己的 dropout 經(jīng)驗(yàn),認(rèn)為超過 20% 的 dropout 將使該模式難以恢復(fù)。不過這只是這位網(wǎng)友自己的經(jīng)驗(yàn),也有人表示自己采用 90% 的 dropout,模型性能最好。

除此以外,有網(wǎng)友總結(jié)了批大小應(yīng)該是 2 的冪次方。

以上就是網(wǎng)友總結(jié)的一些 ML 煉丹小技巧。

玄學(xué)論文難復(fù)現(xiàn)

雖然調(diào)參有用,但網(wǎng)友 @ostrich-scalp 犀利地批駁道,「大多數(shù)論文的結(jié)果都是胡說八道,將我的職業(yè)生涯都用來實(shí)現(xiàn)這些工作并期望創(chuàng)建像模像樣可用于生產(chǎn)的模型,這是一個(gè)極大的錯(cuò)誤。」

上面那位老哥 @SlashSero 接茬說道,「令人難以置信的是,ACM、IEEE、IAAA 和 NeurIPS 上發(fā)表的論文有多少完全只是出于對作者的信任。到現(xiàn)在為止,你可能希望所有知名期刊和會(huì)議都要求論文作者開源和復(fù)現(xiàn)代碼,但這種情況只是例外?!?/p>

顯然,機(jī)器學(xué)習(xí)是一門技術(shù)。雖然神經(jīng)網(wǎng)絡(luò)黑箱的狀態(tài)讓可解釋性受限,但我們可以在較高層面上通過經(jīng)驗(yàn)解決面臨的問題。我們需要加載數(shù)據(jù),建立框架,讓系統(tǒng)運(yùn)行起來,設(shè)定度量標(biāo)準(zhǔn),調(diào)整參數(shù)并分析誤差,進(jìn)行特征工程,結(jié)果可視化等等步驟。最終經(jīng)過數(shù)次迭代直至推理的準(zhǔn)確率不再提升。

那么為什么各種玄學(xué)現(xiàn)象仍然不斷出現(xiàn),拷問著我們的心靈?看來,我們對這門學(xué)科的了解還不夠多。

不過請記住 NIPS 2017 大會(huì)上圖靈獎(jiǎng)得主 Judea Pearl 演講的最后一頁 Keynote:

數(shù)據(jù)科學(xué)僅當(dāng)能促進(jìn)對數(shù)據(jù)的合理解讀時(shí)才能被稱為科學(xué)。

不過也不用怕,深度學(xué)習(xí)調(diào)參總還是有技巧可循的,大致可以總結(jié)如下。這些算不得迷信做法,僅供參考。

  • 尋找合適的學(xué)習(xí)率。作為一個(gè)非常重要的參數(shù),學(xué)習(xí)率面對不同規(guī)模、不同 batch-size、不同優(yōu)化方式和不同數(shù)據(jù)集,它的最合適值都是不確定的。我們唯一可以做的,就是在訓(xùn)練中不斷尋找最合適當(dāng)前狀態(tài)的學(xué)習(xí)率;
  • 權(quán)重初始化。相比于其他的 trick 來說使用并不是很頻繁。只有那些沒有預(yù)訓(xùn)練模型的領(lǐng)域會(huì)自己初始化權(quán)重,或者在模型中去初始化神經(jīng)網(wǎng)絡(luò)最后那幾個(gè)全連接層的權(quán)重。常用權(quán)重初始化算法是「kaiming_normal」或「xavier_normal」;
  • 數(shù)據(jù)集處理,主要有數(shù)據(jù)篩選和數(shù)據(jù)增強(qiáng);
  • 多模型融合,這是論文刷結(jié)果的終極核武器,深度學(xué)習(xí)中一般有幾種方式,比如同樣的參數(shù),不同的初始化方式;不同的參數(shù),通過交叉驗(yàn)證選取最好的幾組;不同的模型,進(jìn)行線性融合,例如 RNN 和傳統(tǒng)模型;
  • 余弦退火和熱重啟的隨機(jī)梯度下降。余弦退火就是學(xué)習(xí)率類似余弦函數(shù)慢慢下降,熱重啟就是在學(xué)習(xí)的過程中,學(xué)習(xí)率慢慢下降然后突然再回彈 (重啟) 然后繼續(xù)慢慢下降;
  • 嘗試過擬合一個(gè)小數(shù)據(jù)集。關(guān)閉正則化 / 隨機(jī)失活 / 數(shù)據(jù)擴(kuò)充,使用訓(xùn)練集的一小部分,讓神經(jīng)網(wǎng)絡(luò)訓(xùn)練幾個(gè)周期。確??梢詫?shí)現(xiàn)零損失,如果沒有,那么很可能什么地方出錯(cuò)了。
  • ……

調(diào)參路上各有各的「路數(shù)」,適合自己就好。

最后問一句,煉丹的你有哪些獨(dú)門秘籍呢?

參考鏈接:

  • https://www.jiqizhixin.com/articles/2020-10-21-3
  • https://picture.iczhiku.com/weixin/message1609136710592.html

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】  

戳這里,看該作者更多好文 

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-05-10 13:12:11

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)圖像處理

2017-05-08 16:13:33

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)深度

2020-04-16 11:19:55

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)層

2023-10-17 09:39:48

深度學(xué)習(xí)AI

2023-01-17 15:18:20

深度學(xué)習(xí)GPU

2021-08-06 09:43:18

云計(jì)算容器云原生

2017-11-23 14:49:51

深度學(xué)習(xí)NBA數(shù)據(jù)

2022-02-16 07:44:48

機(jī)器學(xué)習(xí)模型

2018-09-18 14:03:57

OpenStack知識(shí)難點(diǎn)

2019-10-10 15:14:35

人工智能機(jī)器學(xué)習(xí)技術(shù)

2021-12-09 07:33:45

深度學(xué)習(xí)算法

2017-04-21 14:21:53

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2021-12-03 09:58:26

數(shù)字化轉(zhuǎn)型CIO數(shù)字化

2010-08-09 13:08:45

DB2數(shù)據(jù)庫

2023-04-26 10:06:08

RocketMQ屬性Consumer

2017-12-04 14:32:36

深度學(xué)習(xí)機(jī)器學(xué)習(xí)

2021-02-25 10:07:42

人工智能AI機(jī)器學(xué)習(xí)

2017-10-09 19:12:52

AI深度學(xué)習(xí)局限性

2011-07-14 13:13:19

Web

2022-10-28 16:08:22

Java開發(fā)語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)