前言
如果你能找到這里,真是我的幸運(yùn)~這里是藍(lán)白絳的學(xué)習(xí)筆記愤兵,本集合主要針對(duì)《百面機(jī)器學(xué)習(xí)——算法工程師帶你去面試》這本書赐俗。主要記錄我認(rèn)為重要的知識(shí)點(diǎn),希望對(duì)大家有幫助众眨。
第七章 優(yōu)化算法
6握牧、隨機(jī)梯度下降法的加速
- 隨機(jī)梯度下降是深度學(xué)習(xí)中最常用的優(yōu)化方法,但是偶爾也會(huì)失效娩梨,因?yàn)殡S機(jī)梯度下降好比蒙上眼睛只憑腳底踩石頭的感覺(jué)判斷下山路徑沿腰,每步接收到的信息量有限瞬内,因此對(duì)梯度的估計(jì)常常出現(xiàn)偏差摆昧,造成目標(biāo)函數(shù)曲線收斂很不穩(wěn)定,伴有劇烈波動(dòng)鳍咱,甚至出現(xiàn)不收斂的情況纽什。如下圖所示措嵌。
7-6 隨機(jī)梯度下降參數(shù)優(yōu)化軌跡 - 隨機(jī)梯度下降與批量梯度下降:批量梯度下降法為了獲取準(zhǔn)確的梯度,每一步都把整個(gè)訓(xùn)練集載入進(jìn)來(lái)進(jìn)行計(jì)算芦缰,時(shí)間花費(fèi)和內(nèi)存開銷都非常大企巢,無(wú)法應(yīng)用于大數(shù)據(jù)集、大模型的場(chǎng)景让蕾。隨機(jī)梯度下降則放棄了對(duì)梯度準(zhǔn)確性的追求浪规,每步僅僅隨機(jī)采樣一個(gè)(或少量)樣本來(lái)估計(jì)當(dāng)前梯度,計(jì)算速度快涕俗,內(nèi)存開銷小。
- 對(duì)隨機(jī)梯度下降法來(lái)說(shuō)神帅,最可怕的不是局部最優(yōu)點(diǎn)再姑,而是山谷和鞍點(diǎn)兩類。山谷點(diǎn)導(dǎo)致收斂不穩(wěn)定和收斂速度慢找御;鞍點(diǎn)導(dǎo)致隨機(jī)梯度下降法無(wú)法準(zhǔn)確察覺(jué)出梯度的微小變化元镀,結(jié)果就停滯下來(lái)绍填。
- 隨機(jī)梯度下降法的優(yōu)化:隨機(jī)梯度下降本質(zhì)上是用迭代方式更新參數(shù),更新公式為:
基于梯度下降有以下幾種優(yōu)化方法:
- 動(dòng)量(Momentum)方法:我們希望當(dāng)沿山谷滾下時(shí)栖疑,不容易受到途中旁力的干擾讨永,使軌跡更穩(wěn)更直;當(dāng)來(lái)到鞍點(diǎn)中心處時(shí)遇革,在慣性的作用下繼續(xù)前行卿闹,從而有機(jī)會(huì)沖出平坦的陷阱。動(dòng)量方法模型參數(shù)的迭代公式為:
可以看到不加動(dòng)量的方法每次只利用當(dāng)前估計(jì)的梯度
萝快,而動(dòng)量方法利用了上一次的步伐
和當(dāng)前估計(jì)的梯度
锻霎。慣性就體現(xiàn)在對(duì)前一次步伐信息的重利用上。當(dāng)前梯度好比加速度揪漩,前一次步伐好比前一刻的速度旋恼,當(dāng)前步伐好比當(dāng)前時(shí)刻的速度。另外奄容,衰減系數(shù)
扮演了阻力的作用冰更。
相比隨機(jī)梯度下降,動(dòng)量方法收斂速度更快昂勒,收斂曲線更加穩(wěn)定蜀细。如下圖所示。
7-6 動(dòng)量方法的效果 - AdaGrad方法:除了可以從過(guò)去的步伐中獲得沖勁叁怪,還可以獲得對(duì)周圍環(huán)境的感知审葬,即使蒙上眼睛,依靠前幾次邁步的感覺(jué)奕谭,應(yīng)該也能判斷出一些信息涣觉。
例如在文本處理中訓(xùn)練詞嵌入模型的參數(shù)時(shí),有的詞或詞組頻繁出現(xiàn)血柳,有的很少出現(xiàn)官册。數(shù)據(jù)的稀疏性導(dǎo)致相應(yīng)參數(shù)的梯度的稀疏性,不頻繁出現(xiàn)的詞或詞組的參數(shù)的梯度在大多數(shù)情況下為0难捌,因而這些參數(shù)被更新的頻率很低膝宁。
我們希望更新頻率低的參數(shù)可以擁有較大的更新步幅,而更新頻率高的參數(shù)的步幅可以減小根吁。AdaGrad方法采用“歷史梯度平方和”來(lái)衡量不同參數(shù)的梯度的稀疏性员淫,取值越小表明越稀疏,更新公式表示為:其中
表示
時(shí)刻參數(shù)向量
的第
個(gè)參數(shù)击敌,
表示
時(shí)刻的梯度向量
的第
個(gè)維度介返。另外,分母中求和形式實(shí)現(xiàn)了退火過(guò)程,這是很多優(yōu)化技術(shù)中常見(jiàn)的策略圣蝎,意味著隨著時(shí)間推移刃宵,學(xué)習(xí)速率
越來(lái)越小,保證了算法的收斂徘公。
注:簡(jiǎn)言之牲证,這里是第
個(gè)分量,它的參數(shù)更新关面,與該分量從時(shí)刻0到時(shí)刻
的梯度的第
個(gè)分量的平方的和有關(guān)坦袍,也就是記錄了該分量
時(shí)刻及以前的所有更新。并將這個(gè)和做了分母缭裆,讓更新比較少的參數(shù)擁有更大的更新步幅键闺。為了避免分母為0,還加入了
澈驼。
- Adam方法:Adam方法將慣性保持和環(huán)境感知兩個(gè)優(yōu)點(diǎn)集于一身辛燥。一方面,Adam記錄梯度的一階矩(first moment)缝其,即過(guò)往梯度與當(dāng)前梯度的平均挎塌,這體現(xiàn)了慣性保持;另一方面内边,Adam還記錄梯度的二階矩(second moment)榴都,即過(guò)往梯度平方與當(dāng)前梯度平方的平均,這類似AdaGrad方法漠其,體現(xiàn)了環(huán)境感知能力嘴高,為不同參數(shù)產(chǎn)生自適應(yīng)的學(xué)習(xí)速率。一階矩和二階矩采用類似于滑動(dòng)窗口內(nèi)求平均的思想進(jìn)行融合和屎,即當(dāng)前梯度和近一段時(shí)間內(nèi)梯度的平均值拴驮,時(shí)間久遠(yuǎn)的梯度對(duì)當(dāng)前平均值的貢獻(xiàn)呈指數(shù)衰減。具體來(lái)說(shuō)柴信,一階矩和二階矩采用指數(shù)衰減平均(exponential decay average)技術(shù)套啤,計(jì)算公式為:
其中
,
為衰減系數(shù)随常,
是一階矩潜沦,
是二階矩。
一階矩相當(dāng)于估計(jì)绪氛,當(dāng)下梯度
是隨機(jī)采樣得到的估計(jì)結(jié)果唆鸡,我們更關(guān)注它的期望。二階矩相當(dāng)于估計(jì)
枣察,AdaGrad是加和争占,Adam是期望袄琳。他們的物理意義是:
(1)大且
也大時(shí),梯度大且穩(wěn)定燃乍,表明遇到了明顯的大坡,前進(jìn)方向明確宛琅;
(2)趨于0且
大時(shí)刻蟹,梯度不穩(wěn)定,表明可能遇到一個(gè)峽谷嘿辟,容易引起反彈震蕩舆瘪;
(3)大且
趨于0時(shí),這種情況不可能出現(xiàn)红伦;
(4)趨于0且
趨于0時(shí)英古,梯度趨于0,可能到達(dá)局部最低點(diǎn)昙读,也可能走到一片坡度極緩的平地召调,此時(shí)要避免陷入平原陷阱(鞍點(diǎn))。
Adam方法還考慮了蛮浑,
在零初始之情況下的偏置矯正唠叛。具體來(lái)說(shuō),Adam的更新公式為:
其中沮稚,
艺沼,
。
- Nesterov Accelerated Gradient方法:該方法擴(kuò)展了動(dòng)量方法蕴掏,順著慣性方法障般,計(jì)算未來(lái)可能位置處的梯度而非當(dāng)前位置的梯度,這個(gè)“提前量”的設(shè)計(jì)讓算法有了對(duì)前方環(huán)境預(yù)判的能力盛杰。
- AdaDelta和RMSProp方法:兩個(gè)方法非常類似挽荡,是對(duì)AdaGrad方法的改進(jìn)。AdaGrad方法采用所有歷史梯度平方和的平方根做分母饶唤,分母隨時(shí)間單調(diào)遞增徐伐,產(chǎn)生自適應(yīng)學(xué)習(xí)速率隨時(shí)間衰減的速度過(guò)于激進(jìn)。AdaDelta和RMSProp采用指數(shù)衰減平均的方法募狂,用過(guò)往梯度的均值代替它們的求和办素。
- AdaMax方法:該方法是Adam方法的變種,對(duì)梯度平方的處理由指數(shù)衰減平均改為指數(shù)衰退求最大值祸穷。
- Nadam方法:該方法可以看成Nesterov Accelerated Gradient版的Adam性穿。
7、L1正則化與稀疏性
- 稀疏性:稀疏性是我們希望的雷滚。我們希望模型參數(shù)具有稀疏性需曾,也就是模型的很多參數(shù)是0(是0而不是很小很小的數(shù))。這相當(dāng)于對(duì)模型進(jìn)行了一次特征選擇,只留下一些比較重要的特征呆万,提高模型的泛化能力商源,降低過(guò)擬合的可能。在實(shí)際應(yīng)用中谋减,機(jī)器學(xué)習(xí)模型的輸入動(dòng)輒幾百上千萬(wàn)維牡彻,稀疏性就顯得非常重要。
- L1正則化產(chǎn)生稀疏解的原因:
- 角度1:解空間形狀
如下圖所示出爹,在二維的情況下庄吼,黃色的部分是L2和L1正則項(xiàng)約束后的解空間,綠色的等高線是凸優(yōu)化問(wèn)題中目標(biāo)函數(shù)的等高線严就。由圖可知L2正則項(xiàng)約束后的解空間是圓形总寻,而L1正則項(xiàng)約束的解空間是多邊形。顯然梢为,多邊形的解空間更容易在尖角處與等高線碰撞出稀疏解渐行。這個(gè)解釋是正確的,但是不夠精確铸董。
7-7 L1L2正則化對(duì)應(yīng)解空間角度
進(jìn)一步挖深殊轴,為什么加入正則項(xiàng)就是定義了一個(gè)解空間約束?為什么L1和L2的解空間是不同的袒炉?可以通過(guò)KKT條件給出一個(gè)解釋旁理。
事實(shí)上,“帶正則項(xiàng)”和“帶約束條件”是等價(jià)的我磁。為了約束的可能取值空間從而防止過(guò)擬合孽文,我們?yōu)樵搩?yōu)化問(wèn)題加上一個(gè)約束,就是
的L2范數(shù)的平方不能大于
:
為了求解帶約束條件的凸優(yōu)化問(wèn)題夺艰,其拉格朗日函數(shù)為:若
和
分別是原始問(wèn)題和對(duì)偶問(wèn)題的最優(yōu)解芋哭,則根據(jù)KKT條件,它們應(yīng)該滿足:
其中第一個(gè)式子就是
為帶L2正則項(xiàng)優(yōu)化問(wèn)題的最優(yōu)解的條件郁副,而
就是L2正則項(xiàng)前面的正則參數(shù)减牺。所以L2正則項(xiàng)相當(dāng)于為參數(shù)定義了一個(gè)圓形的解空間(因?yàn)楸仨毐WCL2范數(shù)不能大于
),而L1正則化相當(dāng)于為參數(shù)定義了一個(gè)菱形的解空間存谎。
如果原問(wèn)題目標(biāo)函數(shù)的最優(yōu)解不是恰好落在解空間內(nèi)拔疚,那么約束條件下的最優(yōu)解一定是在解空間的邊界上。而L1“棱角分明”的解空間顯然更容易與目標(biāo)函數(shù)等高線在角點(diǎn)碰撞既荚,從而產(chǎn)生稀疏解稚失。 - 角度2:函數(shù)疊加
這個(gè)角度更加直觀。僅考慮一維的情況恰聘,多維情況是類似的句各。假設(shè)棕線是原始目標(biāo)函數(shù)的曲線圖吸占,最小值點(diǎn)在藍(lán)點(diǎn)處,對(duì)應(yīng)的
非0凿宾。
7-7 L1L2函數(shù)疊加角度
首先考慮加上L2正則項(xiàng)矾屯,目標(biāo)函數(shù)變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=L(w)%2BCw%5E2" alt="L(w)+Cw^2" mathimg="1">,其函數(shù)曲線為黃色初厚,最小值點(diǎn)在黃點(diǎn)處问拘,對(duì)應(yīng)的的絕對(duì)值減小了,但仍然非0惧所。
考慮加上L1正則項(xiàng),目標(biāo)函數(shù)變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=L(w)%2BC%7Cw%7C" alt="L(w)+C|w|" mathimg="1">绪杏,其函數(shù)曲線為綠色下愈,此時(shí)最小值點(diǎn)在紅點(diǎn)處,對(duì)應(yīng)的是0蕾久,產(chǎn)生了稀疏性势似。
產(chǎn)生上述現(xiàn)象的原因也很直觀,加入L1正則項(xiàng)后僧著,對(duì)帶正則項(xiàng)的目標(biāo)函數(shù)求導(dǎo)履因,正則項(xiàng)部分產(chǎn)生的導(dǎo)數(shù)在原點(diǎn)左邊部分是,在原點(diǎn)右邊部分是
盹愚,因此只要原目標(biāo)函數(shù)導(dǎo)數(shù)的絕對(duì)值小于
栅迄,則帶正則項(xiàng)的目標(biāo)函數(shù)在原點(diǎn)左邊部分始終是遞減的,在原點(diǎn)右邊部分始終是遞增的皆怕,最小值點(diǎn)自然在原點(diǎn)處毅舆。
相反,L2正則項(xiàng)在原點(diǎn)處的導(dǎo)數(shù)為0愈腾,只要原目標(biāo)函數(shù)在原點(diǎn)處的導(dǎo)數(shù)不為0憋活,那么最小值點(diǎn)就不會(huì)在原點(diǎn),所以L2只有減小絕對(duì)值的作用虱黄,對(duì)解空間的稀疏性沒(méi)有貢獻(xiàn)悦即。
在一些線梯度下降算法中,往往會(huì)采用截?cái)嗵荻确?/strong>來(lái)產(chǎn)生稀疏性橱乱,這和L1正則項(xiàng)產(chǎn)生的稀疏性原理是類似的辜梳。 - 角度3:貝葉斯先驗(yàn)
從貝葉斯的角度來(lái)理解L1、L2正則化泳叠,L1正則化相當(dāng)于對(duì)模型參數(shù)引入了拉普拉斯先驗(yàn)冗美,L2正則化相當(dāng)于引入了高斯先驗(yàn),而拉普拉斯先驗(yàn)使參數(shù)為0的可能性更大析二。
下圖為高斯分布曲線粉洼,它在極值點(diǎn)(0點(diǎn))處是平滑的节预,也就是高斯先驗(yàn)分布認(rèn)為在極值點(diǎn)附近取不同值的可能性是接近的。這就是L2正則化只會(huì)讓
更接近0點(diǎn)属韧,而不會(huì)等于0的原因安拟。
7-7 L1L2貝葉斯先驗(yàn)角度高斯分布曲線
下圖為拉普拉斯分布曲線,它在極值點(diǎn)(0點(diǎn))處是一個(gè)尖峰宵喂,所以拉普拉斯先驗(yàn)分布中參數(shù)的取值為0的可能性要更高糠赦。
7-7 L1L2貝葉斯先驗(yàn)角度拉普拉斯分布曲線
小結(jié)
這是本章的第二部分,第一部分講了常見(jiàn)的損失函數(shù)锅棕、常見(jiàn)的優(yōu)化方法拙泽、批量梯度下降、隨機(jī)梯度下降裸燎、小批量梯度下降顾瞻。第二部分主要講梯度下降法的優(yōu)化,有動(dòng)量方法德绿、AdaGrad方法荷荤、Adam方法等等,還講了L1正則化產(chǎn)生稀疏解的原因移稳,從三個(gè)角度分別解釋蕴纳,理解還是比較難的。
結(jié)尾
如果您發(fā)現(xiàn)我的文章有任何錯(cuò)誤个粱,或?qū)ξ业奈恼掠惺裁春玫慕ㄗh古毛,請(qǐng)聯(lián)系我!如果您喜歡我的文章都许,請(qǐng)點(diǎn)喜歡~*我是藍(lán)白絳喇潘,感謝你的閱讀!