在機(jī)器學(xué)習(xí)的優(yōu)化問(wèn)題中,梯度下降法和牛頓法是常用的兩種凸函數(shù)求極值的方法,他們都是為了求得目標(biāo)函數(shù)的近似解。在邏輯斯蒂回歸模型的參數(shù)求解中,一般用改良的梯度下降法,也可以用牛頓法。由于兩種方法有些相似,我特地拿來(lái)簡(jiǎn)單地對(duì)比一下。下面的內(nèi)容需要讀者之前熟悉兩種算法。 梯度下降法梯度下降法用來(lái)求解目標(biāo)函數(shù)的極值。這個(gè)極值是給定模型給定數(shù)據(jù)之后在參數(shù)空間中搜索找到的。迭代過(guò)程為: 可以看出,梯度下降法更新參數(shù)的方式為目標(biāo)函數(shù)在當(dāng)前參數(shù)取值下的梯度值,前面再加上一個(gè)步長(zhǎng)控制參數(shù)alpha。梯度下降法通常用一個(gè)三維圖來(lái)展示,迭代過(guò)程就好像在不斷地下坡,最終到達(dá)坡底。為了更形象地理解,也為了和牛頓法比較,這里我用一個(gè)二維圖來(lái)表示: 懶得畫(huà)圖了直接用這個(gè)展示一下。在二維圖中,梯度就相當(dāng)于凸函數(shù)切線的斜率,橫坐標(biāo)就是每次迭代的參數(shù),縱坐標(biāo)是目標(biāo)函數(shù)的取值。每次迭代的過(guò)程是這樣:
根據(jù)這個(gè)過(guò)程我們發(fā)現(xiàn),每一步走的距離在極值點(diǎn)附近非常重要,如果走的步子過(guò)大,容易在極值點(diǎn)附近震蕩而無(wú)法收斂。解決辦法:將alpha設(shè)定為隨著迭代次數(shù)而不斷減小的變量,但是也不能完全減為零。 牛頓法首先得明確,牛頓法是為了求解函數(shù)值為零的時(shí)候變量的取值問(wèn)題的,具體地,當(dāng)要求解 f(θ)=0時(shí),如果 f可導(dǎo),那么可以通過(guò)迭代公式 來(lái)迭代求得最小值。通過(guò)一組圖來(lái)說(shuō)明這個(gè)過(guò)程。 當(dāng)應(yīng)用于求解最大似然估計(jì)的值時(shí),變成?′(θ)=0的問(wèn)題。這個(gè)與梯度下降不同,梯度下降的目的是直接求解目標(biāo)函數(shù)極小值,而牛頓法則變相地通過(guò)求解目標(biāo)函數(shù)一階導(dǎo)為零的參數(shù)值,進(jìn)而求得目標(biāo)函數(shù)最小值。那么迭代公式寫(xiě)作: 當(dāng)θ是向量時(shí),牛頓法可以使用下面式子表示: 其中H叫做海森矩陣,其實(shí)就是目標(biāo)函數(shù)對(duì)參數(shù)θ的二階導(dǎo)數(shù)。 通過(guò)比較牛頓法和梯度下降法的迭代公式,可以發(fā)現(xiàn)兩者及其相似。海森矩陣的逆就好比梯度下降法的學(xué)習(xí)率參數(shù)alpha。牛頓法收斂速度相比梯度下降法很快,而且由于海森矩陣的的逆在迭代中不斷減小,起到逐漸縮小步長(zhǎng)的效果。 牛頓法的缺點(diǎn)就是計(jì)算海森矩陣的逆比較困難,消耗時(shí)間和計(jì)算資源。因此有了擬牛頓法。 ·END· 統(tǒng)計(jì)學(xué)·機(jī)器學(xué)習(xí)·人工智能 |
|
來(lái)自: LibraryPKU > 《機(jī)器學(xué)習(xí)》