15|Scaled Dot-Product:那个根号 d_k 是怎么来的
💡
原文中文,约20100字,阅读约需48分钟。
📝
内容提要
本文探讨了在Transformer模型中将点积结果除以√d_k的原因。这一操作旨在避免softmax函数饱和,确保梯度有效传播。通过数学推导,证明了点积的方差为d_k,缩放后方差归一化为1,从而保持训练的稳定性。文章还讨论了不同维度下的训练效果及现代优化器如何与√d_k的设计结合,以提升模型性能。
🎯
关键要点
- 在Transformer模型中,点积结果除以√d_k是为了避免softmax函数饱和,确保梯度有效传播。
- 通过数学推导,证明了点积的方差为d_k,缩放后方差归一化为1,从而保持训练的稳定性。
- 不缩放时,点积的方差会导致softmax输出接近one-hot,造成梯度消失,影响模型训练。
- √d_k的选择不是经验技巧,而是基于概率论的严格推导,确保了训练的有效性。
- 现代优化器如Muon与√d_k的设计结合,进一步提升了模型性能和训练稳定性。
❓
延伸问答
为什么在Transformer模型中要将点积结果除以√d_k?
这是为了避免softmax函数饱和,确保梯度有效传播,从而保持训练的稳定性。
√d_k的选择是基于什么理论推导的?
√d_k的选择是基于概率论的严格推导,确保点积的方差归一化为1。
不缩放点积会导致什么问题?
不缩放时,点积的方差会导致softmax输出接近one-hot,造成梯度消失,影响模型训练。
如何通过数学推导证明点积的方差为d_k?
通过假设q和k是独立的d_k维向量,推导得出q·k的方差为d_k。
现代优化器如何与√d_k的设计结合?
现代优化器如Muon通过正交化W_q和W_k,维持q和k的单位方差,从而增强训练稳定性。
为什么选择√d_k而不是其他常数?
选择√d_k是因为它最自然,能够将方差归一化到1,保留了统计学中常用的标准化。
🏷️
标签
➡️