關於神經網路的調參經驗技巧和調參順序

2021-10-10 16:08:44 字數 1655 閱讀 9927

二、調參順序

三、一句總結

一、模型方面基本上都做得非常好了,因此真正需要調的引數其實並不多了,或者說調很多引數實際帶來的提公升都非常小了。

二、在訓練乙個深度學習模型的過程中,超引數選擇什麼最優,這是乙個基於實驗和經驗的過程。需要不停的嘗試,直到找到合適的引數值。 調參就是trial-and-error,沒有其他捷徑可以走,唯一的區別是有些人盲目的嘗試, 有些人思考後再嘗試.。快速嘗試, 快速糾錯這是調參的關鍵。

超引數:如學習率α、網路層數、每層隱藏單元數、學習率衰減值、mini-batch等需要人工選取的引數。

引數:這裡所指的引數另外一種說法就是權重,需要被訓練的引數。比如:w∗x

+b

w*x+b

w∗x+

b ,這裡w、b就是引數。

每一種超引數考慮的尺度是不一樣的。比如隱藏層數、隱藏層單元數肯定是以線性尺度進行搜尋。而如果是學習率α,就需要取對數了,因為學習率有可能從0.00001到0.1之間,因此選用對數搜尋尺度更加合理。

學習速率是最為重要的超引數

初始學習率很重要,學習率的變化策略也很重要。

引數更新時的學習率選擇,需要根據嘗試不同的學習率來確定。

可以畫出損失函式隨迭代次數的收斂圖,選取學習率能使得代價函式收斂到最低的位置。

乙個好的起點是從0.01嘗試起

可選的幾個常用值:

判斷依據就是是驗證集的誤差(validation error)

當我們使用的梯度下降是建立在batch gradient decent基礎之上時,合適的batch size對模型的優化是比較重要的。

這個引數倒不需要微調,在乙個大致數量即可,常取2

n2^n

2n(gpu對2的冪次的batch可以發揮更佳的效能)。

但是太大的batch size會受gpu視訊記憶體的限制,並且無限接近full batch的行為,速度會慢,所以不能無限增大; 也不能太小,太小了以後可能演算法永遠不會收斂。

一般情況下,可選的常用值:1,2,4,8,16,32,64,128,256

解決的問題的模型越複雜則用越多hidden units,但是要適度,因為太大的模型會導致過擬合。

通常來說3層的隱含層比2層的好,但是繼續再深到4,5,6層……就沒什麼明顯效果了(乙個例外情況是cnn)

應該要和模型表現搭配。如果模型已經過擬合了,就沒必要繼續跑了;相反,如果epoch太小,你epoch跑完了,模型的loss還在下降,模型還在優化,那麼這個epoch就太小了,應該增加。

如果不想手動設定epoch數量,我們可以使用early stopping

我們可以用可以用l1、l2等懲罰項的方法來防止過度擬合,所以調整正則化的引數可以根據模型表現來,過擬合的時候可以適當加大係數,非過擬合的時候可不調這個引數,畢竟跑一次模型得花不少時間。

隨機失活率一般設定為0.5。對越大越複雜的隱藏層,意味著過度擬合的可能性越大,所以失活率設定越高。

需要注意的是,除非演算法過擬合,不然最好不需要用droupout等方法

不應該因為害怕出現過擬合而使用小網路。相反,應該進盡可能使用大網路,然後使用正則化技巧來控制過擬合。

調參可以說是一種無奈,理論認識很深的時候,引數就是so easy,所以還是要把大部分的精力放在認識水平的提高上

神經網路調參

神經網路的一些調參方法小結 1 網格搜尋法 網格搜尋就是將多個引數進行笛卡爾乘積後逐個試驗,很費時間。sklearn庫有gridsearchcv函式,結合了交叉驗證,我還沒在神經網路上應用過。2 逐個調參 用列舉的方法逐個引數調優,乙個引數取最佳值後固定住再進行下乙個引數調優,比網格搜尋快一些。不過...

卷積神經網路的調參技巧1

方法 一 更多的優化演算法 二 啟用函式 三 網路的初始化 四 批歸一化 五 資料增強 六 採用更多的調參技巧 1 隨機梯度下降 問題 1.區域性極值 2.鞍點saddle point問題 動量梯度下降可以在一定程度上緩解以上的問題 此外的問題是 1.受到學習率的影響 導致梯度 不收斂 2.每乙個維...

調參煉丹 深度學習訓練的小技巧,調參經驗。

經常會被問到你用深度學習訓練模型時怎麼樣改善你的結果呢?然後每次都懵逼了,一是自己懂的不多,二是實驗的不多,三是記性不行忘記了。所以寫這篇部落格,記錄下別人以及自己的一些經驗。ilya sutskever hinton的學生 講述了有關深度學習的見解及實用建議 獲取資料 確保要有高質量的輸入 輸出資...