什么是學習率?


什么是學習率?

 

學習率是指導我們,在梯度下降法中,如何使用損失函數的梯度調整網絡權重的超參數。

 

new_weight = old_weight - learning_rate * gradient

 

學習率對損失值甚至深度網絡的影響?

 

學習率如果過大,可能會使損失函數直接越過全局最優點,此時表現為loss過大或者為nan

 

學習率如果過小,損失函數的變化速度很慢,會大大增加網絡的收斂復雜度,並且很容易被困在局部最小值或者鞍點

 

 

圖片來自吳恩達的機器學習課

 

以上只是從理論上來說明,學習速率對loss值的影響。實際表現中,不同的初始化學習率導致的不同的loss結果如下圖。

 

 

學習率的作用

 

由以上可以看出,為深度網絡選擇一個良好的學習率更新策略,可以抽象為以下兩點好處:

 

  1. 更快地達到loss的最小值
  2. 保證收斂的loss值是神經網絡的全局最優解

 

如何選擇學習率?

 

現階段研究中,共同認同的學習率設置標准為:首先設置一個較大的學習率,使網絡的損失值快速下降,然后隨着迭代次數的增加一點點減少學習率,防止越過全局最優解。

 

那么我們現在面臨兩個兩個問題:

 

  1. 如何選取初始的學習率
  2. 如何根據迭代次數更新學習率(即衰減學習率策略)

 

對於問題2有兩類解決方法:

 

  1. 從初始學習率不停地向下衰減,策略一般有如下三種方式:輪數衰減、指數衰減、分數衰減

輪數減緩,如五輪訓練后學習率減半,下一個五輪后再次減半;

指數減緩,即學習率按訓練輪數增長指數插值遞減等;

分數減緩,若原始學習率為 [公式] ,學習率按照下式遞減 - [公式] = [公式] /(1 + kt),其中k 為超參數用來控制學習率減緩幅度,t 為訓練輪數

 

2. 設置學習率更新范圍(最大值與最小值),使學習率在區間內按照一定的更新策略運行,常用的策略如下圖:

 

“三角方法”

 

 

 

“余弦方法”

 

 

對於問題1,也可以歸結為有兩類解決方法:

 

  1. 大多數的網絡的學習率的初始值設置為0.01和0.001為宜
  2. 在Leslie N. Smith 在2015年的一篇論文中尋找初始學習率的方法

 

 

這個方法在論文中是用來估計網絡允許的最小學習率和最大學習率,我們也可以用來找我們的最優初始學習率。

 

首先我們設置一個非常小的初始學習率,比如le-5,然后在每個batch之后都更新網絡,同時增加學習率,統計每個batch計算出的loss。

 

最后我們可以描繪出學習率的變化曲線和loss的變化曲線,從中就能夠發現最好的學習率。

 

下面就是隨着迭代次數的增加,學習率不斷增加的曲線,以及不同的學習率對應的loss的曲線。

 

 

在本例中,最優的學習率變化范圍是從 0.001 到 0.01,初始學習率值可以設置為0.01

 

轉自:https://zhuanlan.zhihu.com/p/41681558


免責聲明!

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



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