深度学习基础——神经网络优化算法

金歌  论坛元老 | 2025-5-20 23:12:23 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1915|帖子 1915|积分 5745

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.1梯度降落法

梯度降落法:函数沿梯度方向有最大的变革率,优化目标丧失函数时,根据负梯度方向举行。
                                                    θ                                           t                                  +                                  1                                                 =                                       θ                               t                                      −                            η                            ⋅                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                  \theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta L(\theta_t)                     θt+1​=θt​−η⋅∇θ​L(θt​)
此中:
                                    η                              \eta                  η为学习率,即每次更新的步长。
                                              ∇                            θ                                       \nabla_\theta                  ∇θ​为梯度。
1.2改进的梯度降落法

以下是神经网络梯度降落法中几种经典改进方法的讲解,包括核心头脑、公式及适用场景:

1. Momentum(动量法)

核心头脑:模拟物理中的动量,在参数更新时引入汗青梯度方向的加权均匀,加速收敛并淘汰震荡。
公式
                                                    v                               t                                      =                            β                                       v                                           t                                  −                                  1                                                 +                            (                            1                            −                            β                            )                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                                θ                                           t                                  +                                  1                                                 =                                       θ                               t                                      −                            η                            ⋅                                       v                               t                                            v_{t} = \beta v_{t-1} + (1-\beta) \nabla_\theta L(\theta_t) \\ \theta_{t+1} = \theta_t - \eta \cdot v_t                     vt​=βvt−1​+(1−β)∇θ​L(θt​)θt+1​=θt​−η⋅vt​


  • 特点

    •                                                   β                                          \beta                           β 为动量系数(通常取0.9),控制汗青梯度的权重。
    • 在梯度方向一致时加速更新,梯度方向变革时淘汰震荡。

  • 适用场景:丧失函数存在局部最小值或鞍点时效果显著。

2. AdaGrad(自顺应梯度)

核心头脑:为每个参数自顺应调解学习率,汗青梯度平方的累积值越大,学习率越小。
公式
                                                    G                               t                                      =                                       G                                           t                                  −                                  1                                                 +                            (                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                       )                               2                                                          θ                                           t                                  +                                  1                                                 =                                       θ                               t                                      −                                       η                                                                      G                                        t                                                  +                                     ϵ                                                             ⋅                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                  G_t = G_{t-1} + (\nabla_\theta L(\theta_t))^2 \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot \nabla_\theta L(\theta_t)                     Gt​=Gt−1​+(∇θ​L(θt​))2θt+1​=θt​−Gt​+ϵ                    ​η​⋅∇θ​L(θt​)


  • 特点

    • 学习率随训练逐步衰减,适合希罕数据(如自然语言处理)。
    • 缺点:累积梯度平方大概导致学习率过早趋近于零。

  • 适用场景:特性希罕或需要自顺应调解学习率的任务。

3. RMSProp(均方根流传)

核心头脑:改进AdaGrad的累积方式,引入指数衰减均匀,制止学习率过早降落。
公式
                                                    E                               t                                      =                            β                                       E                                           t                                  −                                  1                                                 +                            (                            1                            −                            β                            )                            (                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                       )                               2                                                          θ                                           t                                  +                                  1                                                 =                                       θ                               t                                      −                                       η                                                                      E                                        t                                                  +                                     ϵ                                                             ⋅                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                  E_t = \beta E_{t-1} + (1-\beta)(\nabla_\theta L(\theta_t))^2 \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E_t + \epsilon}} \cdot \nabla_\theta L(\theta_t)                     Et​=βEt−1​+(1−β)(∇θ​L(θt​))2θt+1​=θt​−Et​+ϵ                    ​η​⋅∇θ​L(θt​)


  • 特点

    • 通过衰减系数                                                   β                                          \beta                           β(通常取0.9)控制汗青梯度的影响。
    • 办理了AdaGrad学习率单调降落的问题。

  • 适用场景:非安稳目标函数或需要动态调解学习率的场景。

4. Adam(自顺应矩估计)

核心头脑:结合Momentum和RMSProp,利用梯度的一阶矩(均值)和二阶矩(方差)举行自顺应调解。
公式
                                                    m                               t                                      =                                       β                               1                                                 m                                           t                                  −                                  1                                                 +                            (                            1                            −                                       β                               1                                      )                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                     (                            一阶矩                            )                                                v                               t                                      =                                       β                               2                                                 v                                           t                                  −                                  1                                                 +                            (                            1                            −                                       β                               2                                      )                            (                                       ∇                               θ                                      L                            (                                       θ                               t                                      )                                       )                               2                                               (                            二阶矩                            )                                                            m                                  ^                                          t                                      =                                                   m                                  t                                                      1                                  −                                               β                                     1                                     t                                                             ,                                                            v                                  ^                                          t                                      =                                                   v                                  t                                                      1                                  −                                               β                                     2                                     t                                                                      (                            偏差修正                            )                                                θ                                           t                                  +                                  1                                                 =                                       θ                               t                                      −                                       η                                                                                     v                                           ^                                                      t                                                           +                                  ϵ                                                 ⋅                                                   m                                  ^                                          t                                            m_t = \beta_1 m_{t-1} + (1-\beta_1)\nabla_\theta L(\theta_t) \quad (\text{一阶矩}) \\ v_t = \beta_2 v_{t-1} + (1-\beta_2)(\nabla_\theta L(\theta_t))^2 \quad (\text{二阶矩}) \\ \hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t} \quad (\text{偏差修正}) \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \cdot \hat{m}_t                     mt​=β1​mt−1​+(1−β1​)∇θ​L(θt​)(一阶矩)vt​=β2​vt−1​+(1−β2​)(∇θ​L(θt​))2(二阶矩)m^t​=1−β1t​mt​​,v^t​=1−β2t​vt​​(偏差修正)θt+1​=θt​−v^t​                    ​+ϵη​⋅m^t​


  • 特点

    • 超参数                                                                β                                     1                                                      \beta_1                           β1​(通常0.9)和                                                                β                                     2                                                      \beta_2                           β2​(通常0.999)分别控制一阶和二阶矩的衰减。
    •                                                   ϵ                                          \epsilon                           ϵ为一个很小的常数。
    • 偏差修正(Bias Correction)制止初始阶段估计偏差。
    • 综合了动量加速和自顺应学习率的优点。

  • 适用场景:通用性强,尤其适合大数据集和复杂模子(如深度学习)。

总结与对比

方法核心改进点优点缺点Momentum引入动量加速收敛淘汰震荡,加速平展地区收敛对噪声敏感,需调参(\beta)AdaGrad自顺应学习率(汗青梯度平方)适合希罕数据学习率过早降落,需手动设置(\epsilon)RMSProp指数衰减的梯度平方累积办理AdaGrad学习率降落过快问题超参数(\beta)需调节Adam一阶矩+二阶矩自顺应收敛快,顺应性强,通用性好内存占用略高,超参数较多
现实应用发起



  • 默认选择:优先尝试Adam,因其在大多数任务中表现稳定。
  • 特殊场景:希罕数据可尝试AdaGrad或RMSProp;简单模子可用Momentum。
  • 框架实现
    1. # PyTorch示例
    2. optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
    3. optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
    复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表