梯度下降算法是一种求局部最优解的方法,在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
本文介绍了梯度下降算法的基本原理及应用,通过实例演示了如何使用该算法寻找函数的局部最小值,并给出了Python代码实现。
353

被折叠的 条评论
为什么被折叠?



