当前位置:   article > 正文

关于自注意力机制的思考_自注意力公式

自注意力公式

自注意力是Transformer中的核心,但我们大多时候都忽略了其中的 Q ∈ R N × d , K ∈ R N × d , V ∈ R N × d Q\in R^{N\times d},K\in R^{N\times d},V\in R^{N\times d} QRN×d,KRN×d,VRN×d的解释性,下面我们将对自注意力机制做出思考,进一步理解Transformer。阅读本篇内容前,可先回顾Pytorch笔记本:第十四课.Transformer。下面需要明白一些基础知识:

  • 向量内积的意义是什么;
  • 矩阵与其转置相乘,得到的结果是什么意义;

首先,我们分析Transformer中最核心的部分,键值对注意力的公式为: A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V Attention(Q,K,V)=softmax(dk QKT)V首先考虑一个通用的式子: s o f t m a x ( X X T ) X softmax(XX^{T})X softmax(XXT)X我们先思考 X X T XX^{T} XXT的意义。矩阵是由向量组成的,一个矩阵乘以它自己转置的运算,其实可以看成这些向量分别与其他向量计算内积。比如:矩阵转置以后第一行就是第一列,因此,此时就是在计算第一个行向量与自己的内积,第一行乘以第二列是计算第一个行向量与第二个行向量的内积,第一行乘以第三列是计算第一个行向量与第三个行向量的内积。

而向量的内积表征两个向量的夹角,表征一个向量在另一个向量上的投影,即计算相似度,下面举一个实际例子,验证 X X T XX^{T} XXT的意义:
fig1
行向量 x i T x_{i}^{T} xiT分别与自己和其他两个行向量做内积("早"分别与"上"和"好"计算内积),得到一个新的向量,这个新向量是行向量 x i T x_{i}^{T} xiT在自己和其他两个行向量上的投影。投影的值大,说明两个向量相关度高(更相似)。

更进一步,当我们的向量是词向量(词在低维稠密空间的数值映射),两个词向量的相关度高表示:在关注一个词的时候,应当给另一个相关的词也施加关注。

X X T XX^{T} XXT的结果是一个方阵,可以想象,方阵中保存了每个向量与自己和其他向量进行内积运算的结果。而softmax函数则可以实现这些相关度的归一化,从而得到注意力 s o f t m a x ( X X T ) ∈ R N × N softmax(XX^{T})\in R^{N\times N} softmax(XXT)RN×N

对于 s o f t m a x ( X X T ) X softmax(XX^{T})X softmax(XXT)X中的最后一个 X X X,即为待施加注意力分布并进行加权求和的输入数据。举个例子,取 s o f t m a x ( X X T ) softmax(XX^{T}) softmax(XXT)的第一行 R 1 × 3 R^{1\times 3} R1×3,与 X ∈ R 3 × d X\in R^{3\times d} XR3×d相乘,得到一个新的向量 R 1 × d R^{1\times d} R1×d
fig2
这个新的向量其实就是"早"的词向量经过注意力加权求和后的词向量(embedding),我们相当于是把"早"对应的注意力[0.4,0.4,0.2]施加到输入数据 X X X上,重新加权求和得到[1.4,1.4,2,1.8,1],而注意力[0.4,0.4,0.2]的含义就是"早"与所有词"早",“上”,"好"的相关程度,可以看出"早"与本身以及"上"的相关度更高。


在一些关于BERT的可解释性文章中,研究者通过事后解释的方式探索了不同阶段的注意力分布,通过注意力的可视化帮助我们分析模型对于关系(relation)特征的学习:
fig3
BERT模型建立于Transformer,主要由多层自注意力网络堆叠而成(包含残差连接),而自注意力的本质是对词与词(Token and Token)之间"关系"的刻画。不同的关系可以表达丰富的含义,比如名词短语中的依存关系,指代关系,这些关系特征对理解自然语言具有关键作用。

上图展示了不同自注意力头的行为:有些注意力头分布均匀,具有较大的感受野,即编码了较分散的上下文信息,有些注意力头分布集中,且显示出一定的模式,比如集中在当前词的下一个词,或者[SEP],句号等标记上。可以看出,不同的注意力头具有比较多样的行为,因而能够编码不同类型上下文中的关系特征。

关于可解释
可解释性是以人类视角理解模型的行为,因此,我们需要有一个映射,将模型的行为映射到人类可以理解的视角;

可解释性可以分为自解释(Self-explainable)和事后解释(Post-hoc explanation),前者要求模型在构建之初就针对性地设计其结构,使其具备可解释性,比如原型机网络;后者则是对模型中的组件或者中间输出的变量做统计分析,比如CNN核的可视化,attention的可视化,特征图的可视化。

在可解释性研究上,有两个名词具有细微差别:

  • Interpretability与Explainability,这两个词在一开始的时候其实是经常互换的,都指的是一个意思。之后两个名词又有了些细微的差别,Interpretability或者Interpretable AI是使模型成为白盒,模型的任意一个设计结构都让人可以完全理解,想得通为什么要这样设计,而Explainabilily或者Explainable AI则是研究者对于黑盒模型的行为作出人们所能理解的一个解释。

残差连接
残差连接是一种High way的连接方式,有利于梯度回传,Highway神经网络在输入与输出之间建立直接连接,使得输出层可以直接将梯度回传到输入层,从而避免因网络层数过多而带来的梯度爆炸或弥散问题。


现在回到: A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V Attention(Q,K,V)=softmax(dk QKT)V关于 Q ∈ R N × d , K ∈ R N × d , V ∈ R N × d Q\in R^{N\times d},K\in R^{N\times d},V\in R^{N\times d} QRN×d,KRN×d,VRN×d,计算如下: Q = X W Q , K = X W K , V = X W V Q=XW^{Q},K=XW^{K},V=XW^{V} Q=XWQ,K=XWK,V=XWV可见,查询,键,值均是来自 X X X的线性变换,类比之前得到的关于"早"的注意力分布[0.4,0.4,0.2],这个向量的行标记"早"对应着查询,"列"标记对应着所有的键,因此,"早"对应的向量 R 1 × d R^{1\times d} R1×d[1,2,1,2,1],也被称为查询向量。

注意,我们不直接使用 X X X去完成整个过程,却在中间施加线性变换得到 Q ∈ R N × d , K ∈ R N × d , V ∈ R N × d Q\in R^{N\times d},K\in R^{N\times d},V\in R^{N\times d} QRN×d,KRN×d,VRN×d。线性变换可以将原始数据转换到具有另一种表达的线性空间,当我们在这些不能直观感受到的新空间下计算注意力并加权时,才能学习到更丰富的关系信息(不同表达空间下,两个词之间的相关度是不一样的)。


补充内容:当我们使用自注意力机制时,最好引入顺序信息以克服bag of words效应;

对self attention来说,任意一个词总是跟每一个词都计算了注意力,所以没有考虑到input sequence的顺序。更通俗来讲,可以发现前面例子中计算的每一个词向量都与其他词向量计算内积,得到的结果丢失了我们原来文本的顺序信息。对比来说,像语言模型RNN对于文本顺序信息的解释是考虑输入词向量的先后顺序,而上文的计算对sequence的顺序这一部分则完全没有提及,如果打乱词向量的顺序,得到的结果仍然是相同的;

因此,Transformer在输入词向量时添加了位置编码,从而引入了顺序信息。这使得Transformer不仅具有了位置信息,还能实现并行计算(词向量的并行计算);

有些论文将Transformer作为语言模型(生成式模型,比如GPT),通过加入注意力的掩码来实现语言模型的效果。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/781650
推荐阅读
相关标签
  

闽ICP备14008679号