注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制 |
您所在的位置:网站首页 › occlusion怎么读 › 注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制 |
本文同时发布于我的个人网站,公式图片显示效果更好,欢迎访问:https://lulaoshi.info/machine-learning/attention/transformer-attention.html Transformer[^1]论文中使用了注意力Attention机制,注意力Attention机制的最核心的公式为: 这个公式中的Q、K和V分别代表Query、Key和Value,他们之间进行的数学计算并不容易理解。 从向量点乘说起我们先从 首先需要复习一下向量点乘(Dot Product)的概念。对于两个行向量 向量点乘的几何意义是:向量 一个矩阵 矩阵 以 下面以词向量矩阵为例,这个矩阵中,每行为一个词的词向量。矩阵与自身的转置相乘,生成了目标矩阵,目标矩阵其实就是一个词的词向量与各个词的词向量的相似度。 ![]() 如果再加上Softmax呢?我们进行下面的计算: ![]() 在这个基础上,再进一步: ![]() 注意力Attention机制的最核心的公式为: 用图片演示为: ![]() 其中, ![]() 在这张图中, Mask是机器翻译等自然语言处理任务中经常使用的环节。在机器翻译等NLP场景中,每个样本句子的长短不同,对于句子结束之后的位置,无需参与相似度的计算,否则影响Softmax的计算结果。 我们用国外博主Transformer详解博文[^2]中的例子来将上述计算串联起来解释。 输入为词向量矩阵X,每个词为矩阵中的一行,经过与W进行矩阵乘法,首先生成Q、K和V。q1 = X1 * WQ,q1为Q矩阵中的行向量,k1等与之类似。 ![]() 第二步是进行 ![]() 第三步,将刚得到的相似度除以 ![]() 第四步是使用刚得到的权重矩阵,与V相乘,计算加权求和。 ![]() 为了增强拟合性能,Transformer对Attention继续扩展,提出了多头注意力(Multiple Head Attention)。刚才我们已经理解了, ![]() 比如我们定义8组参数,同样的输入 ![]() 在输出到下一层前,我们需要将8个输出拼接到一起,乘以矩阵 ![]() 多头注意力的计算过程如下图所示。对于下图中的第2)步,当前为第一层时,直接对输入词进行编码,生成词向量X;当前为后续层时,直接使用上一层输出。 ![]() 再去观察Transformer论文中给出的多头注意力图示,似乎更容易理解了: ![]() [^1]: Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need. 31st Conference on Neural Information Processing Systems 2017(NIPS 2017). Long Beach, CA, USA: 2017: 5998–6008. [^2]: https://jalammar.github.io/illustrated-transformer/ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |