当前位置:网站首页>深度学习的几种优化方法

深度学习的几种优化方法

2022-06-21 05:57:00 前行_的路上

开门见山,本篇博客涉及到的优化方法包括有:SGD,SGD with momentum,Adagrad,RMSProp,Adam这五种。

文中出现的一些符号的含义:

\theta_t:模型在t时刻的参数

\nabla\L(\theta_t) or g_t:在\theta_t处的梯度,用于计算\theta_{t+1}

m_{t+1}:从第0步累积到第t步的动量,用于计算\theta_{t+1}

先介绍最基础的两种优化方法:SGD和SGD with momentum

一、SGD

\theta_n = \theta_{n-1} - \eta\nabla\L(\theta_{n-1})        until \nabla\L(\theta_t)\approx 0

每一个时间步,\theta都要往梯度方向的反方向走一步

二、SGD with momentum

多了一个动量m,可以避免优化器落入鞍点,让优化器可以使loss函数落到更低点(最优点)

比SGD多了一个“动量”m,更新公式变为:

m_t = \lambda m_{t-1} - \eta \nabla L(\theta_{t-1})

\theta_t = \theta_{t-1}+m_t

 三、Adagrad

为了找到最低点,我们一般希望在梯度平缓的方向上,步子可以迈的大一点,在梯度陡峭的地方,步子就收着点

提出了自适应学习率,避免在loss曲线很崎岖的时候,优化器步子迈的太大,越过了最优点

\theta_t=\theta_{t-1}-\frac{\eta}{\sum _{i=0}^{t-1}(g_i)^2}g_{t-1}

 四、RMSProp

Adagrad这种思路非常直白,就是如果该参数之前的所有梯度都非常平缓,那么步子就会迈的比较大,反之亦然。但这个算法的问题是将之前的梯度值都默认为差不多,平缓的一直平缓,陡峭的一直陡峭。但实际上不是这样,针对这个问题,RMSProp增加了一个超参数\alpha,可以更稳定的反应梯度变化情况。

避免Adagrad这种方法在一开始梯度很大的时候就卡住

\theta=\theta_{t-1}-\frac{\eta}{\sqrt{v_t}}g_{t-1}

v_1=g_0^2

v_t=\alpha v_{t-1} + (1-\alpha)(g_{t-1})^2

五、Adam

Adam借鉴了Adagrad自适应学习率和动量梯度下降法的优点,使用动量和自适应学习率来加快收敛速度,既能适应稀疏梯度,又能缓解梯度震荡。

Adam == RMSProp+Mementum

\theta_t=\theta_{t-1}-\frac{\eta}{\sqrt{v_t}+\varepsilon }m_t

原网站

版权声明
本文为[前行_的路上]所创,转载请带上原文链接,感谢
https://blog.csdn.net/ZhaoLinke1998/article/details/125071855