步长与学习率

转载自https://www.2cto.com/kf/201607/526447.html

本章总结优化学习率的知识,而前置知识就是“线性回归、梯度下降算法”,因此如果这一章你看的云里雾里甚至连学习率是什么都不知道的话就需要先吧前置知识搞定了。

其他说明

因为本总结的前置知识是“线性回归、梯度下降算法”,所以之后的内容都是以“求目标函数f(x)的极小值”为目的。

不过不用担心求极大值的话该怎么办,因为直接给f(x)加个负号就将问题转换为了求极小值问题了。

在顺便一提,个人感觉正因为研究了这么多求极小值的东西,于是大伙为了省事,就凡是遇到求极大值的问题则先将其转成求极小值,于是乎会经常看到这句话“习惯上我们将其转换成求极小值”....

什么是优化学习率

以梯度下降说明。

假设我将学习率固定为1时需要迭代10次才会收敛的话,那如果我将学习率改为第一次步长为8,第二次步长为2,则可能两次就收敛了。(这里的数字不太准确,但大概是这样的意思)

很明显,后者的收敛速度更快,而上面对学习率的调整就是优化学习率。

PS:就好像一个人下山,如果他以每步1M步伐下山可能要走10小时,那若他一开始以每步8M,然后等走了一半多了在每步2M的话,则到达山脚的时间会明显缩短。

话说,虽然在写这片文章时我还没入这一行,但我听到的都是些“工作时很多时候就拍脑门选一个学习率就好,若感觉收敛太慢就调大些”这样的内容,感觉没必要在这上面花费太多功夫。

不过个人感觉,如果能把这个知识掌握了,那工作起来会事半功倍。

怎么优化学习率

这个得一点点讲了。

既然我们的目标是优化学习率,那我们需要先转换下视角:你看啊,对于某个函数,如果我们的目标就是求函数中的参数x,那我们就将函数看成是关于x的函数。同理,既然这里的目标是函数中的学习率α,那我们就将函数看作是关于α的函数。又因为一般函数模型是:f(xk+αdk),其中dk是搜索方向(如对梯度下降来说,dk是负梯度方向),所以在转换视角后,我们将其看作是关于α的函数h(α),即:

h(α)= f(xk+αdk)

PS:一般学习率是大于0的,即α>0

既然已经是关于α的函数了,那对于梯度下降来说我们的目标就从“x为多少时函数的值最小 -- 注:样本xk是已知的,当前的搜索方向dk即梯度也可以求出来,只不过哪个xk会使函数最小不知道”,即:

arg_xmin f(xk+αdk)

变成了“在给定xk和dk的前提下,寻找α为多少时,能让函数下降的最快”,即:求对关于α的函数h(α)求“α = ? 时,函数h(α)最小”。

这就简单了,对h(α)求导并另导数为0呗,即:

h’(α)= ▽f(xk+αdk)Td

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值