题目重点:MLE 题目直接问学习率大小与 fluctuation 的关系;结合优化步长、mini-batch 噪声、发散证据和诊断实验回答。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 先讨论固定学习率 SGD 更新 θ←θ−ηg 的局部行为;mini-batch 梯度 g 含噪声,曲率与参数尺度可不同。
- 所谓 fluctuation 指相邻 step 的训练 loss 或参数值来回摆动,不等同验证集指标的随机噪声;题目未定义观测量,现场要先问。
解题路线
- 一维二次损失 L(θ)=aθ²/2 的精确梯度更新为 θnext=(1−ηa)θ。0<ηa<1 单调接近零,1<ηa<2 符号交替但仍收敛,ηa≥2 不收敛或发散。
- 因此学习率过大更容易跨过谷底形成振荡;过小时通常下降慢、看似停滞。mini-batch 噪声可能让任意学习率的逐步 loss 都波动,所以不能只看一次曲线下结论。
- 同时画训练 loss 的逐步值与滑动平均、验证 loss、梯度范数和更新/权重比;固定 seed 与 batch size,扫描对数尺度学习率。
- 若 loss 先下降后剧烈震荡,先降 η 或加 warmup;若仅不同 batch 间噪声大,可增大 batch 或做梯度累积,但要检查泛化和吞吐。
手动走一遍
令 a=1、θ0=1。η=0.1 时 θ1=0.9、θ2=0.81,缓慢单调;η=1.5 时 θ1=−0.5、θ2=0.25,参数越过最优点但幅度递减;η=2.1 时 θ1=−1.1、θ2=1.21,幅度增大。真实网络还需检查不同方向的曲率。
规模与取舍
诊断扫描 K 个学习率、每个跑 T 步,训练计算量约为 K×T 次梯度更新;记录曲线 O(KT) 数据,也可在线汇总到 O(K) 指标。具体收敛条件随模型曲率、优化器和调度器变化。
易错点与追问
容易失分的边界
- 把所有 loss 波动都归咎于学习率,忽略 batch 噪声、数据漂移和随机增强。
- 认为学习率越小波动越大而没有区分‘训练慢’与‘振荡’。
- 只看训练集曲线,不验证是否真正改善泛化。
- 拿二次函数阈值当深网普适数值。
继续深挖
- Adam 的自适应步长是否保证不会震荡?
- 梯度累积为何能降低随机噪声却不能修正错误标签?
- warmup 与 cosine decay 分别解决什么阶段的问题?
