批量梯度下降和隨機(jī)梯度下降是機(jī)器學(xué)習(xí)中很常用的學(xué)習(xí)方法,批量梯度下降更為準(zhǔn)確逸吵,但是每一輪訓(xùn)練都要遍歷全部的樣本而隨機(jī)梯度下降則沒有這一問題扫皱,但是他最后的結(jié)果會在局部最優(yōu)解附近波動捷绑。下面看看這兩個算法吧粹污!
批量梯度下降
顧名思義壮吩,我們把所有的訓(xùn)練樣本看做一批,每次更新參數(shù)都要對他們一起遍歷來判斷走向拣宏,例如對于一個實際的問題柄延,我們可以用下面的式子來表示我們的假設(shè):
我們希望hθ(x)可以準(zhǔn)確的預(yù)測新的樣本也就是市俊,新的樣本的結(jié)果與我們的結(jié)果盡可能的接近滤奈,可以用下面的代價函數(shù)表示這一思想:
那么我們的目標(biāo)就是找到合適的θ使得J的值最小蜒程,此時使用批量梯度下降找到合適的θ:
可以看到他是對于所有的樣本進(jìn)行了遍歷在每次梯度下降的過程中忌锯。
當(dāng)上式收斂時則退出迭代领炫,何為收斂帝洪,即前后兩次迭代的值不再發(fā)生變化了葱峡。一般情況下,會設(shè)置一個具體的參數(shù)蛛芥,當(dāng)前后兩次迭代差值小于該參數(shù)時候結(jié)束迭代仅淑。注意以下幾點:
(1) a 即learning rate盖溺,決定的下降步伐烘嘱,如果太小,則找到函數(shù)最小值的速度就很慢捡硅,如果太大壮韭,則可能會出現(xiàn)overshoot the minimum的現(xiàn)象喷屋;
(2) 初始點不同屯曹,獲得的最小值也不同惊畏,因此梯度下降求得的只是局部最小值偷俭;
(3) 越接近最小值時缰盏,下降速度越慢乳规;
(4) 計算批梯度下降算法時候,計算每一個θ值都需要遍歷計算所有樣本淌实,當(dāng)數(shù)據(jù)量的時候這是比較費時的計算恨闪。
批梯度下降算法的步驟可以歸納為以下幾步:
(1)先確定向下一步的步伐大小咙咽,我們稱為Learning rate 钧敞;
(2)任意給定一個初始值:θ向量溉苛,一般為0向量
(3)確定一個向下的方向愚战,并向下走預(yù)先規(guī)定的步伐寂玲,并更新θ向量
(4)當(dāng)下降的高度小于某個定義的值拓哟,則停止下降彰檬;
隨機(jī)梯度下降
隨機(jī)梯度下降與批量梯度下降最大的區(qū)別是他不是使用全部的樣本進(jìn)行一次下降捧颅,而是使用一部分或者一個樣本進(jìn)行下降碉哑,我們隨機(jī)的選擇樣本選擇一個或每次選擇N個直到收斂扣典。
在對于大數(shù)量樣本的情況下假設(shè)我們需要10輪達(dá)到收斂,那么批量梯度需要10*K次迭代,而隨機(jī)梯度可能在K/2次就達(dá)到收斂关斜,會快得多痢畜。但是兩者各有優(yōu)缺點丁稀。
主要就是在于1是速度二驰,2是準(zhǔn)確性。還有就是BGD的學(xué)習(xí)速率比SGD大全肮。
擬牛頓法
前一篇文章說了牛頓法下降更快但是在特征過多的情況下海森陣的計算很慢辜腺,所以不適用于機(jī)器學(xué)習(xí),除了上述的SGD與BGD百匆,參數(shù)優(yōu)化還可以使用偽牛頓法仑荐。
擬牛頓法和梯度下降法(Steepest Descent Methods)一樣只要求每一步迭代時知道目標(biāo)函數(shù)的梯度粘招。通過測量梯度的變化示姿,構(gòu)造一個目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類方法大大優(yōu)于最速下降法乃戈,尤其對于困難的問題症虑。另外缩歪,因為擬牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時比牛頓法(Newton's Method)更為有效谍憔。如今匪蝙,優(yōu)化軟件中包含了大量的擬牛頓算法用來解決無約束,約束习贫,和大規(guī)模的優(yōu)化問題逛球。
擬牛頓法就是模仿牛頓法,主要是不用二階偏導(dǎo)數(shù)構(gòu)造出近似海森陣的正定對稱陣苫昌。
擬牛頓條件
來自
http://blog.csdn.net/itplus/article/details/21896619
常見的擬牛頓法
DFP算法:http://blog.csdn.net/itplus/article/details/21896981
BFGS算法:
http://blog.csdn.net/itplus/article/details/21897443
L-BFGS算法:
http://blog.csdn.net/itplus/article/details/21897715