本文主要是介绍面试常问! transformer中dk的大小,以及为什么设成这样,维度,原文分析。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录:
- 原文 :
- 翻译:
- 流程:
- 原因:
原文(多头注意力部分) :
李沐b站论文精读
论文网盘下载:链接 提取码: vm3d
翻译:
-
在这项工作中,我们采用了 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) 的操作可以使得运算结果仍然保持零均值和单位方差,因而有利于模型训练的稳定性。
这篇关于面试常问! transformer中dk的大小,以及为什么设成这样,维度,原文分析。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!