详细内容或原文请订阅后点击阅览
不要只是“把 Adam 扔过去”:误解 Adam 会让你付出代价
您对导入进行了“振动编码”。了解 Adam 的优化动态,为什么它会严重失败,以及如何解决它。不要只是“把 Adam 扔进去”:误解 Adam 会让你付出代价,这篇文章首先出现在《走向数据科学》上。
来源:走向数据科学关于一个特别困难的强化学习问题。研究表明类似的智能体可以学习类似的任务。然而我们的模型已经死在水中了。
我简化了架构。我添加了图层。我去掉了图层。我将 LSTM 换成了 Transformer,增加了注意力,然后将其删除。我重建了至少 20 次输入功能。我什至尝试了奇异的内存架构。 我在病态超参数搜索模式下花费了数千个小时的 GPU 时间,但无法得到结果。
纳达。
当我最终找到它时,修复方法是令人羞辱的:我将 β2 从 0.999 更改为 0.95,并将 β₁ 从 0.9 减少到 0.5。
# 实际有效的“羞辱性”修复:
优化器 = optim.AdamW(
模型.参数(),
lr=3e-4,
betas=(0.5, 0.95), # 神奇数字
eps=1e-4 # 防止 RL 中被零除
)
大多数深度学习工程师,包括我自己,只需执行以下操作:
只需使用 AdamW 和默认参数,并将学习率设置为 3e-4。
我不会出于个人喜好对深度学习模型进行振动编码。如果您这样做,您肯定会将此视为优化器选择和学习率。
事实上,我们来测试一下 GPT 5.6,提示是:“为深度学习模型创建训练脚本”
不出所料,GPT 高兴地吐出:
...
