1. 程式人生 > >梯度下降演算法(Gradient descent)

梯度下降演算法(Gradient descent)

梯度下降演算法是一種求區域性最優解的方法,在wikipedia上對它做了詳細的說明,這裡我只是把自己感興趣的一些地方總結一下:

對於F(x),在a點的梯度是F(x)增長最快的方向,那麼它的相反方向則是該點下降最快的方向,我們有如下結論:


其中,v是一個大於0的數,於是我們有F(b)>=F(a),那麼當我們不斷地迭代下去,最終結果將收斂於一個區域性最小值。

我們舉一個簡單的例子:

利用梯度下降演算法求函式f(x)=x^4-3x^3+2的區域性最小值。首先對其求微分:f'(x)=4x^3-9x^2,下面是利用python實現的程式碼:


x_old = 0
x_new = 6  # the algorithm starts at x=6
eps = 0.01
precision = 0.0001

def f_prime(x):
	return 4*x**3-9*x**2
	
while abs(x_new-x_old) > precision:
	x_old = x_new
	x_new = x_old - eps * f_prime(x_old)
	
print "Local minimum occurs at ",x_new