原文(多头注意力部分) :
翻译:
-
在这项工作中,我们采用了 h=8 个并行注意力层,或称为头。对于每一层,我们使用 dk = dv = dmodel / h = 64。由于每个头的维度减少了,总的计算成本与具有完整维度的单头注意力相似。
-
即:dk = 512 / 8 = 64。
流程:
-
其前面的过程为:(batch_size, seq_len)-> (batch_size, seq_len, embed_size) -> (batch_size, seq_len, key_size)-> (batch_size, seq_len, num_heads, dk)
-
最后的dk = key_size * num_heads,即64,而不是某些误人子弟的人所写的512,
原因:
-
梯度稳定性:在自注意力机制中,较大的点积可能会导致softmax函数的梯度非常小,从而影响模型的训练。通过缩放点积(即除以 dk的开方)),可以帮助稳定梯度,使得训练更加高效。
-
严格的表述:假设两个输入向量 q 和 k 的每一维都具有零均值和单位方差、并且假设每一维都互相独立,那么这个除 sqrt(dk) 的操作可以使得运算结果仍然保持零均值和单位方差,因而有利于模型训练的稳定性。