10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授
梯度下降
批量梯度下降法(Batch gradient descent)
擁有了大數(shù)據(jù),就意味著,我們的算法模型中得面臨一個(gè)很大的 m 值。回顧到我們的批量梯度下降法:
重復(fù)直到收斂:重復(fù)直到收斂:重復(fù)直到收斂:θj:=θj?α1m∑i=1m(hθ(x(i))?y(i))xj(i),forj=0,...,nθ_j:=θ_j?α\frac1m∑_{i=1}^m(h_θ(x^{(i)})?y^{(i)})x^{(i)}_j,\quad for\ j=0,...,nθj?:=θj??αm1?i=1∑m?(hθ?(x(i))?y(i))xj(i)?,for?j=0,...,n
可以看到,每更新一個(gè)參數(shù) θjθ_jθj? ,我們都不得不遍歷一遍樣本集,在 mmm 很大時(shí),該算法就顯得比較低效。但是,批量梯度下降法能找到全局最優(yōu)解:
隨機(jī)梯度下降法(Stochastic gradient descent)
針對(duì)大數(shù)據(jù)集,又引入了隨機(jī)梯度下降法,該算法的執(zhí)行過程為:
重復(fù)直到收斂:重復(fù)直到收斂:重復(fù)直到收斂:fori=0,...,m\quad\quad for\ i=0,...,mfor?i=0,...,mθj:=θj?α(hθ(x(i))?y(i))xj(i),forj=0,...,nθ_j:=θ_j?α(h_θ(x^{(i)})?y^{(i)})x^{(i)}_j,\quad for\ j=0,...,nθj?:=θj??α(hθ?(x(i))?y(i))xj(i)?,for?j=0,...,n
相較于批量梯度下降法,隨機(jī)梯度下降法每次更新 θjθ_jθj? 只會(huì)用當(dāng)前遍歷的樣本。雖然外層循環(huán)仍需要遍歷所有樣本,但是,往往我們能在樣本尚未遍歷完時(shí)就已經(jīng)收斂,因此,面臨大數(shù)據(jù)集時(shí),隨機(jī)梯度下降法性能卓越。
上圖反映了隨機(jī)梯度下降法找尋最優(yōu)解的過程,相較于批量梯度下降法,隨機(jī)梯度下降法的曲線就顯得不是那么平滑,而是很曲折了,其也傾向于找到局部最優(yōu)解而不是全局最優(yōu)解。因此,我們通常需要繪制調(diào)試曲線來監(jiān)控隨機(jī)梯度的工作過程是否正確。例如,假定誤差定義為 cost(θ,(x(i),y(i)))=12(hθ(x(i))?y(i))2cost(θ,(x^{(i)},y^{(i)}))=\frac12(h_θ(x^{(i)})?y^{(i)})^2cost(θ,(x(i),y(i)))=21?(hθ?(x(i))?y(i))2 ,則每完成 1000 次迭代,即遍歷了 1000 個(gè)樣本,我們求取平均誤差并進(jìn)行繪制,得到誤差隨迭代次數(shù)的變化曲線:
另外,遇到下面的曲線也不用擔(dān)心,其并不意味著我們的學(xué)習(xí)率出了問題,有可能是我們的平均間隔取的太小:
如果,我們每進(jìn)行 5000 次迭代才進(jìn)行繪制,那么曲線將更加平滑:
如果我們面臨明顯上升態(tài)勢(shì)的曲線,就要考慮降低學(xué)習(xí)率 ααα 了:
另外,學(xué)習(xí)率 ααα 還可以隨著迭代次數(shù)進(jìn)行優(yōu)化
α=constant1iterationNumber+constant2α=\frac{constant1}{iterationNumber+constant2}α=iterationNumber+constant2constant1?
這樣,隨著迭代次數(shù)的增多,我們的下降步調(diào)就會(huì)放緩,避免出現(xiàn)抖動(dòng):
隨機(jī)梯度下降法工作前,需要先亂序數(shù)據(jù)集,是的遍歷樣本的過程更加分散。
Mini 批量梯度下降法(Mini-batch gradient descent)
Mini 批量梯度下降法是批量梯度下降法和隨機(jī)梯度下降法的折中,通過參數(shù) bbb 指明了每次迭代時(shí),用于更新 θθθ 的樣本數(shù)。假定 b=10,m=1000b=10,m=1000b=10,m=1000 ,Mini 批量梯度下降法的工作過程如下:
重復(fù)直到收斂:重復(fù)直到收斂:重復(fù)直到收斂:fori=1,11,21,...,991:\quad\quad for\ i=1,11,21,...,991:for?i=1,11,21,...,991:θj:=θj?α110∑k=ii+9(hθ(x(i))?y(i))xj(i),forj=0,...,nθ_j:=θ_j?α\frac1{10}\sum_{k=i}^{i+9}(h_θ(x^{(i)})?y^{(i)})x^{(i)}_j,\quad for\ j=0,...,nθj?:=θj??α101?k=i∑i+9?(hθ?(x(i))?y(i))xj(i)?,for?j=0,...,n
總結(jié)
以上是生活随笔為你收集整理的10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10.1 掌握大数据-机器学习笔记-斯坦
- 下一篇: 10.3 在线学习与 MapReduce