📋 Research Summary

优化器(Optimizer)是深度学习中实现梯度下降的具体算法,负责根据梯度更新模型参数。常见的优化器包括SGD(基础梯度下降)、Momentum(添加动量加速)、Adam(自适应学习率+动量)等。Adam是当前最常用的优化器,结合了动量和自适应学习率的优点。


🌱 逻辑原点

如果梯度下降是"沿着下坡方向走",那如何让这条路走得更稳、更快、少摔跟头?

答案是:不仅仅是按照当前的坡度走,还要考虑惯性(动量)地形特征(自适应学习率)。优化器就是让梯度下降变得更聪明的算法。
在这里插入图片描述


🧠 苏格拉底式对话

1️⃣ 现状:最基础的优化器是什么?

如果我们只用最简单的梯度下降(SGD),会遇到什么问题?

问题是:震荡、收敛慢、容易被局部最优困住

  • 在狭窄的山谷中,梯度方向会左右摇摆
  • 每一步都在"之"字形震荡
  • 遇到平坦区域或局部最优时,梯度很小,移动很慢

SGD就像一个没有惯性的徒步者,每一步只看当前的方向,不会"滑行"。

2️⃣ 瓶颈:当地形复杂时,简单SGD会怎样?

如果遇到山谷、鞍点、局部最优等复杂地形,SGD会怎样?

答案是:训练不稳定,可能被困住

  • 在局部最优附近,梯度接近于零,SGD停止移动
  • 在鞍点附近,梯度方向不确定,震荡严重
  • 在平坦区域,移动太慢

SGD在复杂地形上表现不佳。

3️⃣ 突破:如何让优化更智能?

答案:引入动量自适应学习率

优化器的进化:

1. SGD:基础梯度下降
   θ = θ - η × ∇L

2. Momentum:加入惯性
   v = γv + η × ∇L
   θ = θ - v
   (像滚雪球一样积累动量)

3. Adagrad:对不同参数自适应学习率
   (对稀疏特征友好)

4. RMSprop:指数衰减的平方梯度
   (对非平稳目标友好)

5. Adam:动量 + 自适应学习率
   (结合两者优点,目前最常用)

📊 视觉骨架

梯度
Gradient

优化器
Optimizer

SGD
基础下降

Momentum
添加动量

Adam
动量+自适应

方向不稳定

惯性加速

稳定快速

优化器对比:SGD基础但不稳定,Momentum有惯性加速,Adam结合两者优点最常用


⚖️ 权衡模型

公式:

优化器 = 解决了 训练效率问题 + 牺牲了 计算资源 + 增加了 内存占用

代价分析:

  • 解决:Momentum减少震荡、加速收敛;Adam自动调整学习率,效果稳定
  • 牺牲:更复杂的优化器需要更多计算和内存
  • ⚠️ 增加:Adam需要存储动量估计,显存占用更高

🔁 记忆锚点

# 优化器对比

# 1. 基础 SGD
def sgd():
    gradient = compute_gradient()
    params -= learning_rate * gradient

# 2. Momentum(动量)
def momentum():
    """
    v = γv + η × ∇L
    θ = θ - v
    γ = 0.9 通常
    """
    velocity = gamma * velocity + learning_rate * gradient
    params -= velocity

# 3. Adam(自适应矩估计)
def adam():
    """
    结合动量 + 自适应学习率
    目前最常用的优化器
    """
    m = beta1 * m + (1 - beta1) * gradient  # 一阶动量
    v = beta2 * v + (1 - beta2) * gradient**2  # 二阶动量
    m_hat = m / (1 - beta1**t)
    v_hat = v / (1 - beta2**t)
    params -= learning_rate * m_hat / (sqrt(v_hat) + epsilon)

一句话本质: 优化器让梯度下降"更聪明"——Momentum加入惯性让更新更平滑,Adam结合动量和自适应学习率,既能加速又能自适应调整,是目前最常用的选择。


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐