优化算法(梯度下降,Momentum,RMSprop,Adam)

本文详细介绍了优化算法中的梯度下降法,包括全量、随机和小批量梯度下降,以及动量梯度下降、RMSprop和Adam优化算法的工作原理和优缺点。通过对参数更新方式的改进,这些方法在机器学习和深度学习中提高了模型的训练效率和效果。
摘要由CSDN通过智能技术生成

梯度下降法

梯度下降法(gradient descent)是一种常用的一阶(first-order)优化方法,是求解无约束优化问题最简单、最经典的方法之一。
步骤如下:
1.求解每个待优化参数对目标函数的梯度。
∂ ∂ θ i J ( θ 0 , θ 1 … , θ n ) \frac{\partial}{\partial \theta_{i}} J\left(\theta_{0}, \theta_{1} \ldots, \theta_{n}\right) θiJ(θ0,θ1,θn)
2.利用学习率与梯度更新参数。
θ i = θ i − α ∂ ∂ θ i J ( θ 0 , θ 1 … , θ n ) \theta_{i}=\theta_{i}-\alpha \frac{\partial}{\partial \theta_{i}} J\left(\theta_{0}, \theta_{1} \ldots, \theta_{n}\right) θi=θiαθiJ(θ0,θ1,θn)
3.反复迭代1,2中的步骤,直至终止条件。

batch的选择

全量梯度下降法(Batch gradient descent)

全量梯度下降法每次学习都使用整个训练集,因此每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点,凸函数收敛于全局极值点,非凸函数可能会收敛于局部极值点,缺陷就是学习时间太长,消耗大量内存。

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

SGD一轮迭代只用一条随机选取的数据,尽管SGD的迭代次数比BGD大很多,但一次学习时间非常快。

SGD的缺点在于每次更新可能并不会按照正确的方向进行,参数更新具有高方差,从而导致损失函数剧烈波动。不过,如果目标函数有盆地区域,SGD会使优化的方向从当前的局部极小值点跳到另一个更好的局部极小值点,这样对于非凸函数,可能最终收敛于一个较好的局部极值点,甚至全局极值点。

小批量梯度下降法(Mini-Batch Gradient Descent)

SGD相比BGD收敛速度快,然而,它也的缺点,那就是收敛时浮动,不稳定,在最优解附近波动,难以判断是否已经收敛。这时折中的算法就是小批量梯度下降法。
如果Batch Size选择合理,不仅收敛速度比SGD更快、更稳定,而且在最优解附近的跳动也不会很大,甚至得到比Batch Gradient Descent 更好的解。这样就综合了SGD和Batch Gradient Descent 的优点,同时弱化了缺点。

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

梯度下降法的例子
由于梯度下降法本身是一个震荡逼近最小值的过程,为了减少不必要的震荡(如图中纵轴的震荡),加快学习效率(如图中水平方向的摆动),因此产生了动量梯度下降法:
当本次梯度下降方向与上次更新量的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。
当本次梯度下降方向与上次更新量的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。
数学表达式如下:
v d W = β v d W + ( 1 − β ) d W v d b = β v d b + ( 1 − β ) d b W = W − α v d W , b = b − α v d b \begin{array}{l} v_{d W}=\beta v_{d W}+(1-\beta) d W \\ v_{d b}=\beta v_{d b}+(1-\beta) d b \\ W=W-\alpha v_{d W}, b=b-\alpha v_{d b} \end{array} vdW=βvdW+(1β)dWvdb=βvdb+(1β)dbW=Wαv

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值