深度學習總結(三)——學習率設定
阿新 • • 發佈:2019-01-30
1. 學習率對訓練的影響
為了能夠使得梯度下降法有較好的效能,我們需要把學習率的值設定在合適的範圍內。太大的學習速率導致學習的不穩定,太小值又導致極長的訓練時間。自適應學習速率通過保證穩定訓練的前提下,達到了合理的高速率,可以減少訓練時間。
2. 學習率的設定
固定學習率的設定:
- 經驗選擇:一般情況下傾向於選取較小的學習速率以保證系統的穩定性,學習速率的選取範圍在0.01~0.8之間。
- 對於不同大小的資料集,調節不同的學習率。根據我們選擇的成本函式F()不同,問題會有區別。當平方誤差和(Sum of Squared Errors)作為成本函式時, ∂F(ωj) / ∂ωj 會隨著訓練集資料的增多變得越來越大,因此學習率需要被設定在相應更小的值上。解決此類問題的一個方法是將學習率λ 乘上1/N,N是訓練集中資料量。這樣每步更新的公式變成下面的形式:ωj = ωj - (λ/N) * ∂F(ωj) / ∂ωj
解析:固定學習率是根據cost曲線的走向來不斷調整學習率,最終獲得比較好的初始化。其往往搭配Early Stopping來結束訓練。
可變的學習率:
- 在每次迭代中調節不同的學習率。在每次迭代中去調整學習率的值是另一種很好的學習率自適應方法。此類方法的基本思路是當你離最優值越遠,你需要朝最優值移動的就越多,即學習率就應該越大;反之亦反。例如:如果相對於上一次迭代,錯誤率減少了,就可以增大學習率,以5%的幅度;如果相對於上一次迭代,錯誤率增大了(意味著跳過了最優值),那麼應該重新設定上一輪迭代ωj 的值,並且減少學習率到之前的50%。
- 當validation accuracy滿足early stopping時,但是我們可以不stop,而是讓learning rate減半之後讓程式繼續跑。下一次validation accuracy又滿足no-improvement-in-n規則時,我們同樣再將learning rate減半。繼續這個過程,直到learning rate變為原來的1/1024再終止程式。(1/1024還是1/512還是其他可以根據實際確定)。