参数优化器

发布时间:2024年01月13日

前置知识:机器学习概念,线性回归,梯度下降

待优化参数w,损失函数loss,学习率lr,每次迭代一个batch

  1. 计算t时刻损失函数关于当前参数的梯度:

    g_t=\frac{\partial loss}{\partial w}

  2. 计算t时刻一阶动量mt和二阶动量Vt

  3. 计算t时刻下降梯度:

    \eta_t=lr\cdot \frac {m_t}{\sqrt{V_t}}

  4. 计算t+1时刻的参数:

    w_{t+1}=w_t-\eta_t

一阶梯度:与梯度相关的函数

二阶动量:与梯度平方相关的函数

SGD(无momentum)

???????m_t=g_t \\V_t=1 \\\eta_t=lr\cdot \frac {m_t}{\sqrt{V_t}}=lr\cdot g_t \\w_{t+1}=w_t-\eta_t=w_t-lr\cdot g_t

SGDM(含momentum的SGD)

在SGD的基础上增加了一阶动量

m_t=\beta\cdot m_{t-1}+(1-\beta)g_t \\V_t=1 \\\eta_t=lr\cdot \frac{m_t}{\sqrt {V_t}} =lr\cdot(\beta\cdot m_{t-1}+(1-\beta)g_t) \\w_{t+1}=w_t-\eta_t=w_t-lr\cdot(\beta\cdot m_{t-1}+(1-\beta)g_t)

mt这个公式表示各时刻梯度方向的指数滑动平均值

超参数β接近1

Adagrad

在SGD的基础上增加二阶动量

m_t=g_t \\V_t=\sum^t_{i=1}g^2_i \\\eta_t=lr\cdot \frac{m_t}{\sqrt {V_t}}=lr\cdot \frac{g_t}{\sqrt {\sum^t_{i=1}g^2_i}} \\w_{t+1}=w_t-\eta_t=w_t-lr\cdot \frac{g_t}{\sqrt {\sum^t_{i=1}g^2_i}}

一阶动量mt是当前的梯度

二阶动量Vt是从开始到t时刻梯度平方的累计和

RMSPro

在SGD的基础上增加二阶动量

m_t=g_t \\V_t=\beta\cdot V_{t-1}+(1-\beta)g_t^2 \\\eta_t=lr\cdot \frac{m_t}{\sqrt {V_t}}=lr\cdot \frac{g_t}{\sqrt {\beta\cdot V_{t-1}+(1-\beta)g_t^2}} \\w_{t+1}=w_t-\eta_t=w_t-lr\cdot \frac{g_t}{\sqrt {\beta\cdot V_{t-1}+(1-\beta)g_t^2}}

Adam

同时引入了SGDM的一阶动量和RMSPro的二阶动量

m_t=\beta_1\cdot m_{t-1}+(1-\beta_1)g_t \\V_t=\beta_2\cdot V_{t-1}+(1-\beta_2)g_t^2

修正一阶动量的偏差:

\hat {m_t}=\frac{m_t}{1-\beta_1^t}

修正二阶动量的偏差:

???????\hat {V_t}=\frac{V_t}{1-\beta_2^t}

得到:

\\\eta_t=lr\cdot \frac{\hat m_t}{\sqrt {\hat V_t}} =lr\cdot {\frac{m_t}{1-\beta_1^t}}/{\sqrt {\frac{V_t}{1-\beta_2^t}}} \\w_{t+1}=w_t-\eta_t=w_t-lr\cdot {\frac{m_t}{1-\beta_1^t}}/{\sqrt {\frac{V_t}{1-\beta_2^t}}}

文章来源:https://blog.csdn.net/lty1392309506/article/details/135569551
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。