GradientDescent(梯度下降)算法的理解

公式:w:=w-\eta \frac{\partial function}{\partial w}

公式解释:用w减去其目标函数对w求得的偏导数乘以一个常数,之后所得到的新值再次赋值给w

上面的这个凸函数是一个二次函数,在点w处求得其梯度,也就是该点的导数值,该点的导数值表示该点下降的快,还是慢,它形容的是一个程度,是一个比重,不是一个具体的大小长短,类似于一个百分比,5%或者150%。那么如何让它变得有大小长短呢,那就给他一个单位距离,也就是步长也就是公式中乘上的\eta。如果导数值很大,其就要往“前”走的大胆一点,走的长一点,那么单位步长乘以一个大的导数值是不是会将距离变得很大,这样可以更加快速的逼近极值点,当w点接近极值点的时候,

 

可以发现w点处的导数值是变得离0更近了,那么乘以一步长就相当于把步长缩小了,那么就向“前”走了一点点,此时走一点点,是因为已经要接近极值点了,所以它要一点一点的逼近极值点。所以,偏导数是一个程度的度量不是一个具体的大小,只有乘上了一个有长度有大小的量,其才能发挥真正的作用。

# f(x)=x^2 - 6x + 9
def f_grad(x):
    return 2*x - 6

def gradientDescent():
    x = 0
    next_x = 1
    alpha = 0.1
    eps = 0.00001
    while abs(x - next_x) > eps:
        x = next_x
        next_x = x - alpha*f_grad(x)
        print next_x
    return next_x

x_mid = gradientDescent()
print (x_mid)

 

 

 

可以从上面的这个例子看到,开始的时候下降的特别快,但是当进入到最后的时候,下降的长度变得很小了,越来越逼近极值点x=3。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值