如何設置學習率


學習率的調整

從梯度下降算法的角度來說,通過選擇合適的學習率,可以使梯度下降法得到更好的性能。學習率,即參數到達最優值過程的速度快慢,如Andrew Ng的Stanford公開課程所說,假如你從山峰的最高點根據梯度下降法尋找最優值,當你學習率過大,即下降的快,步子大,那么你很可能會在某一步跨過最優值,當你學習率過小時,每次下降一厘米,這將走到何年何月呀,用術語來說就是,長時間無法收斂。因此,學習率直接決定着學習算法的性能表現。

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

  • 在不同的迭代中選擇不同的學習率,還是用前面下山的例子來解釋,當你大概知道最優值離你還挺遠時,你肯定不會一步一厘米的去走,你肯定會大跨步走到離最優值不遠的地方,然后再用小碎步來慢慢找到最優值。即,在最初的迭代中,學習率可以大一些,快接近時,學習率小一些。問題就出在這里,有人會說,我要是知道了最優值,還有梯度下降算法什么事,說的也對,那么我們是怎么解決的呢,我們在每次迭代后,使用估計的模型的參數來查看誤差函數的值,如果相對於上一次迭代,錯誤率減少了,就可以增大學習率如果相對於上一次迭代,錯誤率增大了,那么應該重新設置上一輪迭代的值,並且減少學習率到之前的50%。因此,這是一種學習率自適應調節的方法。

  • 一般常用的學習率有0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10

 

深度學習如何設置學習率

學習率是深度學習中的一個重要的超參,如何調整學習率是訓練出好模型的關鍵要素之一。在通過SGD求解問題的極小值時,梯度不能太大,也不能太小。太大容易出現超調現象,即在極值點兩端不斷發散,或是劇烈震盪,總之隨着迭代次數增大loss沒有減小的趨勢;太小會導致無法快速地找到好的下降的方向,隨着迭代次數增大loss基本不變。

因此,我們常常用一些退火的方法調整學習率。學習率調整方法基本上有兩種

1. 基於經驗的手動調整。 通過嘗試不同的固定學習率,如0.1, 0.01, 0.001等,觀察迭代次數和loss的變化關系,找到loss下降最快關系對應的學習率。

2. 基於策略的調整。

   2.1 fixed 、exponential、polynomial

   2.2. 自適應動態調整。adadelta、adagrad、ftrl、momentum、rmsprop、sgd

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM