训练损失尖峰有了可控复现:二次模型也能抖,还能从检查点预判哪套配置会抖
核心概要
训练损失尖峰此前难以在受控条件下复现,其成因也未被完全理解。研究者用带重尾幂律输入的简单二次模型(幂律随机特征模型)复现了尖峰,并把深度网络逐层训练动力学对齐到这类模型,给出轻量模拟算法。在1.3B参数Transformer语言模型的案例中,研究者改动AdamW的某个超参数以制造尖峰,模拟从第21k步检查点出发预测出Spiky1与Spiky2配置的凸起,而Normal配置相对平滑;由观测指标导出的调度在案例中改善了性能。
深度剖析
训练损失尖峰可以在不含非线性特征学习的简单二次模型里出现,这改变了尖峰只属于深度网络非凸动力学的既有印象。 此前尖峰常被归因于深度网络的特征学习与非凸性,二次模型被认为不可能出现这类行为。 在幂律随机特征模型上比较不同优化器、学习率与幂律指数,只有当数据重尾(幂律指数较大)且学习率接近发散阈值时,SGD与Adam才在发散前出现尖峰。
逐层二次损失把每个网络层当作一个独立的线性单元,用二阶泰勒展开刻画该层对验证损失的贡献。 以往对随机优化的分析多停留在全批量梯度下降或最坏情况界,缺少对随机梯度噪声的逐层处理。 在该展开下,每层对验证损失的变化写成参数的二次函数,其梯度在训练点处与验证损失梯度匹配,从而把层内演化与其余网络部分分开处理。
模拟不调用反向传播,而是按每步的均值与二阶矩合成伪梯度,因此计算开销很小。 直接测量完整Hessian张量在十亿参数规模上不可行,逐层模拟把所需量缩减为验证集上的一次前向统计。 在1.3B参数、24个Transformer块的解码器上,对6个前馈层各用两个随机种子从第21k步模拟到22.5k步,Spiky1与Spiky2出现明显凸起而Normal相对平滑;模拟在CPU上约5秒,而一次全层评估约8分钟。
启示与展望
该结果面向研究十亿级语言模型预训练稳定性的研究人员与工程师。演示范围是一个1.3B参数、24个Transformer块的解码器在C4数据上的案例,模拟从第21k步检查点出发覆盖到22.5k步,并只对6个前馈层各用两个随机种子运行。由观测指标导出的调度在该案例中改善了验证损失,属于对理论的验证性尝试。
模拟并不总能复现尖峰的每个统计量:在幂律随机特征模型上,幂律指数较小时模拟倾向低估尖峰幅度,指数较大时则明显高估。逐层二次模型也无法解释一阶项下降快于预期、以及二阶项呈跳跃而非回落的现象,跨层相关性与二阶以上泰勒展开仍是未解问题。案例中模拟的尖峰位置随随机种子变化,与实际训练轨迹并不逐点对应。
