深度学习中优化器的LAMB(Layer-wise Adaptive Moments)算法原理与自适应学习率机制
字数 1413 2025-10-31 22:46:15
深度学习中优化器的LAMB(Layer-wise Adaptive Moments)算法原理与自适应学习率机制
题目描述
LAMB(Layer-wise Adaptive Moments)是一种自适应优化算法,专为大规模深度学习模型(如BERT)设计。它结合了Adam优化器的自适应学习率特性和层wise学习率调整策略,通过归一化参数更新幅度来解决训练不稳定问题,显著加速大模型收敛。
解题过程
-
问题背景
- 传统优化器(如SGD、Adam)在大批量训练时易出现不稳定收敛。
- 原因:不同层的参数梯度量级差异大,导致学习率难以统一设置。
-
LAMB的核心思想
- 对每一层参数单独计算自适应学习率,并限制更新步长的幅度。
- 引入信任比率(Trust Ratio),将参数更新幅度归一化到与其权重范数成比例的范围。
-
算法步骤
步骤1:计算梯度的一阶矩和二阶矩(与Adam相同)- 一阶矩(动量):
\(m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t\) - 二阶矩(自适应学习率基准):
\(v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2\) - 其中 \(g_t\) 为当前梯度,\(\beta_1, \beta_2\) 为衰减率(通常取0.9和0.999)。
步骤2:偏差校正(针对初始时刻的估计偏差)
- \(\hat{m}_t = m_t / (1 - \beta_1^t)\)
- \(\hat{v}_t = v_t / (1 - \beta_2^t)\)
步骤3:计算自适应学习率更新方向
- 原始更新量: \(\Delta_t = \hat{m}_t / (\sqrt{\hat{v}_t} + \epsilon)\)(\(\epsilon\) 为数值稳定性常数)
步骤4:层wise归一化(关键创新)
- 计算参数权重 \(w_t\) 的范数: \(\| w_t \|_2\)
- 计算更新量 \(\Delta_t\) 的范数: \(\| \Delta_t \|_2\)
- 信任比率: \(\phi = \frac{\| w_t \|_2}{\| \Delta_t \|_2 + \epsilon}\)
- 归一化更新量: \(\Delta_t' = \phi \cdot \Delta_t\)
步骤5:应用学习率并更新参数
- \(w_{t+1} = w_t - \eta \cdot \Delta_t'\)
- 其中 \(\eta\) 为全局学习率。
- 一阶矩(动量):
-
关键机制解析
- 自适应学习率:通过 \(\hat{v}_t\) 调整各参数方向的学习率,适应稀疏梯度。
- 层wise约束:信任比率确保参数更新幅度与权重范数成比例,避免某些层更新过大。
- 效果:支持极大批量训练(如BERT可用的批量达32K),同时保持稳定性。
-
与Adam的对比
- Adam直接使用 \(\Delta_t\) 更新,而LAMB通过归一化约束步长。
- LAMB特别适合Transformer等深层模型,Adam在批量极大时易发散。
总结
LAMB通过层wise归一化将自适应学习率与更新幅度控制结合,解决了大模型训练的批量缩放问题,成为训练BERT等模型的标准优化器。