深度学习优化器Optimizer公式简记

推荐学习资料:

[1] 从 SGD 到 Adam —— 深度学习优化算法概览(一)
[2] 深度学习——优化器算法Optimizer详解
[3] 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
[4] 什么是指数加权平均、偏差修正?

这里仅记录公式,方便对比记忆,而不解释由来,其他细节可以看上面说的资料。

设:

  • 参数向量为 θ \theta
  • 学习率为 η \eta
  • 用于数值稳定的接近0的常数 ϵ \epsilon
  • 用于计算指数平均的接近1的常数 γ \gamma β 1 \beta_1 β 2 \beta_2
  • t t 时刻损失函数对 θ \theta 的梯度 g t = θ J ( θ ) g_t=\nabla_\theta J(\theta)
  • t t 时刻的一阶动量 m t m_t ,根据 { g 1 , g 2 , , g t } \{g_1,g_2,\cdots,g_t\} 算出
  • t t 时刻的二阶动量 v t v_t ,根据 { g 1 2 , g 2 2 , , g t 2 } \{g_1^2,g_2^2,\cdots,g_t^2\} 算出,其中 g t 2 = g t g t g_t^2=g_t \odot g_t

梯度更新公式为:

θ t + 1 = θ t G t (1) \theta_{t+1}=\theta_t-G_t \tag1

各优化算法对 G t G_t 的计算不同。

对于 SGD

G t = η g t (2) G_t=\eta g_t \tag2

对于 SGD with Momentum

G t = γ G t 1 + η g t (3) G_t=\gamma G_{t-1}+\eta g_t \tag3

对于 Adagrad

v t = i = 1 t g i 2 (4) v_t=\sum_{i=1}^{t}g_i^2 \tag4

G t = η v t + ϵ g t (5) G_t=\frac{\eta}{\sqrt{v_t+\epsilon}}g_t \tag5

对于 RMSprop
v t = γ v t 1 + ( 1 γ ) g t 2 (6) v_t=\gamma v_{t-1}+(1-\gamma)g_t^2 \tag6

G t = η v t + ϵ g t (7) G_t=\frac{\eta}{\sqrt{v_t+\epsilon}}g_t \tag7

对于 Adam

m t = β 1 m t 1 + ( 1 β 1 ) g t (8) m_t=\beta_1m_{t-1}+(1-\beta_1)g_t \tag8

v t = β 2 v t 1 + ( 1 β 2 ) g t 2 (9) v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2 \tag9

m ^ t = m t 1 β 1 t (10) \hat m_t=\frac{m_t}{1-\beta_1^t} \tag{10}

v ^ t = v t 1 β 2 t (11) \hat v_t=\frac{v_t}{1-\beta_2^t} \tag{11}

G t = η v ^ t + ϵ m ^ t (12) G_t=\frac{\eta}{\sqrt{\hat v_t+\epsilon}}\hat m_t \tag{12}

发布了67 篇原创文章 · 获赞 27 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/xpy870663266/article/details/104794371