首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

梯度下降之步长详解

《线性回归求解》中介绍了「梯度下降大法」的原理

从起点开始,沿着「梯度」方向一步一步走到「谷底」

其中,引入了一个叫做「步长」的东西

指的是沿着梯度方向迈出多大步伐

也可以叫作「学习速率」

记作

那么,取多少合适呢?

先保守一点,取一个比较小的值,看看有什么问题

上图中,太小了,以至于经过了N此迭代之后,损失值缺失在减小

但减小的很快

可能你会说,那就把设置小点就可以了嘛

只要有足够的时间,一定能走到「谷底」,还研究个啥

实际上,从梯度下降的计算逻辑中可以知道

(参考:《线性回归求解》)

每走一步,都要把所有样本的误差计算一遍,这是很耗费资源的

试想一下你的训练集有1000万个样本,需要多大的计算量

那就把步子迈大些看看

这个图中,步子甩开了

但是,刚走两步,就越过最低点了

越过最低点会有什么问题呢?

运气好的话,会左右震荡着到达最低点;运气不好的话会左右震荡无法收敛、甚至发散

就像下图

那么,问题来了

为什么不能在「谷底」两边震荡着收敛呢?

先带着这个问题回头看很小的情况

是不是不管设置的多么小,都很有「越过谷底」的可能?因为不管怎么设置,都不太可能在迭代的过程中正好命中「谷底」,只要有丝毫偏差,就越过谷底了。

那岂不是不管多么小,都很可能会发散出去?

要解答这两个问题,就需要再深入了解一下「梯度」了

梯度的大小

之前说「梯度」是损失函数值变化地最快的方向,实际上,除了方向,它还有大小

梯度的大小指的是沿着梯度方向时,损失函数变化的速度

例如,在某一点上,沿着梯度方向前进1个单位,损失函数值减少了5,那么在改点的梯度的大小就是:5/1 = 5

看下图

图中标记的几个点,负梯度方向毋庸置疑,都是水平向右;而梯度的大小则是越来越小(箭头长短表示大小)

因为损失值 J 的变化速度越来越慢,函数越接近谷底越平坦,谷底的梯度大小为0

回到上边的问题

问题1:步长很小,会不会越过谷底?

不会!因为越往谷底处,梯度大小越小,这么小的梯度乘一个很小的步长,越不过谷底

问题2:步长很大,越过了谷底,为什么会不收敛或者发散?

越过谷底后,首先梯度方向会反过来,梯度大小可能变大、变小或不变。

如果梯度大小变大,那么梯度乘步长会更大,这样就左右震荡着发散出去;

如果梯度大小不变,那么就会左右震荡,永远不能收敛;

如果梯度大小变小,则会震荡着到达最低点

总结

实际应用中,很长时间都会用来调整、优化「学习速率」

选择对合适的步长,才能高效、准确的完成学习任务

关注公众号,获取更多内容~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180327G19T5J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券