M3-032M3: Deep Learning FoundationsOptimizers & Second-Order MethodsMedium
Mastery:
Optimizers & Second-Order Methods: 解释 Adam 的 ε 参数作用,以及它在大模型中的常见取值。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: ε 防止 v̂ 为 0 时除零,同时在下界约束步长上界(η/ε);LLM 常用 1e-8,某些低精度训练用 1e-6。
📌 Key Takeaways
- •ε 决定'梯度极小时的最大步长',不是纯数值保护
- •ε 太大 → 退化为 SGD;ε 太小 → 小梯度参数步长爆炸
- •BF16 训练常放大 ε(如 1e-6)以吸收精度噪声
📐 Mathematical Derivations
数学机理:Adam 的更新为 η·m̂/(√v̂+ε)。当 √v̂≫ε 时,ε 可忽略、更新量级 ≈ η;当 √v̂≪ε(该参数梯度长期极小,如 embedding 中极少出现的 token)时,分母被 ε 主导,更新量级 ≈ η·m̂/ε——<strong>可能远大于 η</strong>,造成该参数步长失控。故 ε 的作用是给分母设下界 ε,从而给步长设上界 η/ε(在 |m̂|≤1 的近似下)。这也说明 ε 不是'防除零'这么简单,它实际定义了'梯度多小时的步长上限'。工程实现中常见两种写法:√(v̂)+ε(PyTorch 默认)与 √(v̂+ε)(原始论文),后者在 v̂ 极小时更平滑但等价性有细微差别;大模型中因 v̂ 通常远大于 ε,两者差异可忽略。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>ε 与有效学习率</strong>——在梯度尺度整体很小的层(如某些初始化下),ε 主导分母会让有效 lr 变成 η/ε,可能比预期大几个数量级;这就是为什么 μP 理论强调 ε 应与宽度解耦、并在大模型中用较大 ε。② <strong>BF16 下的必要性</strong>——BF16 的梯度噪声(约 1e-2 相对误差)远大于 FP32,若 ε=1e-8 则噪声可能主导分母;故 BF16/FP16 训练常把 ε 放大到 1e-6~1e-8 甚至更大,让噪声被 ε 吸收。③ <strong>与 lr 的耦合</strong>——真正重要的是 <strong>ε/η 的比值</strong>:PaLM 等报告用 ε=1e-8 配 η 变化时,若 η 变小则 ε 相对变大、训练变慢;故某些实现固定 ε 与 lr 的比例。④ <strong>8-bit Adam</strong>——量化 v 会引入额外误差,故 8-bit Adam 通常要求 ε 略大,且用'块级'缩放来降低量化误差。⑤ <strong>实践建议</strong>——从 1e-8 起步;若训练不稳定(loss spike、参数爆炸)先试放大 ε 到 1e-6;若收敛过慢且确认梯度尺度正常,再试缩小 ε。⑥ <strong>面试延伸</strong>——追问常落到'Adam 更新量级为何与梯度大小无关':答案是 m̂/√v̂ 的比值性质,而 ε 正是这个归一化在小梯度区的'截断'。
⚠️ Common Interview Pitfalls
- ✕把 ε 当成无关紧要的数值保护(它实质定义了步长上界)
- ✕在 BF16 下沿用 FP32 的小 ε(噪声被放大、训练不稳)
🎯 Interviewer Follow-ups
- ?为什么 ε 与 lr 的比值会影响训练稳定性?
- ?ε 放在平方根内外有区别吗?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.