建模之常见优化器(Keras)
发布日期:2022-02-14 23:02:57 浏览次数:19 分类:技术文章

本文共 3942 字,大约阅读时间需要 13 分钟。

g t = ∇ θ t − 1 f ( θ − 1 ) g_t = \nabla_{\theta_{t-1}} f(\theta - 1) gt=θt1f(θ1)

序号 优化函数 概述 表达式 场景 优点 缺点
1 SGD θ t + 1 = θ t − η × g t \theta_{t+1} = \theta_t - \eta \times g_t θt+1=θtη×gt 训练速度快 容易陷于局部最优解 keras.optimizers.SGD:可设置动量和nesterov参数
sgd
2 Adagrad(自适应学习率) 前期 g g g较小的时候, 正则项较大,能够放大梯度;
后期 g g g较大的时候,正则项较小,能够约束梯度
θ t + 1 = θ t − η ∑ i = 0 t ( g i 2 ) + ε × g t \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\sum_{i=0}^t(g_i^2)} + \varepsilon} \times g_t θt+1=θti=0t(gi2) +εη×gt 适用于数据稀疏或者分布不平衡的数据集中收敛速度快 自动调整学习率 1、对均匀样本适用性不强
2、累计 g 2 g^2 g2过大造成梯度趋向于0而停止训练
3、需要自己手动指定初始学习率
keras.optimizers.Adagrad
3 RMSprop(自适应学习率) 修改了AdaGrad的梯度积累为指数加权的移动平均,使得其在非凸设定下效果更好。避免了学习率越来越低的的问题,而且能自适应地调节学习率
RMSprop是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间
E [ g 2 ] t = 0.5 × E [ g 2 ] t − 1 + 0.5 × g t 2 E[g^2]_t = 0.5 \times E[g^2]_{t-1} + 0.5 \times g_t^2 E[g2]t=0.5×E[g2]t1+0.5×gt2
x t + 1 = x t − η E [ g 2 ] t + ε × g t x_{t+1} = x_t - \frac{\eta}{\sqrt{E[g^2]_t} + \varepsilon} \times g_t xt+1=xtE[g2]t +εη×gt
Adadelta的特殊情况: ρ = 0.5 \rho=0.5 ρ=0.5
深度神经网络优化.适合处理非平稳目标(RNN) 自动调整学习率 keras.optimizers.RMSprop
4 Adam(自适应学习率) RMSprop with momentum。结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点 E [ g 2 ] t = ρ × E [ g 2 ] t − 1 + ( 1 − ρ ) × g t 2 E[g^2]_t = \rho \times E[g^2]_{t-1} + (1 - \rho) \times g_t^2 E[g2]t=ρ×E[g2]t1+(1ρ)×gt2
动量: m t = μ × m t − 1 + ( 1 − μ ) × g t m_t =\mu \times m_{t-1} + (1 - \mu) \times g_t mt=μ×mt1+(1μ)×gt μ \mu μ默认值 0.9 0.9 0.9
E [ g 2 ] t ^ = E [ g 2 ] t 1 − ρ t \hat{E[g^2]_t} = \frac{E[g^2]_t}{1 - \rho^t} E[g2]t^=1ρtE[g2]t
m t ^ = m t 1 − μ 2 \hat{m_t}=\frac{m_t}{1 - \mu^2} mt^=1μ2mt
x t + 1 = x t − m t ^ E [ g 2 ] t ^ + ε x_{t+1} = x_t - \frac{\hat{m_t}}{\sqrt{\hat{E[g^2]_t}} + \varepsilon} xt+1=xtE[g2]t^ +εmt^
适用于大多非凸优化 - 适用于大数据集和高维空间 1、为不同的参数计算不同的自适应学习率;
2、对超参数的选择鲁棒行强
3、对内存需求较小
keras.optimizers.Adam
5 Adadelta(自适应学习率) Adadelta是对Adagrad的扩展,最初方案依然是对学习率进行自适应约束,但是进行了计算上的简化。 Adagrad会累加之前所有的梯度平方,而Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是近似计算对应的平均值 E [ g 2 ] t = ρ × E [ g 2 ] t − 1 + ( 1 − ρ ) × g t 2 E[g^2]_t = \rho \times E[g^2]_{t-1} + (1 - \rho) \times g_t^2 E[g2]t=ρ×E[g2]t1+(1ρ)×gt2
x t + 1 = x t − η E [ g 2 ] t + ε × g t = x t − 1 ∂ 2 f ∂ x 2 × g t x_{t+1} = x_t - \frac{\eta}{\sqrt{E[g^2]_t} + \varepsilon} \times g_t = x_t - \frac{1}{\frac{\partial^2{f}}{\partial{x^2}}} \times g_t xt+1=xtE[g2]t +εη×gt=xtx22f1×gt
结合RMSprop和Adagrad,不需要设置一个默认的全局学习率 中早期速度快,效果好。后期会在局部最小值附近抖动 keras.optimizers.Adadelta
6 Adamax(自适应学习率) 基于无穷范数的Adam的变体。 E [ g 2 ] t = max ( ρ × E [ g 2 ] t − 1 , ∣ g t ∣ ) E[g^2]_t = \text{max}(\rho \times E[g^2]_{t-1} , \mid g_t \mid) E[g2]t=max(ρ×E[g2]t1,gt)
动量: m t = μ × m t − 1 + ( 1 − μ ) × g t m_t =\mu \times m_{t-1} + (1 - \mu) \times g_t mt=μ×mt1+(1μ)×gt μ \mu μ默认值 0.9 0.9 0.9
x t + 1 = x t − m t ^ E [ g 2 ] t + ε x_{t+1} = x_t - \frac{\hat{m_t}}{E[g^2]_t + \varepsilon} xt+1=xtE[g2]t+εmt^
在带embedding的模型中,该优化算法优于Adam keras.optimizers.Adamax
7 Nadam(自适应学习率) Adam with Nesterov momentum g t ^ = g t 1 − ∏ i = 1 t μ i \hat{g_t} =\frac{g_t}{1 - \prod_{i=1}^{t}{\mu_i}} gt^=1i=1tμigt
E [ g 2 ] t = ρ × E [ g 2 ] t − 1 + ( 1 − ρ ) × g t 2 E[g^2]_t = \rho \times E[g^2]_{t-1} + (1 - \rho) \times g_t^2 E[g2]t=ρ×E[g2]t1+(1ρ)×gt2
动量: m t = μ × m t − 1 + ( 1 − μ ) × g t m_t =\mu \times m_{t-1} + (1 - \mu) \times g_t mt=μ×mt1+(1μ)×gt
E [ g 2 ] t ^ = E [ g 2 ] t 1 − ρ t × m t ˉ = ( 1 − μ t ) × g t ^ + μ t + 1 × m t ^ \hat{E[g^2]_t} = \frac{E[g^2]_t}{1 - \rho^t} \times \bar{m_t} =(1 - \mu_t) \times \hat{g_t} + \mu_{t+1} \times \hat{m_t} E[g2]t^=1ρtE[g2]t×mtˉ=(1μt)×gt^+μt+1×mt^
m t ^ = m t 1 − ∏ i = 1 t + 1 μ i \hat{m_t}=\frac{m_t}{1 - \prod_{i=1}^{t+1}{\mu_i}} mt^=1i=1t+1μimt
x t + 1 = x t − η × m t ˉ E [ g 2 ] t ^ + ε x_{t+1} = x_t - \frac{\eta \times \bar{m_t}}{\sqrt{\hat{E[g^2]_t}} + \varepsilon} xt+1=xtE[g2]t^ +εη×mtˉ
自动调整学习率 keras.optimizers.Nadam
8 Ftrl(自适应学习率) 同时支持在线L2和收缩类型L2 keras.optimizers.Ftrl
  • Online Learnin
      • FOBOS
      • RDA
      • FTRL
    • 在线Bayesian
      • 基于内容的在线矩阵分解算法

转载地址:https://blog.csdn.net/fish2009122/article/details/108087465 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Jax, Numpy & Scipy
下一篇:SQL窗口分析函数

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月25日 19时54分34秒