李宏毅深度學習筆記-Adagrad算法


李宏毅深度學習筆記 https://datawhalechina.github.io/leeml-notes

李宏毅深度學習視頻 https://www.bilibili.com/video/BV1JE411g7XF

普通的梯度下降法

image-20200529110145909

學習率\(\eta\)是個超參數需要人工調整,但是手工調整比較麻煩

普通方法可能出現的問題

image-20200529110405480

學習率太小(藍色的線),下降慢,迭代次數多

學習率太大(綠色的線),下降快,但是太快容易在極優值附近振盪

學習率特別大(黃色的線),直接越過了極優值

如何改善可能出現的問題

想法:隨着迭代次數增加,讓學習率變小

  • 初始迭代時,使用較大的學習率加速下降
  • 迭代幾次后,減小學習率防止振盪和越過

可以使用式子:\(\large \eta^t=\frac{\eta}{\sqrt{t+1}}\)\(t\)增加,\(\eta^t\)減小

當然,對每個參數都要使用不同的學習率,這樣效果會更好,AdaGrad是這種思想的一種簡單算法

AdaGrad算法

image-20200529133550548

每個參數的學習率都把它除上之前微分的均方根,\(\sigma^t\)是每個參數的所有偏微分的均方根

舉個例子:

image-20200529133816227

Adagrad 式子可化簡(都有\(\sqrt{t+1}\))

image-20200529133903254

Adagrad 里的問題

image-20200529134059096

Adagrad 中,梯度越大,說明步伐越大,但分母里梯度越大,又說明步伐越小,這里不是會有矛盾嗎?

直觀解釋

image-20200529134235996

分子變大,分母變小,那分子式變化程度很大,造成反差的效果

正式的解釋

image-20200529134411115

\(\large -\frac{b}{2a}\)不是等於0,這里只是說明是一個最小值點,對\(x\)求微分,那么只有\(x\)在變動

初始點\(x\)坐標為\(x_0\)時,最佳的變動范圍是\(x_0\)到最低點的距離\(|x_0+\frac{b}{2a}|\) (注意是\(x\)軸上的變動),可以寫成\(\large |\frac{2ax_0+b}{2a}|\) ,剛好\(|2ax_0+b|\) 是微分在初始點的絕對值。如果步伐和微分成正比,那么這個步伐就比較好。

畫圖說明下,為什么是橫軸上的距離

image-20200529165500705

A點斜率是\(\frac{BD}{AB}\), A點微分為\(\lim \limits_{AB\rightarrow0}\frac{CB}{AB}\),梯度其實是和\(\Delta x\)反向的,因為只有一個參數\(x\),所以\(\Delta x\)就是\(AB\),那么其實梯度的方向是在\(x\)軸上的

以上說明梯度越大,點離最低點越遠

梯度越大,點離最低點越遠在多參數上是不成立的

image-20200529170021787

只考慮參數 \(w_1\),是圖中藍色的線;只考慮參數 \(w_2\),就像圖中綠色的線

\(c\)點梯度比\(a\)大,但是\(c\)距離最低點更近

其實最佳距離中還有個分母\(2a\),是\(y\)的二次微分

image-20200529170721485

那么最好的step就要考慮二次微分

image-20200529172156188

進一步回到Adagrad

image-20200529172233989

分母\(\sqrt{\sum\limits_{i=0}^t (g^i)^2}\) 是在模擬二次微分,因為計算二次微分在實際問題中是開銷很大的


免責聲明!

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



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