AdamW 的衰减学习率计划如何影响权重衰减参数?
How does a decaying learning rate schedule with AdamW influence the weight decay parameter?
根据 Pytorch 文档
https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html
AdamW 优化器在每一步计算学习率 gamma 和权重衰减系数 lambda 的乘积。产品
伽玛*λ=: p
然后用作权重衰减步骤的实际权重。要看到这一点,请考虑 AdamW 算法中 for 循环中的第二行:
但是,如果因为我们使用(比方说)指数学习率衰减时间表,学习率 lambda 在每个时期后都缩小了怎么办? p 是否始终使用 initial 学习率 lambda 计算,因此 p 在整个训练过程中保持不变?或者 p 是否随着 lambda 的收缩而动态收缩,这是由于与学习率衰减计划的隐式交互?
谢谢!
完全基于算法发布的 gamma 和 lambda,因此它们的乘积 p 也是常数。
每次您使用优化器的当前参数步进优化器时都会调用函数torch.optim._functional.adamw
(调用发生在torch/optim/adamw.py:145)。这是实际更新模型参数值的函数。因此,在 learning-rate 调度程序更改优化器参数后,之后的步骤将使用这些参数,而不是初始参数。
为了验证这一点,在 torch/optim/_functional.py:137 的代码中的每一步都重新计算乘积。
根据 Pytorch 文档
https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html
AdamW 优化器在每一步计算学习率 gamma 和权重衰减系数 lambda 的乘积。产品
伽玛*λ=: p
然后用作权重衰减步骤的实际权重。要看到这一点,请考虑 AdamW 算法中 for 循环中的第二行:
但是,如果因为我们使用(比方说)指数学习率衰减时间表,学习率 lambda 在每个时期后都缩小了怎么办? p 是否始终使用 initial 学习率 lambda 计算,因此 p 在整个训练过程中保持不变?或者 p 是否随着 lambda 的收缩而动态收缩,这是由于与学习率衰减计划的隐式交互?
谢谢!
完全基于算法发布的 gamma 和 lambda,因此它们的乘积 p 也是常数。
每次您使用优化器的当前参数步进优化器时都会调用函数torch.optim._functional.adamw
(调用发生在torch/optim/adamw.py:145)。这是实际更新模型参数值的函数。因此,在 learning-rate 调度程序更改优化器参数后,之后的步骤将使用这些参数,而不是初始参数。
为了验证这一点,在 torch/optim/_functional.py:137 的代码中的每一步都重新计算乘积。