优化算法总结

1-1.批量梯度下降(Batch gradient descent) - 训练集较小

对整个训练集执行梯度下降法,然后才能进行一步梯度下降法。即一次遍历训练集只做一个梯度下降。

优点:

对于凸目标函数,可以保证全局最优; 对于非凸目标函数,可以保证一个局部最优。

缺点:

速度慢;数据量大时不可行;计算机内存问题

 

1-2.随机梯度下降(SGD) -训练集较大

计算某个样本的梯度,即针对某一个训练样本及其更新参数

 

优点:

 

更新频次快,优化速度更快; 一定的随机性导致有几率跳出局部最优(随机性来自于用一个样本的梯度去代替整体样本的梯度)

 

缺点:

 

随机性可能导致收敛复杂化,即使到达最优点仍然会进行过度优化,因此SGD得优化过程相比BGD充满动荡

 

 

1-3.Mini-batch 梯度下降(Mini-batch gradient descent)

一个训练集分为多个batch,每次训练传入一个batch,每个batch进行一次梯度下降。 是训练神经网络最常用的优化方法。

 

优点:

参数更新时的动荡变小,收敛过程更稳定,降低收敛难度。

带有噪声的梯度估计, 哪怕我们位于梯度为0的点,也经常在某个mini-batch下的估计把它估计偏了,导致往前或者往后挪了一步摔下马鞍,也就是mini-batch的梯度下降法使得模型很容易逃离特征空间中的鞍点

 

 

 

 

总结:

理论上只有严格的凸函数才可以通过梯度下降获得全局最优解。 但是,神经网络所面临的基本上都是严重非凸的目标函数,这也意味着优化容易陷入局部最优。  事实上,我们的困难往往来自 “鞍点” 而非局部极小点, 鞍点周围通常拥有相同的损失函数值,这导致SGD很难发挥作用,因为每个方向的梯度都接近于0.

 

 

 

 

 

2-1.动量梯度下降法(Gradient descent with Momentum)

动量的引入是为了加速SGD的优化过程

分析上式就会明白动量的作用原理:利用惯性,即当前梯度与上次梯度进行加权,如果方向一致,则累加导致更新步长变大;如果方向不同,则相互抵消中和导致更新趋向平衡。

动量 γ 常被设定为0.9或者一个相近的值。

 

 

 

2-2.Adam 优化算法(Adam optimization algorithm)

Adam算法结合了MomentumRMSprop梯度下降法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值