原文链接(https://zhuanlan.zhihu.com/p/363466672)
1.Transformer为何使用多头注意力机制?(为什么不使用一个头)
答:多头可以使参数矩阵形成多个子空间,矩阵整体的size不变,只是改变了每个head对应的维度大小,这样做使矩阵对多方面信息进行学习,但是计算量和单个head差不多。
2.Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?
答:请求和键值初始为不同的权重是为了解决可能输入句长与输出句长不一致的问题。并且假如QK维度一致,如果不用Q,直接拿K和K点乘的话,你会发现attention score 矩阵是一个对称矩阵。因为是同样一个矩阵,都投影到了同样一个空间,所以泛化能力很差。
修改:这个地方有几种看法,参考
transformer中为什么使用不同的K 和 Q, 为什么不能使用同一个值?395 关注 · 14 回答问题
(1)是为了打破对称性,参考其中“如果令Q=K,那么得到的模型大概率会得到一个类似单位矩阵的attention矩阵,这样self-attention就退化成一个point-wise线性映射。这样至少是违反了设计的初衷。”
3.Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别?
答:K和Q的点乘是为了得到一个attention score 矩阵,用来对V进行提纯。K和Q使用了不同的W_k, W_Q来计算,可以理解为是在不同空间上的投影。正因为 有了这种不同空间的投影,增加了表达能力,这样计算得到的attention score矩阵的泛化能力更高。
4.

本文深入探讨了Transformer的多头注意力机制、Q和K的权重处理、注意力计算方式、缩放因子的科学性、padding处理、编码器结构、位置编码、并行化优势及BERT的区别。讲解了为什么要用LayerNorm而非BatchNorm,以及wordpiece模型和bytepairencoding的应用。
最低0.47元/天 解锁文章
404

被折叠的 条评论
为什么被折叠?



