深度學習模型中的學習率調整

非常關鍵------------------深度學習模型中的學習率調整

學習率對於深度學習是一個重要的超參數,它控制着基於損失梯度調整神經網絡權值的速度,大多數優化算法(SGD、RMSprop、Adam)對其都有所涉及。學習率越小,損失梯度下降的速度越慢,收斂的時間更長,如公式所示:

new_weight= existing_weight — learning_rate * gradient

(新權值 = 當前權值 – 學習率 × 梯度)

 

       如果學習率過小,梯度下降很慢,如果學習率過大,如Andrew Ng的Stanford公開課程所說梯度下降的步子過大可能會跨過最優值。不同的學習率對loss的影響如下圖所示:

 

學習率的調整方法:

1、從自己和其他人一般的經驗來看,學習率可以設置爲3、1、0.5、0.1、0.05、0.01、0.005,0.005、0.0001、0.00001具體需結合實際情況對比判斷,小的學習率收斂慢,但能將loss值降到更低。

2、根據數據集的大小來選擇合適的學習率,當使用平方和誤差作爲成本函數時,隨着數據量的增多,學習率應該被設置爲相應更小的值(從梯度下降算法的原理可以分析得出)。另一種方法就是,選擇不受數據集大小影響的成本函數-均值平方差函數。

3、訓練全過程並不是使用一個固定值的學習速度,而是隨着時間的推移讓學習率動態變化,比如剛開始訓練,離下山地點的最優值還很遠,那麼可以使用較大的學習率下的快一點,當快接近最優值時爲避免跨過最優值,下山速度要放緩,即應使用較小學習率訓練,具體情況下因爲我們也不知道訓練時的最優值,所以具體的解決辦法是:在每次迭代後,使用估計的模型的參數來查看誤差函數的值,如果相對於上一次迭代,錯誤率減少了,就可以增大學習率如果相對於上一次迭代,錯誤率增大了,那麼應該重新設置上一輪迭代的值,並且減少學習率到之前的50%。因此,這是一種學習率自適應調節的方法。在Caffe、Tensorflow等深度學習框架中都有很簡單直接的學習率動態變化設置方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章