梯度下降法
是乙個一階
最優化演算法
,通常也稱為
最速下降法
。我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。
我們知道,函式的曲線如下:
程式設計實現:c++ code
[cpp]view plain
copy
/** @author:鄭海波
* blog.csdn.net/nuptboyzhb/
* 2012-12-11
*/#include
#include
using
namespace
std;
intmain()
y0=y1;//更新迭代的結果
} cout<
<
cout<
<
return
0;
} //執行結果
//min(f(x))=-0.25
//minx=1.5
//press any key to continue
問題:
迭代步長alpha為什麼要選擇0.5??選擇其他的值可以嗎?它的取值與迭代的次數、收斂性及結果的準確性有何關係?如果選擇alpha的值?
alpha看成是步長,x每次變化的程度。
alpha越大,x每次變化比較大,最後結果越不精確。
值越大,迭代次數越少,結果不一定準確。
值越小,迭代次數越多,結果準確,但效率會降低。
ps:這裡的alpha選擇0.5比較特殊,對於發現問題沒什麼幫助。
你可以吧alpha換成1/3試試(自己寫個程式跑一下或者用上面的程式),輸出每一步的結果會發現,每次x都會進一步地接近最小值。
梯度下降法入門
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...
梯度下降法
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...