梯度下降方法中的學習率(learning rate), 衰減因子(decay) 衝量(momentum)

本文總結自如下兩個鏈接的內容,建議讀者直接閱讀鏈接中的文章

1.  https://www.jianshu.com/p/58b3fe300ecb

2.  https://www.jianshu.com/p/d8222a84613c

學習率

學習率 lr(learning rate), 梯度下降算法中迭代步長。假設待優化函數爲func(x), dx爲函數對變量x的導數,即下降方向。每次x的迭代公式爲:

x = x + -lr*dx

lr一般不宜過大, lr過大時,迭代過程會出現震盪現象(圖1右)

                      圖1. (圖片來源於https://www.jianshu.com/p/d8222a84613c)

衰減(decay)

從圖1還可得知,隨着迭代過程的繼續,學習率應當適當減小,這樣才能更穩妥地到達極值點。這種想法就是通過權重衰減因子實現的。

lr_i = lr_start * 1.0 / (1.0 + decay * i)

x = x - lr_i*dx

上式中 i 爲迭代週期,如epoch; lr_start是lr的初始值; decay爲衰減因子, 取值範圍[0,1]. 隨着 i 的增加,學習率逐漸減小.

                                         圖2. (圖片來源於https://www.jianshu.com/p/d8222a84613c)

圖2 是lr=0.9, decay分別爲0, 0.01, 0.5, 0.9時優化迭代示意圖。從圖中可以看出,decay=0時,震盪很厲害,而decay的引入會減緩震盪。

衝量(momentum)

從上面的分析以及圖示還可知,隨着迭代的進行,學習率lr慢慢減小,後期的迭代過程會非常緩慢。而衝量可以較好地解決這一問題。衝量的理念來源於物理過程。例如,快速行駛的汽車即使踩死剎車,車也不會立刻停下,仍然會向前行駛一段距離,這是因爲前一時刻車速依然不爲0導致的。換言之,前一刻車的運行狀態對此刻是有影響的。

衝量也可以這樣理解。在迭代過程中,考慮前一次迭代對本次迭代的影響

x = x - lr*dx + v * momentum 

其中,v = - lr*dx, 但dx是上一次迭代對x的導數。momentum取值範圍[0, 1].

                                          圖3 (圖片來源於https://www.jianshu.com/p/58b3fe300ecb)

圖3 是lr=0.1, momentum分別爲0, 0.1, 0.5, 0.9時的優化示意圖。從圖中可以看出衝量的增加能加速迭代過程,但若momentum過大,則可能使迭代出現增長的現象(圖3右)。

上述圖片內容若侵犯作者權益,請留言通知我。我會盡快刪除。

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