当前位置:   article > 正文

注意力机制的qkv_注意力机制qkv之间维度关系

注意力机制qkv之间维度关系

关于这个的介绍网络上非常非常多,我用个通俗的例子解释下.
整个注意力机制处理下来,词嵌入所表达的句子矩阵维度是不变的. 比如有一句话,3个词,每个词用10个维度向量表达.进去之前(3,10),transfomer以后还是这个维度.

q和k合起来干一个事情,就是搞明白这3个词之间彼此之间的权重关系,那怎么干了:

  • 词向量维度 (1,10), 整个句子是(3,10),和q乘,维度保持不变 (3,10),所以q的维度必须是(10,10)
  • 词向量维度 (1,10), 整个句子是(3,10),和k乘,维度保持不变 (3,10),所以k的维度必须是(10,10)
  • 上面两个(3,10)经过那个公式,要表达3个词之间的关系,即使你不动脑子,也知道结果的维度一定要是(3,3),

这么一通操作,就得到了一个(3,3)的矩阵,就好像统计的协方差矩阵 然后再看v

  • 词向量维度 (1,10), 整个句子是(3,10),和v乘,维度保持不变 (3,10),所以v的维度必须是(10,10)
  • 把上面的(3,3)的协方差矩阵乘以v,维度不变, 当然,理论上v也可以是(3,11),但是transfomer可也不是一个就完了,是一个套一个,过一个trans就变身了,下一个不好设计了,所以一般也是10.

然后再说下,这个qkv针对每个字变化,还是针对每个句子变化.

事实上,qkv不是针对句子和字来设定的,而是一个头不变. 比如词嵌入是700维的. 那么首先产生qkv的就是700*700维度,他们在一个头里面不变,和句子和字变了无关,类比于卷积核,全局共享.

计算一下注意力机制的参数量更明白这点:

  • 以700维度词嵌入为例,那么q,k,v合计参数700 * 700 * 3,约等于150万
  • 一个transformer5个头,那么150 * 5,约等于750万
  • 一共搞2次transformer,750*2,约等于1500万
  • 此外词嵌入本身也是可以训练的
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/342505
推荐阅读