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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值