从动力学角度看优化算法:自适应学习率算法
作者丨蘇劍林
單位丨廣州火焰信息科技有限公司
研究方向丨NLP,神經網絡
個人主頁丨kexue.fm
在從動力學角度看優化算法SGD:一些小啟示一文中,我們提出 SGD 優化算法跟常微分方程(ODE)的數值解法其實是對應的,由此還可以很自然地分析 SGD 算法的收斂性質、動量加速的原理等等內容。
在這篇文章中,我們繼續沿著這個思路,去理解優化算法中的自適應學習率算法。
RMSprop
首先,我們看一個非常經典的自適應學習率優化算法:RMSprop。RMSprop 雖然不是最早提出的自適應學習率的優化算法,但是它卻是相當實用的一種,它是諸如 Adam 這樣更綜合的算法的基石,通過它我們可以觀察自適應學習率的優化算法是怎么做的。
算法概覽
一般的梯度下降是這樣的:
很明顯,這里的 γ 是一個超參數,便是學習率,它可能需要在不同階段做不同的調整。而 RMSprop 則是:
算法分析
對比樸素的 SGD,可以發現 RMSprop 在對 θ 的更新中,將原來是標量的學習率 γ,換成了一個向量。
如果把這個向量也看成是學習率,那么 RMSprop 就是找到了一個方案,能夠給參數的每個分量分配不同的學習率。
這個學習率的調節,是通過因子來實現的,而則是梯度平方的滑動平均。本質上來說,“滑動平均”平均只是讓訓練過程更加平穩一些,它不是起到調節作用的原因,起作用的主要部分是“梯度”,也就是說,可以用梯度大小來調節學習率。
自適應學習率
為什么用梯度大小可以來調節學習率呢?其實這個思想非常樸素。
極小值點和ODE
話不多說,簡單起見,我們先從一個一維例子出發:假設我們要求 L(θ) 的一個極小值點,那么我們引入一個虛擬的時間參數 t,轉化為 ODE:
不難判斷,L(θ) 的一個極小值點就是這個方程的穩定的不動點,我們從任意的 θ0 出發,數值求解這個 ODE,可以期望它最終會收斂于這個不動點,從而也就得到了一個極小值點。
最簡單的歐拉解法,就是用去近似,從而得到:
也就是:
這就是梯度下降法了,θt+γ 相當于 θn+1,而 θt 相當于 θn,也就是每步前進 γ 那么多。
變學習率思想
問題是,γ 選多少為好呢?當然,從“用去近似”這個角度來看,當然是 γ 越小越精確,但是 γ 越小,需要的迭代次數就越多,也就是說計算量就越大,所以越小越好是很理想,但是不現實。
所以,最恰當的方案是:每一步夠用就好。可是我們怎么知道夠用了沒有?
因為我們是用去近似的,那么就必須分析近似程度:根據泰勒級數,我們有:
在我們這里有,那么我們有:
可以期望,當 γ 比較小的時候,誤差項,也就是說,在一定條件下,γ∣L′(θt)∣ 本身就是誤差項的度量,如果我們將 γ∣L′(θt)∣??控制在一定的范圍內,那么誤差也被控制住了。即:
其中 γ? 是一個常數,甚至只需要簡單地 γ∣L′(θt)∣=γ?(暫時忽略 L′(θt)=0 的可能性,先觀察整體的核心思想),也就是:
這樣我們就通過梯度來調節了學習率。
滑動平均處理
讀者可能會詬病,把 γ=γ?/∣L′(θt)∣ 代入原來的迭代結果,不就是:
整個梯度你只用了它的符號信息,這是不是太浪費了?過于平凡:也就是不管梯度大小如何,每次迭代 θ 都只是移動固定的長度。
注意,從解 ODE 的角度看,其實這并沒有毛病,因為 ODE 的解是一條軌跡 (t,θ(t)),上面這樣處理,雖然 θ 變得平凡了,但是 t 卻變得不平凡了,也就是相當于 t,θ 的地位交換了,因此還是合理的。
只不過,如果關心的是優化問題,也就是求 L(θ) 的極小值點的話,那么上式確實有點平凡了,因為如果每次迭代 θ 都只是移動固定的長度,那就有點像網格搜索了,太低效。
所以,為了改善這種不平凡的情況,又為了保留用梯度調節學習率的特征,我們可以把梯度平均一下,結果就是:
這個 λ 是一個接近于 1 但是小于 1 的常數,這樣的話 Gt 在一定范圍內就比較穩定,同時在一定程度上保留了梯度 L′(θt) 本身的特性,所以用它來調節學習率算是一個比較“機智”的做法。為了避免 t+γ?,t+γ 引起記號上的不適應,統一用 n,n+1 來表示下標,得到:
這就是開頭說的 RMSprop 算法了。
高維情形分析
上面的討論都是一維的情況,如果是多維情況,那怎么推廣呢??
也許讀者覺得很簡單:把標量換成向量不就行了么?并沒有這么簡單,因為 (13) 推廣到高維,至少有兩種合理的選擇:
或:
前者用梯度的總模長來累積,最終保持了學習率的標量性;后者將梯度的每個分量分別累積,這種情況下調節后的學習率就變成了一個向量,相當于給每個參數都分配不同的學習率。要是從嚴格理論分析的角度來,其實第一種做法更加嚴密,但是從實驗效果來看,卻是第二種更為有效。
我們平時所說的 RMSprop 算法,都是指后者 (15)。但是有很多喜歡純 SGD 煉丹的朋友會詬病這種向量化的學習率實際上改變了梯度的方向,導致梯度不準,最終效果不夠好。所以不喜歡向量化學習率的讀者,不妨試驗一下前者。
結論匯總
本文再次從 ODE 的角度分析了優化算法,這次是從誤差控制的角度給出了一種自適應學習率算法(RMSprop)的理解。至于我們更常用的 Adam,則是 RMSprop 與動量加速的結合,這里就不贅述了。
將優化問題視為一個常微分方程的求解問題,這其實就是將優化問題變成了一個動力學問題,這樣可以讓我們從比較物理的視角去理解優化算法(哪怕只是直觀而不嚴密的理解),甚至可以把一些 ODE 的理論結果拿過來用,后面筆者會試圖再舉一些這樣的例子。
點擊以下標題查看作者其他文章:?
變分自編碼器VAE:原來是這么一回事 | 附開源代碼
再談變分自編碼器VAE:從貝葉斯觀點出發
變分自編碼器VAE:這樣做為什么能成?
從變分編碼、信息瓶頸到正態分布:論遺忘的重要性
深度學習中的互信息:無監督提取特征
全新視角:用變分推斷統一理解生成模型
細水長flow之NICE:流模型的基本概念與實現
細水長flow之f-VAEs:Glow與VAEs的聯姻
深度學習中的Lipschitz約束:泛化與生成模型
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢??答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
??來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
?
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 查看作者博客
總結
以上是生活随笔為你收集整理的从动力学角度看优化算法:自适应学习率算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图神经网络综述:模型与应用
- 下一篇: 头部数据人才24小时图鉴