10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授
梯度下降
批量梯度下降法(Batch gradient descent)
擁有了大數據,就意味著,我們的算法模型中得面臨一個很大的 m 值。回顧到我們的批量梯度下降法:
重復直到收斂:重復直到收斂:重復直到收斂:θ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
可以看到,每更新一個參數 θjθ_jθj? ,我們都不得不遍歷一遍樣本集,在 mmm 很大時,該算法就顯得比較低效。但是,批量梯度下降法能找到全局最優解:
隨機梯度下降法(Stochastic gradient descent)
針對大數據集,又引入了隨機梯度下降法,該算法的執行過程為:
重復直到收斂:重復直到收斂:重復直到收斂: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? 只會用當前遍歷的樣本。雖然外層循環仍需要遍歷所有樣本,但是,往往我們能在樣本尚未遍歷完時就已經收斂,因此,面臨大數據集時,隨機梯度下降法性能卓越。
上圖反映了隨機梯度下降法找尋最優解的過程,相較于批量梯度下降法,隨機梯度下降法的曲線就顯得不是那么平滑,而是很曲折了,其也傾向于找到局部最優解而不是全局最優解。因此,我們通常需要繪制調試曲線來監控隨機梯度的工作過程是否正確。例如,假定誤差定義為 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 個樣本,我們求取平均誤差并進行繪制,得到誤差隨迭代次數的變化曲線:
另外,遇到下面的曲線也不用擔心,其并不意味著我們的學習率出了問題,有可能是我們的平均間隔取的太小:
如果,我們每進行 5000 次迭代才進行繪制,那么曲線將更加平滑:
如果我們面臨明顯上升態勢的曲線,就要考慮降低學習率 ααα 了:
另外,學習率 ααα 還可以隨著迭代次數進行優化
α=constant1iterationNumber+constant2α=\frac{constant1}{iterationNumber+constant2}α=iterationNumber+constant2constant1?
這樣,隨著迭代次數的增多,我們的下降步調就會放緩,避免出現抖動:
隨機梯度下降法工作前,需要先亂序數據集,是的遍歷樣本的過程更加分散。
Mini 批量梯度下降法(Mini-batch gradient descent)
Mini 批量梯度下降法是批量梯度下降法和隨機梯度下降法的折中,通過參數 bbb 指明了每次迭代時,用于更新 θθθ 的樣本數。假定 b=10,m=1000b=10,m=1000b=10,m=1000 ,Mini 批量梯度下降法的工作過程如下:
重復直到收斂:重復直到收斂:重復直到收斂: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
總結
以上是生活随笔為你收集整理的10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10.1 掌握大数据-机器学习笔记-斯坦
- 下一篇: 10.3 在线学习与 MapReduce