Transformer中缩放点积注意力为什么要除以√d_k?
在Transformer的Scaled Dot-Product Attention中,计算注意力分数时会将Q和K的点积结果除以√d_k。请解释这样设计的数学原理和实际意义。如果不进行缩放,会导致什么后果?
回答
苦行僧
缩放因子√d_k的核心作用是防止softmax梯度消失。当d_k较大时,Q和K点积的方差为d_k(假设Q、K各元素均值为0、方差为1),导致点积值可能非常大或非常小。softmax输入值的差异过大会使梯度趋近于0(softmax进入饱和区),造成训练困难。除以√d_k后,点积的方差变为1,将softmax拉回合理区域,保证了梯度的稳定传播。如果不缩放,小学习率下模型收敛极慢,大学习率则可能训练崩溃。数学上,假设q和k独立同分布均值为0方差为1,则E[q·k]=0,Var(q·k)=d_k,除以√d_k后Var=1。