共计 1813 个字符,预计需要花费 5 分钟才能阅读完成。
1. AdamW 与 Adam 的核心区别
AdamW 优化器是 Adam 的改进版本,主要区别在于权重衰减(weight decay)的处理方式。在原始 Adam 中,权重衰减与梯度更新是耦合在一起的,这可能导致权重衰减的效果不如预期。而 AdamW 将权重衰减解耦,直接应用到参数更新步骤中,从而更有效地控制模型复杂度。

- 理论优势 :AdamW 的这种解耦方式使得权重衰减的作用更加明确,避免了学习率和权重衰减之间的相互干扰,从而提升了训练的稳定性和最终模型的泛化性能。
- 论文依据 :这一改进源于 2017 年 Loschilov 和 Hutter 的论文《Decoupled Weight Decay Regularization》,文中通过实验证明了 AdamW 在多个任务上的优越性。
2. 关键参数的作用机制及典型取值
学习率(lr)
学习率是优化器中最重要的超参数之一,控制每次参数更新的步长。
- 作用机制 :学习率过大可能导致震荡甚至发散,过小则收敛缓慢。
- 典型取值 :一般从 1e- 3 到 1e- 5 之间尝试,具体取决于任务复杂度。
Beta1 和 Beta2
这两个参数分别控制一阶矩(均值)和二阶矩(方差)的指数衰减率。
- Beta1:通常设置为 0.9,控制梯度均值的衰减速度。
- Beta2:通常设置为 0.999,控制梯度方差的衰减速度。
- 调整建议 :在噪声较大的任务中,可以适当降低 Beta2 以更快适应变化。
权重衰减(weight decay)
权重衰减用于防止过拟合,通过对大权重施加惩罚来约束模型复杂度。
- 作用机制 :在 AdamW 中,权重衰减是独立于梯度更新的。
- 典型取值 :一般在 1e- 2 到 1e- 4 之间,具体取决于模型大小和数据量。
3. 针对 CV/NLP 不同任务的参数配置对比
计算机视觉(CV)任务
CV 任务通常需要较大的学习率和较小的权重衰减。
- 学习率 :1e- 3 到 1e-4
- 权重衰减 :1e- 4 到 1e-5
自然语言处理(NLP)任务
NLP 任务通常需要较小的学习率和较大的权重衰减。
- 学习率 :1e- 4 到 1e-5
- 权重衰减 :1e- 2 到 1e-3
4. PyTorch 代码示例
以下是一个完整的训练循环示例,展示了如何在 PyTorch 中配置 AdamW 优化器并监控训练过程。
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
# 定义模型
model = YourModel()
# 定义损失函数
criterion = nn.CrossEntropyLoss()
# 定义优化器
optimizer = optim.AdamW(model.parameters(),
lr=1e-4,
betas=(0.9, 0.999),
weight_decay=1e-2
)
# 数据加载器
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
# 训练循环
for epoch in range(num_epochs):
for batch in train_loader:
inputs, labels = batch
# 前向传播
outputs = model(inputs)
loss = criterion(outputs, labels)
# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 打印训练信息
print(f'Epoch {epoch}, Loss: {loss.item()}')
5. 常见调参误区与避坑指南
学习率震荡
- 问题 :学习率过大可能导致损失值震荡不收敛。
- 解决 :逐步降低学习率,或使用学习率调度器(如 CosineAnnealingLR)。
梯度爆炸
- 问题 :梯度值过大可能导致参数更新步长过大。
- 解决 :使用梯度裁剪(gradient clipping)限制梯度范围。
6. 在不同 batch size 下的参数调整策略
小 batch size(如 32)
- 学习率 :可以稍大,如 1e-3。
- 权重衰减 :可以稍小,如 1e-4。
大 batch size(如 256)
- 学习率 :需要减小,如 1e-4。
- 权重衰减 :可以增大,如 1e-2。
总结
AdamW 优化器通过解耦权重衰减,显著提升了训练稳定性和模型性能。合理选择学习率、beta1/beta2 和权重衰减等参数,可以进一步优化训练效果。针对不同任务和 batch size,灵活调整参数配置是关键。希望本文能帮助你在实际项目中更好地使用 AdamW 优化器。
正文完
