机器学习中的优化算法
$$w_{t+1} = w_t - \alpha \cdot m_t \odot V_t^{-1/2}$$
这里的 -1/2 是逐元素求平方根倒数
算法名 | 一阶动量 $m_t$ | 二阶动量 $V_t$ | 改进点 | 缺点 |
---|---|---|---|---|
SGD | $g_t = \triangledown f(w_t)$ | 1 | 震荡 | |
SGD-M | $EMA(g_t, \beta_1)$ | 1 | 引入惯性,抑制震荡 | 陷入局部最优解 |
SGD-NAG | $\triangledown f(w_t - \alpha \cdot EMA(g_{t_1}, \beta_1))$ | 1 | 靠惯性多走一步,跳出局部最优 | 各参数的学习率相同 |
AdaGrad | $g_t$ | $\sum\limits_{s=1}^{t} g_s \odot g_s$ | 累积了较多更新经验的参数受单个样本影响小,较少的则大 | 学习率单调递减至 0 |
RMSProp | $g_t$ | $EMA(g_t \odot g_t, \beta_2)$(避免为 0 通常加个小量,下同) | 避免二阶动量积累导致训练提前结束 | 二阶动量震荡,模型可能不收敛 |
AdaDelta | $g_t$ | $\frac{EMA(g_t \odot g_t, \beta_2)}{EMA(\Delta w_{t-1} \odot \Delta w_{t-1}, \beta_3)}$ | 不失增量的单位,物理上好解释 | |
AdaM | $EMA(g_t, \beta_1)$ | $EMA(g_t \odot g_t, \beta_2)$ | 早期样本影响大,后期学习率太低,结果往往次优 | |
NAdaM | $\triangledown f(w_t - \alpha \cdot EMA(g_{t_1}, \beta_1))$ | $EMA(g_t \odot g_t, \beta_2)$ | ||
$\max(EMA(g_t \odot g_t, \beta_2), V_{t-1})$ | 使学习率单调递减,保证模型收敛 | |||
前期用 AdaM,快;后期切 SGD,准 |
- $EMA(x_t, \beta) = \beta \cdot EMA(x_{t-1}, \beta) + (1 - \beta) \cdot x_t$
- 经验值:$\beta_1 = 0.9, \beta_2 = 0.999$
Page Not Found
Try to search through the entire repo.