机器学习之优化算法总结

在训练模型的过程中,我们通常需要代价函数(即cost function,为loss function的累加求和)最小,这时候我们需要用到优化算法来进一步找到代价函数的全局最优点,即找到模型的最佳参数。

1、Batch Gadient Descent(批量梯度下降法):

      在每次迭代中,需要用到所有的训练样本。即某一参数每次迭代求出代价函数关于此参数的偏导,乘以学习速率\alpha,用以更新参数。如果有多个参数,则需要同时更新。

注意事项:

(1)\alpha影响较大:当\alpha过小时,梯度下降比较缓慢,时间较长;当\alpha过大时,在梯度下降的过程中,可能会越过最小值,导致函数不收敛或者发散,也可能因此使得收敛缓慢。

(2)应当应用于凸函数(凸函数没有局部最优解),否则,易收敛至局部最优解。

(3)由于每次迭代用的是所有训练样本,因此会占据较大的内存,另外,此算法仅支持离线计算,不支持在线计算。

2、Mini-Batch Gradient Descent(微型批量梯度下降法):

      在每次的迭代中,使用部分训练样本。

      当size=m(训练样本全体)时,为批量梯度下降法;当size=1时,为随机梯度下降法。一般而言,当m<2000时,选择用批量梯度下降法,否则,选用微型批量梯度下降法,且总是把size设为64、128、256、512等,为了与CPU/GPU的内存匹配,增加计算速度,便于并行计算。

注意事项:

(1)可加快运行速度:当size=10时,仅需要前10个样本就可以运行算法,然后通过后续的10个样本来更新参数,以此类推,而不是等我们遍历完所有的样本后才能执行算法来更新参数 。且可以进行并行化处理(采用向量的方式)。

3、Stochastic Gradient Descent(随机梯度下降法):

      每次迭代选用一个训练样本。若每次迭代考虑全部样本,则不适合大规模数据,且耗费时间较长,因此考虑使用SGD。

注意事项:

(1)不仅支持离线计算,也可支持在线计算。

(2)有助于跳出局部最优点,找到真正的全局最优点,打乱了数据,可以使算法更快收敛。但也可能困在局部最优点或鞍点。

(3)但在直观上,看起来是以某个比较随机而迂回的路径朝着全局最小值逼近,且在最小值点附近动荡。因此,一个改善的方法可以是:使\alpha随着时间的推移而降低,如\alpha=常数C/(迭代次数+常数D)

4、Momentum:

      可消除梯度下降中的摆动。

      首先了解下指数平滑法(指数加权移动平均),可理解为当前取值受到历史取值与当前值的两方面影响,也可形象地理解为物理中的惯性,会一定程度保持原来的运动状态。

      Momentum的思想与此类似,当前梯度是历史梯度和当前偏导的线性组合,其中会多一个参数\beta,即历史梯度的权重。通常取0.9。由于这一方法考虑到了历史方向,所以具有一定的稳定性,且一定程度上避免陷入局部最优。

5、RMSprop(root mean square prop:加速梯度下降):

      会在迭代的过程中,将迭代变化多除以一个变量,(emmm公式编辑麻烦我就省略啦),为保持稳定,在分母上引入变量\varepsilon,通常为10*(-8),这个方法也是为了消除梯度下降中的摆动。

6、Adam optimization algorithm(Adaptive moment estimation):

      Adam这个方法结合了momentum和RMSprop,公式省略,目的是为了参数变化较为平稳,稳定地寻找到全局最优点。

7、Adagard:

     可以自动地对learning rate进行调节,斜率越大,则迭代变化应该越快,但Adagard强调的是反差的效果,变化的大小是与之前的梯度相比较而言的,并不是独立拎出来看的。

    每次迭代最好的step是,与一次微分成正比,与二次微分成反比,(即当前点与最优值之间的距离的倍数),即约等于我们Adagard中每次迭代大小的公式。在Adagard中,为了计算速率的提高,用一阶微分来代替二阶微分。

此外,学习速率衰减(learning rate decay)的方法还有很多,采用不同的公式,比如指数率下降、离散下降等等。

推荐阅读:

https://blog.csdn.net/u010089444/article/details/76725843

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值