首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >神经网络优化算法总结优化算法框架优化算法参考

神经网络优化算法总结优化算法框架优化算法参考

作者头像
月见樽
发布于 2018-04-27 11:36:52
发布于 2018-04-27 11:36:52
1.5K0
举报

优化算法框架

优化算法的框架如下所示: $$ w_{t+1} = w_t - \eta_t \ \eta_t = \cfrac{\alpha}{\sqrt{V_t}} \cdot m_t $$ 其中,$w_i$为i时刻的权值,$\eta_i$为i时刻的优化量;$\alpha$为学习率,$m_t$为一阶动量,$V_t$为二阶动量。一阶动量和二阶动量都与梯度有关,如下所示: $$ m_t = M_1(g_1,g_2,...,g_t) \ V_t = M_2(g_1,g_2,...,g_t) \ g_t = \nabla f(w_t) $$ 一阶动量和二阶动量均是历史梯度和当前梯度的函数

优化算法

固定学习率优化算法

学习率固定的优化算法均有一个特点:不考虑二阶动量(即$M_2(g_i) = I$)

随机梯度下降(SGD)

随机梯度下降时最简单的优化算法,有:$m_t = g_t,V_t = I$,带入公式有优化公式为:$\eta_t = \alpha \cdot g_t$

带动量的随机梯度下降(SGD with Momentum)

随机梯度下降加上动量项,即考虑梯度累积,有: $$ g_t = \nabla f(w_t) \ m_t = \beta \cdot m_{t-1} + (1-\beta)\cdot g_t \ \eta_t = \alpha \cdot m_t $$

SGD with Nesterov Acceleration

在计算梯度的时候向前考虑一步,即计算梯度的时候,计算再沿着上一次更新方向更新一次的权值的梯度,有: $$ g_t = \nabla f(w_t + \alpha \cdot m_{t-1}) \ m_t = \beta \cdot m_{t-1} + (1-\beta)\cdot g_t \ \eta_t = \alpha \cdot m_t $$

自适应学习率优化算法

自适应学习率的优化算法考虑二阶动量,一般来说,一阶动量决定优化方向,二阶动量自适应学习率

AdaGrad

二阶动量取梯度平方和:$V_t = \sum\limits^t_{i=1} g^2_i$,此时,$\eta_t = \cfrac{\alpha}{\sqrt{V_t}} \cdot m_t$,可以将$\cfrac{\alpha}{\sqrt{V_t}}$视为自适应的学习率:梯度不断累积,学习率单调下降。且梯度累积越快,学习率下降越快。

AdaDelta/RMSProp

二阶动量取梯度在一定范围内的平方和: $$ V_1 = g^2_1 \ V_t = \beta \cdot V_{t-1} + (1-\beta) \cdot g_t^2 $$

Adam

Adam综合使用了一阶动量项和二阶动量项,即: $$ g_t = \nabla f(w_t) \ m_1 = g_1,V_1 = g_1^2 \ m_t = \beta_1 \cdot m_{t-1} + (1-\beta_1)\cdot g_t \ V_t = \beta_2 \cdot V_{t-1} + (1-\beta_2) \cdot g_t^2 $$

Nadam

Nadam为使用了Nesterov和Adam的结合,有: $$ g_t = \nabla f(w_t + \cfrac{\alpha}{\sqrt{V_{t-1}}} \cdot m_{t-1}) \ m_1 = g_1,V_1 = g_1^2 \ m_t = \beta_1 \cdot m_{t-1} + (1-\beta_1)\cdot g_t \ V_t = \beta_2 \cdot V_{t-1} + (1-\beta_2) \cdot g_t^2 $$

混合方法:Adam+SGD

很多论文指出Adam虽然收敛较快,但效果不如SGD,因此,《Improving Generalization Performance by Switching from Adam to SGD》提出了一种算法,前期使用Adam算法,后期使用SGD,如下图所示:

参考

内容参考自机器学习炼丹记:Adam那么棒,为什么还对SGD念念不忘

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.04.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 优化算法框架
  • 优化算法
    • 固定学习率优化算法
      • 随机梯度下降(SGD)
      • 带动量的随机梯度下降(SGD with Momentum)
      • SGD with Nesterov Acceleration
    • 自适应学习率优化算法
      • AdaGrad
      • AdaDelta/RMSProp
      • Adam
      • Nadam
    • 混合方法:Adam+SGD
  • 参考
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档