从动力学角度看优化算法:为什么学习率不宜过小?
?PaperWeekly 原創 ·?作者|蘇劍林
單位|追一科技
研究方向|NLP、神經網絡
本文的主題是“為什么我們需要有限的學習率”,所謂“有限”,指的是不大也不小,適中即可,太大容易導致算法發散,這不難理解,但為什么太小也不好呢?一個容易理解的答案是,學習率過小需要迭代的步數過多,這是一種沒有必要的浪費,因此從“節能”和“加速”的角度來看,我們不用過小的學習率。
但如果不考慮算力和時間,那么過小的學習率是否可取呢?Google 最近發布在 Arxiv 上的論文 Implicit Gradient Regularization?[1] 試圖回答了這個問題,它指出有限的學習率隱式地給優化過程帶來了梯度懲罰項,而這個梯度懲罰項對于提高泛化性能是有幫助的,因此哪怕不考慮算力和時間等因素,也不應該用過小的學習率。
對于梯度懲罰,筆者已有過多次討論,在文章對抗訓練淺談:意義、方法和思考(附 Keras 實現)和泛化性亂彈:從隨機噪聲、梯度懲罰到虛擬對抗訓練中,我們就分析了對抗訓練一定程度上等價于對輸入的梯度懲罰,而文章《我們真的需要把訓練集的損失降低到零嗎?》[2] 介紹的 Flooding 技巧則相當于對參數的梯度懲罰。
總的來說,不管是對輸入還是對參數的梯度懲罰,都對提高泛化能力有一定幫助。
降得最快的方向
該論文跟這個系列的文章一樣,將優化過程看成是求解微分方程。回顧之前的文章從動力學角度看優化算法:一個更整體的視角,設損失函數為 ,我們將 看成是看成是沿著某種時間參數 t 變化的軌跡 ,現在我們考慮它的變化率:
我們希望 隨著時間的變化是遞減的(Loss 越小越好),所以希望上式小于 0,當模長 固定時,上式右端的最小值在梯度的反方向 取到,所以我們說梯度的負方向下降得最快方向。簡單期間,我們可以直接令:
那么求解參數 就轉化為求解上述常微分方程組,這也是“從動力學角度看優化算法”這個系列的基本出發點。
藏在學習率中的正則
然而,實際的問題是,我們沒法真正去求解微分方程組(2),我們只能用數值迭代,比如采用最簡單的歐拉法,得到:
這其實就是最樸素的梯度下降法,其中 也就是我們常說的學習率。上式本質上就是一個差分方程。
可以想象,從 出發,得到的點 與方程組(2)的精確解 會有一定的出入。
如何衡量出入到什么程度呢?不妨這樣想象, 其實也是某個類似(2)的微分方程組的精確解,只不過對應的 換成了某個新的 ,我們比較 與 的差異就好了。
經推導,如果僅保留到 的一階項,那么有:
推導過程我們放在下一節。可以看到,其實就相當于往損失函數里邊加入了梯度懲罰形式的正則項 ,而梯度懲罰項有助于模型到達更加平緩的區域,有利于提高泛化性能。
這也就是說,離散化的迭代過程隱式地帶來了梯度懲罰項,反而是對模型的泛化是有幫助的,而如果 ,這個隱式的懲罰則會變弱甚至消失。
因此,結論就是學習率不宜過小,較大的學習率不僅有加速收斂的好處,還有提高模型泛化能力的好處。當然,可能有些讀者會想,我直接把梯度懲罰加入到 loss 中,是不是就可以用足夠小的學習率了?理論上確實是的,原論文將梯度懲罰加入到 loss 中的做法,稱為“顯式梯度懲罰”。
差分方程到微分方程
對于差分方程到微分方程的轉換,我們可以用普通的“攝動法”來求解,筆者也有過簡單介紹(可以查看標簽“攝動” [3] )。不過更漂亮的解法是直接利用算符的級數運算來做,參考之前的文章《算符的藝術:差分、微分與伯努利數》[4] 。
我們用泰勒級數展開 :
如果將對 t 求導的運算記為 D,那么上式實際上是:
所以差分方程(3)可以寫為:
跟常規的代數運算一樣,我們有:
等號左端就是 ,因此等號右端就是 的表達式了,保留到一階項為:
也就是:
所以一階的 ,推導完畢。
例行公事的小總結
深度學習的發展和普及離不開基于梯度下降的優化器的成功應用,而梯度下降為何能如此成功,依然還沒得到深刻的解釋。眾多研究人員在“煉丹”過程中,多多少少也能總結出一些不知道為什么有效的“奇技淫巧”出來,諸如 batch_size 該取多大、學習率該怎么調,估計每個人也有自己的經驗。
對于“學習率不能過小”這個現象,大家應該都有所體會,很多時候可能已經默認作為一個“常識”使用,而懶得思考背后的原理了。
Google 的這篇論文則為理解這個現象提供了一個可能的解釋:適當而不是過小的學習率能為優化過程帶來隱式的梯度懲罰項,有助于收斂到更平穩的區域。筆者認為其分析過程還是值得參考學習的。
參考文獻
[1] https://arxiv.org/abs/2009.11162
[2] https://kexue.fm/archives/7643
[3] https://kexue.fm/tag/%E6%91%84%E5%8A%A8/
[4] https://kexue.fm/archives/3018
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的从动力学角度看优化算法:为什么学习率不宜过小?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 征信报告会显示分期乐账单吗
- 下一篇: 超细粒度分析XLNet中神奇的Atten