Skip to content

为什么先更新了学习率,后优化权重呢? #123

Answered by jingyaogong
AnnaPatio asked this question in Q&A
Discussion options

You must be logged in to vote

事实上二者基本一致,并无影响

放一段deepseek的回复:


在深度学习中,学习率更新在前(即在优化器更新参数之前更新学习率)是更常见的做法。这种顺序的逻辑是:

  1. 学习率更新在前

    • 先通过学习率调度器(scheduler)更新学习率。
    • 然后优化器使用更新后的学习率进行参数更新。
    • 这种方式确保当前迭代使用的是最新的学习率,能够更及时地反映学习率调整对模型训练的影响。
  2. 学习率更新在后

    • 优化器先使用当前学习率更新参数。
    • 然后学习率调度器更新学习率,供下一次迭代使用。
    • 这种方式会导致学习率调整滞后一步,当前迭代使用的是上一次的学习率。

为什么学习率更新在前更常见?

  • 即时性:学习率调整能够立即生效,更符合动态调整学习率的初衷。
  • 主流框架的默认行为:PyTorch、TensorFlow 等主流框架的官方示例和文档通常采用学习率更新在前的顺序。
  • 更直观:从逻辑上讲,先调整学习率再更新参数更符合直觉。

代码示例(PyTorch)

# 更常见的顺序:学习率更新在前
for epoch in range(num_epochs):
    for batch in data_loader:
        # 前向传播、计算损失
        loss = model(batch)
        
        # 反向传播
        loss.backward()
        
        # 更新学习率
        scheduler.step()
        
        # 更新模型参数
        optimizer.step

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@AnnaPatio
Comment options

Answer selected by AnnaPatio
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants