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