前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Optimization Algorithms

Optimization Algorithms

作者头像
小飞侠xp
发布2018-08-29 15:05:47
4680
发布2018-08-29 15:05:47
举报

机器学习应用是一个高度依赖经验并伴随着大量迭代的过程——这一句话不得不同意,经验更重要,深有体会。你需要训练诸多模型才能找到合适的那一个。深度学习没有在大数据领域发挥最大的效果,我们可以利用一个巨大的数据集来训练神经网络,而在巨大的数据集基础上训练速度很慢,因此你会发现使用快速的优化算法、使用好用的优化算法能大大提高你和团队的效率

Mini batch & gradient descent

向量化能让你有效对所有m个例子进行计算,允许你处理整个训练集而无需某个明确的公式,把训练集放到一个巨大矩阵X当中去,当m很大的时候,500万甚至5000万的时候,在对整个训练集执行梯度下降法时,必须处理整个训练集,然后才能进行一步梯度下降,然后你需要再重新处理500万个样本,才能进行下一步梯度下降法 。处理速度就会很慢。所以,你在处理完500万个样本训练之前。先让梯度下降法处理处理一部分,你的算法速度会更快。 把训练集分割为小一点的子集训练,这些子集被取名为Mini-batch,假设每个子集中只有1000个样本,那么把其中的x(1)到x(1000)取出来,称为第一个子训练集,然后再取接下来的1000个。

使用mini-batch梯度下降法,如果你作出成本函数在整个过程中的图,则并不是每次迭代都是下降的,走向朝下,但有更多的噪声,没有每次都下降不要紧,但是走势应该是向下的 。噪声产生的原因在于:也许 X{1}, Y{1} 是比较容易计算的mini-batch,因此cost会低一些,不过也许处于偶然。X{2} , Y{2}是比较难运算的mini-batch,cost会高一些,所以才会出现这些摆动。

你需要决定的变量之一是mini-batch的大小,m就是训练集的大小,极端情况下,如果mini-batch的大小等于m,其实就是batch梯度下降法,在这种极端情况下,你就有了mini-batch X{1} , Y{1},并且该mini-batch等于整个训练集,所以把mini-batch大小设为m可以得到batch梯度下降法。 另一个极端情况,假设mini-batch大小为1,就有了新的算法,叫做随机梯度下降法,每个样本都是独立的mini-batch,当你看第一个mini-batch,也就是X{1}和Y{1},如果mini-batch大小为1,它就是你的第一个训练样本。接着再看第二个mini-batch,也就是第二个训练样本,采取梯度下降步骤,然后是第三个训练样本,以此类推,一次只处理一个。 看在两种极端下成本函数的优化情况,如果这是你想要最小化的成本函数的轮廓,最小值在那里,batch梯度下降法从某处开始,相对噪声低些,幅度也大一些,你可以继续找最小值。

相反,在随机梯度下降法中,从某一点开始,我们重新选取一个起始点,每次迭代,你只对一个样本进行梯度下降,大部分时候你向着全局最小值靠近,有时候你会远离最小值,因为那个样本恰好给你指的方向不 对,因此随机梯度下降法是有很多噪声的,平均来看,它最终会靠近最小值,不过有时候也会方向错误,因为随机梯度下降法永远不会收敛,而是会一 直在最小值附近波动,但它并不会在达到最小值并停留在此。

实际上你选择的mini-batch大小在二者之间,大小在1和m之间。 相反,如果使用随机梯度下降法,如果你只要处理一个样本,那这个方法很好,这样做没有问题,通过减小学习率,噪声会被改善或有所减小,但随机梯度下降法的一大缺点是,会失去所有向量化带给你的加速,因为一次性只处理了一个训练样本,这样效率过于低下,所以实践中最好选择不大不小的mini-batch尺寸,实际上学习率达到最快。你会发现两个好处,一方面,你得到了大量向量化,如果mini-batch大小为1000个样本,你就可以对1000个样本向量化,比你一次性处理多个样本快得多。另一方面,你不需要等待整个训练集被处理完就可以开始进行后续工作,每次训练集允许我们采取5000个梯度下降步骤,所以实际上一些位于中间的mini-batch大小效果最好。

怎么选取mini-batch的大小,实际是有指导原则

  • 训练集比较小 直接使用batch梯度下降法,样本集较小就没必要使用mini-batch梯度下降法,你可以快速处理整个训练集,所以使用batch梯度下降法也很好,这里的少是说小于2000个样本。
  • 样本比较大 一般的mini-batch大小为64到512,考虑到电脑内存设置和使用的方式,如果mini-batch大小是2n次方,代码会运行地快一些,64就是2的6次方,以此类推,128是2的7次方,256是2的8次方,512是2的9次方。所以我经常把mini-batch大小设成2的次方。

Exponentially weighted averages(指数加权平均 )

Gradient descent with momentum(动量梯度下降法 )

RMSprop

Adam

Learning rate decay

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mini batch & gradient descent
  • Exponentially weighted averages(指数加权平均 )
  • Gradient descent with momentum(动量梯度下降法 )
  • RMSprop
  • Adam
  • Learning rate decay
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档