當前位置: 華文星空 > 知識

【Deep Learning】深度學習調參技巧的總結

2020-07-28知識

作者:知乎 CVer

原文連結:請點選

本文僅作為學術分享,如果侵權,會刪文處理

Qustion 深度學習調參有哪些技巧?

深度學習的效果很大程度上取決於參數調節的好壞,那麽怎麽才能最快最好的調到合適的參數呢?求解

Answer 1 作者:Jarvix

只想說一句:初始化

一次慘痛的教訓是用normal初始化cnn的參數,最後acc只能到70%多,僅僅改成xavier,acc可以到98%。

還有一次給word embedding初始化,最開始使用了TensorFlow中預設的initializer(即glorot_uniform_initializer,也就是大家經常說的無腦使用xavier),訓練速度慢不說,結果也不好。改為uniform,訓練速度飆升,結果也飆升。

所以,初始化就跟黑科技一樣,用對了超參都不用調;沒用對,跑出來的結果就跟模型有bug一樣不忍直視。

Answer 2 作者:BBuf

大概調了快一年CNN(2019年1月到今天),看到這個話題挺感興趣的,以下是我的總結

做比賽

  • 特征提取。VGG16,VGG19,ResNet50,Xception是非常好用的幾個特征提取模型。建議使用訓練好的經典模型對數據集提取特征向量儲存到本地,更方便使用,同時可以大振幅降低視訊記憶體消耗。
  • ensemble:
  • 將不同的經典網絡提取出的特征向量,假設 VGG16 提取出的特征向量維度是 [N,c1] , ResNet50 提取的特征向量維度是 [N,c2] , Xception 提取的特征向量維度是 [N, c3] ,那麽我們可以使用三個系數 a、b、c 將其組合為形狀為 [N, a*c1+b*c2+c*c3] ,其中 a、b、c 三個參數的取值代表我們使用哪個模型的特征多一些,如果是分類回歸比賽,我們在後面接特征處理網絡就可以了。可以取不同的 a、b、c 得到不同的特征,然後對結果做 voting soft-voting 等多種處理,一般結果不會太差啦。
  • 可以使用不同的初始化方式訓練出模型,然後做ensemble。
  • 可以使用用不同超參數(如學習率, batch_size ,最佳化器)訓練出不同模型,然後做ensemble。
  • 因為我就做了一點點入門級比賽,上面介紹的方法取得了還不錯的結果,所以我就在這裏獻醜啦,方法確實挺無腦的,大家笑一笑就好啦。繼續想了下,我好像除了這些有接觸或者使用到,暫時沒有什麽其它的了,如果想起其他的了,之後補充下。

    Answer 3 作者:Captain Jack



    我和@楊軍類似, 也是半路出家. 現在的工作內容主要就是使用CNN做CV任務. 幹調參這種活也有兩年時間了. 我的回答可能更多的還是側重工業套用, 技術上只限制在CNN這塊.

    先說下我的觀點, 調參就是trial-and-error. 沒有其他捷徑可以走. 唯一的區別是有些人盲目的嘗試, 有些人思考後再嘗試. 快速嘗試, 快速糾錯 這是調參的關鍵.

    看了楊軍的回答. 對於這個回答, 下面的評論裏面@紀秋佳說的很對. 這個回答主要內容更多的是側重理解網絡. 而非訓練網絡.

    我要再強調下, 楊軍的回答更多的涉及是理解網絡而非訓練網絡 . 是的, 沒錯. 你看完回答中的所有內容, 對不起, 你還是不知道怎麽實際訓練一個網絡, 尤其是復雜任務下的網絡(因為簡單任務根本不需要, 直接上來效果就會很好, 除非你要刷簡單任務的排行榜).

  • 首先說下視覺化:
  • 我個人的理解, 對於視覺化, 更多的還是幫助人類以自己熟悉的方式來觀察網絡. 因為, 你是不可能邊觀察網絡, 還邊調參的. 你只是訓練完成後(或者準確率到達一個階段後), 才能視覺化. 在這之前, 網絡沒有學習到良好的參數, 你視覺化了也沒意義, 網絡達到不錯的準確率了, 你看看其實也就聽個響. 同樣, 你的網絡訓練的一塌糊塗, 你視覺化也沒什麽意義, 唯一能夠看到的就是中間結果亂七八糟, 或者全黑全白, 這時候你直接看最後準確率就可以知

    < style data-emotion-css="19xugg7"> .css-19xugg7{position:absolute;width:100%;bottom:0;background-image:linear-gradient(to bottom,transparent,#ffffff 50px);} < style data-emotion-css="12cv0pi"> .css-12cv0pi{box-sizing:border-box;margin:0;min-width:0;height:100px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;width:100%;bottom:0;background-image:linear-gradient(to bottom,transparent,#ffffff 50px);}
    < style data-emotion-css="1pr2waf"> .css-1pr2waf{font-size:15px;color:#09408e;}
    釋出於 2020-07-28 17:05
    < style data-emotion-css="ch8ocw"> .css-ch8ocw{position:relative;display:inline-block;height:30px;padding:0 12px;font-size:14px;line-height:30px;color:#1772F6;vertical-align:top;border-radius:100px;background:rgba(23,114,246,0.1);}.css-ch8ocw:hover{background-color:rgba(23,114,246,0.15);}
    < style data-emotion-css="1xlfegr"> .css-1xlfegr{background:transparent;box-shadow:none;} < style data-emotion-css="1gomreu"> .css-1gomreu{position:relative;display:inline-block;}
    人工智能