梯度下降算法(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


你可能感兴趣的:(Programming,Pearls,算法,algorithm,python)