在 AdamW 算法中调整参数对模型训练过程和最终效果有直接且重要的影响,以下是各关键参数对性能的具体影响总结:
AdamW 主要可调参数及其影响说明
1. 学习率 lr
- 影响:
- 太大(如
0.01 ~ 0.1
):训练过程不稳,容易发散、无法收敛;
- 太小(如
<1e-5
):收敛速度慢、欠拟合。
- 最佳范围:
- 普通 CNN/ResNet:
3e-4 ~ 1e-3
- NLP Transformer/BERT:
2e-5 ~ 5e-5
- 大语言模型(如 LLaMA、ChatGPT):
1e-4 ~ 6e-4
2. 权重衰减 weight_decay
- 作用:控制正则化强度,防止过拟合。
- 影响:
- 太小(如
0.0
或 0.01
):可能模型复杂度高、泛化能力差;
- 太大(如
0.1
以上):可能导致模型容量不足,欠拟合。
- 最佳范围:
- 普通 CNN/ResNet:
1e-4 ~ 0.1
- NLP Transformer/BERT:
0.01~0.05
(有时会关闭正则化)
- 大语言模型:
0.01~0.03
,与学习率搭配使用
3. 动量系数 betas = (beta_1, beta_2)
- 默认为
(0.9, 0.999)
- 影响:
beta_1
越大,则对历史梯度的权重越高,更新速度越慢;
beta_2
影响 RMSProp 的统计效果。默认设置已经非常成熟。
- 建议不调整这些值。
4. epsilon(eps)
- 默认为
1e-8
- 作用: 避免除零操作
- ❗️ 一般无需调整
5. 梯度裁剪 max_grad_norm
- 可选参数,不设置则不启用
- 影响:
- 太大(如
2.0
):可能无法抑制过大的梯度;
- 太小(如
0.1
):模型更新受限、收敛速度慢。
- 适用场景:当模型训练过程中出现严重的梯度爆炸或数值不稳定问题时启用,一般设置为
1.0~2.0
参数调节影响总结
参数 |
调大影响 |
调小影响 |
推荐值区间 |
lr |
训练不稳定、发散 |
收敛慢、欠拟合 |
1e-4 ~ 1e-3 (根据任务调整) |
weight_decay |
过正则化,模型能力下降 |
正则不足,过拟合 |
0.01~0.1 |
betas |
更新更慢 |
更快、但可能不稳定 |
默认值不建议改动 |
eps |
影响很小(可忽略) |
无显著影响 |
不用调整 |
max_grad_norm |
训练稳定性提升 |
过早限制更新速度,可能收敛困难 |
1.0~2.0 (根据任务启用) |
实际操作建议:按步骤调节参数
第一步:固定所有其他参数
- 仅调整 学习率 lr
- 观察训练是否快速收敛;
- 如果发散,则降低 lr;
- 如果非常慢,则增加 lr。
第二步:调整 weight_decay
- 根据模型是否出现过拟合进行调节:
- 过拟合严重 → 增大 weight_decay
- 欠拟合(训练效果差) → 减小 weight_decay
第三步(可选):梯度裁剪(max_grad_norm)
- 如果你的数据噪声很大或模型特别深、大,可以设置为
1.0~2.0
来稳定训练。
示例(以 NLP 模型为例)
import torch
from transformers import AdamW
model = ...
optimizer = AdamW(
model.parameters(),
lr=5e-5,
betas=(0.9, 0.999),
eps=1e-8,
weight_decay=0.01
)
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
举个例子:AdamW 在不同任务中的配置
任务类型 |
lr |
weight_decay |
普通 CV(ResNet) |
3e-4 |
1e-4 ~ 0.1 |
BERT/Transformer |
5e-5 |
0.01 |
大语言模型(LLaMA) |
2e-4~6e-4 |
0.01~0.03 |
总结:参数调整影响总结
超参数 |
过大影响 |
过小影响 |
lr |
训练不稳定、发散 |
收敛速度慢、欠拟合 |
weight_decay |
模型能力受限,过正则化 |
过拟合风险增加 |
betas |
不影响训练稳定性(默认值即可) |
可能导致更新不稳定 |
max_grad_norm |
训练速度变慢、收敛困难 |
无法抑制梯度爆炸 |
番外
