机器学习笔记(3) — 梯度下降、学习率α

梯度下降

在这里插入图片描述
上一节中求w和b太麻烦,现在用系统的方法求w和b,梯度下降算法
梯度下降法是一种可以用来最小化任意函数的算法,不仅仅只用于线性回归的代价函数
梯度下降法可更适用于一般的函数,包括具有两个参数以上的模型,比如J(w1,w2,w3,w4,wn,b),梯度下降可能找到的是局部最小值
可以先将w和b的初值设为0,再使用梯度下降算法,每次更改参数w和b,以尝试降低代函数J(w,b),直到J在最小值或接近最小值(不一定全局最小),对于函数J,它的形状可能不是拱形或吊床型,可能存在不止一个最小值
在这里插入图片描述
对于线性回归,使用平方差代价函数,最后的形状总是呈弓形或吊床形
上图是在训练一个神经网络模型,用到的代价函数,明显可以看出有多个最小值
假设你站在山顶,想要以最快的方式到达底部的一个山谷,梯度下降法做的是,先旋转360°,看看在哪个方向上前进一小步能尽快下山,在该方向上迈出一小步比在其他方向上迈出一小步要下降的快得多,迈出第一步后,会到下一个地点,再重复此过程,站在该点旋转360°,应该再向哪迈出一小步,然后继续前进,最后在谷底,就是局部最小值
可以通过选择参数w和b的起始值,在曲面上选不同的起点,蓝线是不同的起点的不同线路,会来到一个不同的山谷
这两个谷底都称为局部最小值,而不是全局最小值

梯度下降实现

在这里插入图片描述
=是赋值表达式,w被赋值为原来的w-α乘J的导数
α称为学习率,通常是一个小的正数,在0~1之间,α的作用是控制你向下走的每一步的步幅,控制步幅的大小,如果α很大,会产生一个非常激进的梯度下降过程,有可能会跳过最小值,也就是你迈的步子非常大,如果α很小,你将会一点一点的往下走
粉色框是代价函数的J的导数项,这个导数项会告诉你想朝哪个方向迈出第一步
b被赋值为原来的b-α乘以微分项,
对于梯度下降算法,要重复这两个更新步骤直到算法收敛(w和b不断更新),收敛是达到局部最小值的点,也就是继续更新时,w和b基本不发生变化,
要同时更新这两个变量,注意在将w=tmp_w之前,w的值进入过第二个式子,此时用的w的旧值
当提到梯度下降时,它总是代表同时更新参数的梯度下降,右下角的图是不正确的,非同步更新。

理解梯度下降

在这里插入图片描述
在这里插入图片描述

暂时令b=0,此时函数J在某=该点处的导数就是与经过该点与线相交的直线的斜率,当切线指向右上方时,斜率为正,意味着这个导数是个正数
此时w=w减去学习率乘以某个正数,会得到一个新的更小的w
然后w向左移动,减小w,此时J也减小,看起来比较合理
下面的图选择不同的位置进行初始化梯度下降,为w选择一个起始值,此时斜率时负的,w更新,会变大,向右移动,此时J也在减小,比较合理
所以梯度下降法中的导数项是有意义的,无论取哪个点,都会向着导数为0的地方前进

学习率α

在这里插入图片描述

如果α太小,迈出很小的一步,需要很多很多步才能达到最低限度,所以如果学习速度大小,梯度下降会起作用,但很缓慢
如果α太大,在下面的图中,有可能会直接跳过使J最小时的w的值,最后离最小值越来越远

在这里插入图片描述
如果位于局部最小值,此时斜率是0,梯度下降使w不变,然后进一步的梯度下降,w还会是5,相当于没有做任何事,不会改变任何参数,此时它将会一直保持在局部最小值

在这里插入图片描述
第一阶段迈出了比较大的一步,第二阶段迈的小点,随着接近最小值,我们将迈出更小的一步
当接近最小值时,导数越来越接近于0
当运行梯度下降时,我们会采取非常小的步子,直到最终达到最低限度
总结:当接近局部最小值时,梯度下降将自动采取较小的步骤,因为越接近最小值,导数会自动变小(因为w在减小)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值