5.3 梯度下降实用技巧(学习速率)

5.3 梯度下降中的实用技巧二(学习速率)

    这一节,我们将讨论学习速率α,参考下图。第一个公示是梯度下降算法的更新规则,我们将学习两点,一是怎样保证梯度下降运行正确,而是怎么选择学习速率α。

    梯度下降算法的任务是为你寻找参数θ,并且希望它能够最小化你的代价函数,在梯度下降算法运行时,我通常会画出代价函数J(θ)的值,如下图所示,x轴表示的是迭代次数,你可能会得到如下图所示的一条曲线,曾经x轴表示的是参数θ,但是这里不是。在迭代100次之后,我将得到 一个θ值, 根据100步迭代之后得到的这个θ值 ,我将算出代价函数J(θ)的值,而这个点的垂直高度就代表,梯度下降算法 100步迭代之后得到的θ 算出的J(θ)值,而这个点,则是梯度下降算法迭代200次之后,得到的θ 算出的 J(θ) 值 所以这条曲线 显示的是梯度下降算法迭代过程中代价函数J(θ)的值。如果梯度下降算法正常工作那么每一步迭代之后 J(θ)都应该下降,这条曲线的一个用处在于 它可以告诉你如果你看一下, 我画的这条曲线 当你达到 300步迭代之后 也就是300步到400步迭代之间 

    看起来 J(θ) 并没有下降多少,所以当你到达400步迭代时,这条曲线看起来已经很平坦了,也就是说在这里400步迭代的时候,梯度下降算法基本上已经收敛了,因为代价函数并没有继续下降。 所以说,看这条曲线可以帮助你判断梯度下降算法是否已经收敛。

      顺便说一下 ,对于某一个特定的问题,梯度下降算法所需要的迭代次数相差很大,可能对于某一个问题只需要30步,但是对于另一个问题则需要30000步,我们没有办法提前进行判断,我们通常需要画出代价函数岁迭代次数增加的变化曲线,通过观察这类曲线来观察梯度下降是否收敛;当然还有一种自动化的方法帮助我们判断梯度下降是否收敛,自动收敛测试一个非常典型的例子是如果代价函数 J(θ) 的下降小于一个很小的值ε ,那么就认为已经收敛,比如可以选择 1e-3, 但我发现,通常要选择一个合适的阈值ε,是相当困难的。

      因此,为了检查梯度下降算法是否收敛 。Ng通常是选择看上面的图(J(θ)随迭代次数变化的图),而不是通过自动收敛测试来进行判断。看这个图,也可以提前告诉你,梯度下降算法假如没有正常工作的话。例如你发现,随着迭代次数的增加J(θ)的值在变大,图像会逐渐上升,如下图第一个所示。当你遇到这种情况时,通常是因为你的学习速率α选择的太大,你需要将它调小。J(θ)变大的原因可能是,你需要去最小化如下图(右边第二个)所示的代价函数,你从右边的一点出发,但是由于你的学习速率α太大,一下子跑到了最低点的右边,然后下一次迭代又一下子跑到了最低点的左边,如此往复,J(θ)就会越来越大。学习速率过大是一个常见的问题。

      当然你也会遇到这样一种情况,随着迭代次数的增加,J(θ)一会上升,一会下降,通常也是因为学习速率α太大,你需要使用较小的学习速率。上图左下图。

      合适的学习速率α应该是每一次迭代过后,代价函数J(θ)都应该减小,但是学习速率α如果太小的话又会使梯度下降收敛的特别慢。

      总结如下图所示,

 

       学习速率的选择,可以尝试0.001、0.01、0.1、1。选择一个最大的学习速率,然后选择一个比它小一点点的学习率,通常能够找到最合适的学习速率来解决我们的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值