赞
踩
自注意力是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} Q∈RN×d,K∈RN×d,V∈RN×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的意义:
行向量
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}
X∈R3×d相乘,得到一个新的向量
R
1
×
d
R^{1\times d}
R1×d:
这个新的向量其实就是"早"的词向量经过注意力加权求和后的词向量(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)特征的学习:
BERT模型建立于Transformer,主要由多层自注意力网络堆叠而成(包含残差连接),而自注意力的本质是对词与词(Token and Token)之间"关系"的刻画。不同的关系可以表达丰富的含义,比如名词短语中的依存关系,指代关系,这些关系特征对理解自然语言具有关键作用。
上图展示了不同自注意力头的行为:有些注意力头分布均匀,具有较大的感受野,即编码了较分散的上下文信息,有些注意力头分布集中,且显示出一定的模式,比如集中在当前词的下一个词,或者[SEP],句号等标记上。可以看出,不同的注意力头具有比较多样的行为,因而能够编码不同类型上下文中的关系特征。
关于可解释
可解释性是以人类视角理解模型的行为,因此,我们需要有一个映射,将模型的行为映射到人类可以理解的视角;
可解释性可以分为自解释(Self-explainable)和事后解释(Post-hoc explanation),前者要求模型在构建之初就针对性地设计其结构,使其具备可解释性,比如原型机网络;后者则是对模型中的组件或者中间输出的变量做统计分析,比如CNN核的可视化,attention的可视化,特征图的可视化。
在可解释性研究上,有两个名词具有细微差别:
残差连接
残差连接是一种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}
Q∈RN×d,K∈RN×d,V∈RN×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} Q∈RN×d,K∈RN×d,V∈RN×d。线性变换可以将原始数据转换到具有另一种表达的线性空间,当我们在这些不能直观感受到的新空间下计算注意力并加权时,才能学习到更丰富的关系信息(不同表达空间下,两个词之间的相关度是不一样的)。
补充内容:当我们使用自注意力机制时,最好引入顺序信息以克服bag of words效应;
对self attention来说,任意一个词总是跟每一个词都计算了注意力,所以没有考虑到input sequence的顺序。更通俗来讲,可以发现前面例子中计算的每一个词向量都与其他词向量计算内积,得到的结果丢失了我们原来文本的顺序信息。对比来说,像语言模型RNN对于文本顺序信息的解释是考虑输入词向量的先后顺序,而上文的计算对sequence的顺序这一部分则完全没有提及,如果打乱词向量的顺序,得到的结果仍然是相同的;
因此,Transformer在输入词向量时添加了位置编码,从而引入了顺序信息。这使得Transformer不仅具有了位置信息,还能实现并行计算(词向量的并行计算);
有些论文将Transformer作为语言模型(生成式模型,比如GPT),通过加入注意力的掩码来实现语言模型的效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。