<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【干貨】新手煉丹經(jīng)驗(yàn)總結(jié)

          共 2639字,需瀏覽 6分鐘

           ·

          2021-05-24 01:50

          點(diǎn)擊上方視學(xué)算法”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          作者丨h(huán)zwer@知乎
          來(lái)源丨h(huán)ttps://zhuanlan.zhihu.com/p/367004782
          編輯丨極市平臺(tái)

          導(dǎo)讀

           

          本文總結(jié)了作者自身煉丹過(guò)程中的一些經(jīng)驗(yàn),包括了一些方法論以及技巧,幫助小白正確入坑。

          煉丹入坑三年多,來(lái)總結(jié)一些經(jīng)驗(yàn),本文旨在幫助小白少走彎路,大佬輕噴:

          本文源于一個(gè)舊回答:你有哪些deep learning(rnn、cnn)調(diào)參的經(jīng)驗(yàn)?(https://www.zhihu.com/question/41631631/answer/859040970)我的工作可以參見(jiàn) 我的 Github(https://github.com/hzwer),一股濃濃調(diào)參風(fēng),所以感覺(jué)能來(lái)說(shuō)點(diǎn)小經(jīng)驗(yàn)。另,曠視研究院目前在春招實(shí)習(xí)生,歡迎大家投遞。

          1.  準(zhǔn)備工作

          大部分情況下,我們的工作應(yīng)該站在巨人的肩膀上,切忌空中樓閣和徒手造輪子。在實(shí)踐中建議琢磨以下兩問(wèn):a. 目前的問(wèn)題是否可能用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)?b. 是否有人做過(guò)類似的工作?

          a. 即使有數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)不是萬(wàn)能求解器。在視覺(jué)任務(wù)中的經(jīng)驗(yàn)規(guī)律是,神經(jīng)網(wǎng)絡(luò)的水平普遍高于普通人,弱于專家。理解“不能被神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)”的任務(wù)比較困難,通??梢园褑?wèn)題做分解和規(guī)約。舉例,因?yàn)樯窠?jīng)網(wǎng)絡(luò)可以做圖片一千類別分類,那么訓(xùn)練分類器分類一個(gè)人有沒(méi)有戴口罩很可行;因?yàn)樽屔窠?jīng)網(wǎng)絡(luò)生成一張高分辨率圖片比較難,所以讓神經(jīng)網(wǎng)絡(luò)端到端生成抖音短視頻會(huì)非常難。

          b. 最令人心態(tài)崩潰的事情有:開(kāi)始寫(xiě)了一半論文才發(fā)現(xiàn)別人早就發(fā)表過(guò)了;搞了個(gè)把月的項(xiàng)目,不如人家 git clone 下來(lái)一鍵生成水平。通過(guò)文獻(xiàn)調(diào)研和 paperswithcode,可以避免這類問(wèn)題發(fā)生。有一個(gè)高的起點(diǎn)非常重要,做學(xué)校的課程項(xiàng)目時(shí),同學(xué)們往往喜歡用一個(gè)很差的基準(zhǔn),跑一些不強(qiáng)的對(duì)比實(shí)驗(yàn),但正經(jīng)的研究工作,往往要從一個(gè)很強(qiáng)的基準(zhǔn)開(kāi)始著手改進(jìn)。盡量不要在玩具級(jí)別的數(shù)據(jù)集或任務(wù)上做研究,比如 MNIST(有少數(shù)例外)。

          2. 煉丹方法論

          以下總結(jié)了這幾年對(duì)我影響較大的幾個(gè)方法論。a. 可復(fù)現(xiàn)性。b. 高效實(shí)驗(yàn)。c. 防呆實(shí)驗(yàn)。

          a. 有的朋友在煉丹的時(shí)候從頭到尾只維護(hù)若干份代碼,每次載入前一次的訓(xùn)練參數(shù),改一下代碼再煉,俗稱 老丹 。這樣會(huì)有很多問(wèn)題:某次引入一個(gè) bug,過(guò)了很久才發(fā)現(xiàn),不知道影響范圍;得到一個(gè)好模型,但是沒(méi)人知道它是怎么來(lái)的;忘了自己的 baseline 長(zhǎng)什么樣,不知道改動(dòng)是正向還是負(fù)向。

          我們要盡可能確保每一個(gè)模型有可復(fù)現(xiàn)性,實(shí)踐上建議固定隨機(jī)種子,且不在訓(xùn)練過(guò)程中再改動(dòng)訓(xùn)練代碼。訓(xùn)練新的模型時(shí),把舊的代碼復(fù)制一遍。得到的實(shí)驗(yàn)結(jié)果要開(kāi)個(gè)文檔記下來(lái)以便日后總結(jié),避免遺忘。后續(xù)總結(jié)回顧實(shí)驗(yàn)記錄,往往能獲得靈感。

          b. 不是每一個(gè)實(shí)驗(yàn)都要出一個(gè)好模型, 實(shí)驗(yàn)是為了驗(yàn)證結(jié)論的 。如果每個(gè)實(shí)驗(yàn)都要 8 張卡跑兩個(gè)星期,人力物力都耗不起。盡力把實(shí)驗(yàn)控制在單卡一天以內(nèi),理想狀態(tài)是半天得一次結(jié)論。理論上來(lái)說(shuō),水多加面面多加水(加數(shù)據(jù)加計(jì)算量)的做法無(wú)限漲點(diǎn)。建議先設(shè)一個(gè)目標(biāo),比如說(shuō)就是在半天的訓(xùn)練時(shí)間下做對(duì)比實(shí)驗(yàn)。等到實(shí)驗(yàn)比較成熟以后再做大實(shí)驗(yàn)。

          我的實(shí)踐經(jīng)驗(yàn)是,優(yōu)先選用小骨干網(wǎng)絡(luò) + 更小的輸入,直到消除了大部分 bugs;用 cProfile 來(lái)找找性能瓶頸(訓(xùn)練工程寫(xiě)的不夠好時(shí),常常有一大半時(shí)間耗費(fèi)數(shù)據(jù)傳輸,我曾經(jīng)發(fā)現(xiàn)某個(gè)工程數(shù)據(jù)處理中一大半時(shí)間在調(diào)用 numpy 的 round 函數(shù),還有某個(gè)工程大部分的時(shí)間開(kāi)銷在線程鎖上),解決這些問(wèn)題能讓之后工作事半功倍。

          c. 介紹幾種經(jīng)典的防呆實(shí)驗(yàn)。首先可以只擬合一張圖片或者若干張圖片來(lái)觀察視覺(jué)效果,看看能不能正常過(guò)擬合。還可以把標(biāo)簽直接喂進(jìn)網(wǎng)絡(luò)中,看看網(wǎng)絡(luò)是否能夠快速學(xué)到 trivial 解。在訓(xùn)練過(guò)程中繪制訓(xùn)練集和驗(yàn)證集的損失函數(shù)曲線,看是否有合理的 gap。

          3. 實(shí)戰(zhàn)小技巧

          不迷信調(diào)參,如果發(fā)現(xiàn)一個(gè)模型對(duì)各種超參數(shù)都非常敏感,每天在各種組合上試的不亦樂(lè)乎,通常是有地方出了問(wèn)題,包括測(cè)試腳本寫(xiě)錯(cuò),任務(wù)定義不合理,數(shù)據(jù)太臟等。舉個(gè)例子,以前大家會(huì)非常注意一些細(xì)節(jié),比如模型初始化,輸入歸一化等,原因是當(dāng)時(shí)各種框架和算法實(shí)現(xiàn)不成熟。現(xiàn)在的框架通常在這些細(xì)節(jié)上都默認(rèn)是比較魯棒的設(shè)置,不建議特別關(guān)注。

          我個(gè)人的經(jīng)驗(yàn)是,優(yōu)化器用 AdamW(少數(shù)地方用 SGD with Momentum),學(xué)習(xí)率推薦 cosine learning rate,初始值選 3e-4(SGD 可以選 0.1),激活函數(shù)選 PReLU。Batchsize 取 64,盡量用多卡,如果用 torch 的話記得用 DistributedDataParallel。用上這些基本不出錯(cuò),唯一比較玄學(xué)的是 BatchNormalization,有的任務(wù)上用了就是會(huì)變差(比如超分辨率,光流估計(jì)),有的任務(wù)不用 BatchNormalization 就是不好調(diào)。不要迷信公眾號(hào)的“即插即用”方法,各種魔改優(yōu)化器、激活函數(shù)、魔幻注意力不建議碰(除非研究這個(gè)),盡量用大量研究者驗(yàn)證過(guò)的方法。

          如果感覺(jué)模型依然有 bugs,建議檢查以下幾條。a. 檢查模型是否正確開(kāi)關(guān)了 eval 和 train 模式。b. 檢查模型每個(gè)模塊的輸入輸出范圍是否符合預(yù)期。c. 可視化帶增廣的訓(xùn)練數(shù)據(jù),看看是否符合預(yù)期(順便提一下 imgaug,這個(gè)開(kāi)源庫(kù)用來(lái)做數(shù)據(jù)增廣性能很好,不容易踩坑)。

          祝讀到這里的各位模型漲點(diǎn)!

          參考文獻(xiàn)

          Bag of Tricks for Image Classification with Convolutional Neural Networks,trick 合集 1。
          Must Know Tips/Tricks in Deep Neural Networks,trick 合集 2。
          33條神經(jīng)網(wǎng)絡(luò)訓(xùn)練秘技,trick 合集 3。
          26秒單GPU訓(xùn)練CIFAR10,工程實(shí)踐。
          Batch Normalization,雖然玄學(xué),但是養(yǎng)活了很多煉丹師。

          如果覺(jué)得有用,就請(qǐng)分享到朋友圈吧!


          點(diǎn)個(gè)在看 paper不斷!

          瀏覽 71
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美A片在线视频 | 婷婷一区二区三区 | 亚洲精品视频在线播放 | 日韩一区二区三区日屄 | 影音先锋男人站你懂的 |