梯度下降法-学习率选取

回顾

先来回顾一下梯度下降法参数更新方法:

对代价函数J(\theta)求偏导,乘以学习率,来更新\large \theta

那么如何确定梯度下降法正常的工作呢?如何选取一个学习率呢?

梯度下降法是否正常工作?

梯度下降所做的工作就是寻找一个合适的\theta,让代价函数J(\theta)最小,所以在梯度运行过程中我们会画出代价函数和迭代次数的图:

显示了随着迭代次数的增加,代价函数的大小的变化趋势,如果梯度下降正常工作的话,每迭代一步J(\theta)都应该下降,大概在300-400次迭代后曲线趋于平稳,说明在300-400次迭代的时候已经趋于收敛,因为他不再下降了。这条曲线可以帮助我们判断算法什么时候收敛。

当然还有一个自动收敛测试方法:当J(\theta)的值小于一个很小的值\large \varepsilon(可以是10^-3)时,判断为已经收敛,但是一般来说,选取一个合适的阈值\large \varepsilon是非常困难的,所以要找到一个合适的阈值更好的方法还是看曲线图,而不是用自动收敛测试的方法。

这个曲线可以告诉你你的算法有没有正常工作,如果你得到的图片是这样的:

J(\theta)上升,说明你的算法没有正常的工作,常见的原因就是你的学习率太大了,应该用较小的学习率(除了代码错误外)

这个图见过,学习率太大导致错过最小值,导致J(\theta)越来越大,甚至发散。

当然你还会看到这样的曲线:

这样也可以用较小的学习率解决。事实上,在代价函数J的基本假设之下,该假设适用于线性回归,数学家证明,只要学习率足够小,每次迭代之后的代价函数的值都会下降,如果J(\theta)变大,说明学习率太大,应该调小,当然太小会导致收敛速度很慢。

总结:

如果学习率太小:收敛会很慢

如果学习率太大:J(\theta)可能不会在每次迭代都下降,设置不会收敛 

通常在运行梯度下降法的时候会尝试一系列学习率的取值:...0.001, 0.003,0.01, 0.03,0.1, 0.3,1, ...

之间的关系成三倍增长,通常会得到一个不错的学习率。

  

 

 

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值