0. 背景
机构:Google Research
作者:Yi Tay, Dara Bahri, Donald Metzler, Da-Cheng Juan, Zhe Zhao, Che Zheng
论文地址:https://arxiv.org/abs/2005.00743
0.1 摘要
以当下基于Transformer的各种先进模型来看,使用点积自注意力(dot product self-attention)是至关重要且不可或缺的。但,事实真的如此吗,没有点积自注意力就会不香吗?点积自注意力是否真的不可替代?为此,本文提出SYNTHESIZER模型,该模型注意力权重的学习摒弃了传统自注意力机制中token之间的交互。本文通过大量实验发现:
(1)随机初始化对齐矩阵所表现出的实力惊人
(2)基于token-token或者说query-key之间的交互学习注意力权重其实是没必要的。
实验表明SYNTHESIZER在多个任务(包括机器翻译、语言建模、文本摘要、对话生成和自然语言理解)上可以与原始的Transformer相媲美。
1. 介绍
随着基于Transformer的各种模型在众多NLP任务上大获成功,Transformer的霸主地位已成事实。而Transformer的核心是query-key-value的点积自注意力,点积自注意力的基本作用是学习自对齐(self-alignment),即确定单个token相对于序列中所有其他token的相对重要性。实际上query、key和values隐含着自注意力模拟一个基于内容的检索过程,而这个过程的核心是pairwise之间的交互。本文则对这整个过程进行了反思。
与传统的做法相反,本文提出既不需要点积自注意力,也不需要基于内容的记忆类自注意力。传统上,注意力权重是在实例或样本级学习的,其中权重通过实例级的pairwise交互产生。因此,这些特定于具体实例的交互往往在不同的实例间波动,缺乏一致的全局语境。为此,本文提出 SYNTHESIZER,该模型不再手动计算token之间两两点积,而是学习合成自对齐(self-alignment)矩阵。同时文本提出多种合成函数,并对其进行全面评估。这些合成函数接收的信息源包括(1)单个token(2)token-token之间的交互(3)全局任务信息。
SYNTHESIZER是标准 Transformer 的泛化,实验结果表明凭全局注意力权重也能够获得具有竞争性的结果,而完全不用考虑token-token交互或任何实例级(局部)信息。随机初始化的 SYNTHESIZER 在WMT 2014 English-German上取得27.27的BLEU。在某些情况下,可以用更简单的SYNTHESIZER变体替换流行的和完善的基于内容的点积注意力,而不会牺牲太多性能。总的来说,本文的发现将会促进Transformer模型中自注意机制的真正作用和效用的进一步调查和讨论。
本文的贡献如下:
- 提出 Synthetic Attention, 这是一种新的学习注意力权重的方式。该方法没有使用点积注意力或基于内容的注意力)。生成独立于token-token交互的对齐矩阵,并探索了一组用于生成注意力矩阵的参数化函数。
- 提出 SYNTHESIZER 模型,该模型利用了Synthetic Attention。该模型在多个自然语言任务(包括机器翻译和语言建模)上可以与最先进的Transformer模型相比肩。
- 证明(1)随机可学习的对齐矩阵的性能具有竞争性;(2)用各种Transformer模型进行屠榜时,token-token的依赖关系并非必要。
2. 模型
SYNTHESIZER 本质上仍是一个 Transformer,只是其中自注意力模块被 Synthetic Attention 模块替换。在生成注意力对齐矩阵(
R
ℓ
×
ℓ
\mathbb{R}^{\ell \times \ell}
Rℓ×ℓ)的时候,本文提出两种SYNTHESIZER模型:Dense Synthesizer 和 Random Synthesizer。Figure 1 展示了 Transformer、Dense Synthesizer 和 Random Synthesizer 的关键思想。
2.1 Dense Synthesizer
这种 SYNTHESIZER 模型最为直观,与输入的每个token相关联。假设Dense Synthesizer模型的输入 X ∈ R ℓ × d X \in \mathbb{R}^{\ell \times d} X∈Rℓ×d,输出是 Y ∈ R ℓ × d Y \in \mathbb{R}^{\ell \times d} Y∈Rℓ×d。其中 ℓ \ell ℓ表示文本序列的长度, d d d表示模型的维度(每个token的维度)。整个模型分为2个步骤:
- 计算每个token的注意力权重
使用参数化的函数 F ( X i ) F(X_{i}) F(Xi)将文本序列中的每个token X i X_{i} Xi从 d d d维映射为 ℓ \ell ℓ维。
B i = F ( X i ) B_{i}=F\left(X_{i}\right) Bi=F(Xi)
更具体地
F ( X ) = W ( σ R ( W ( X ) + b ) ) + b F(X)=W\left(\sigma_{R}(W(X)+b)\right)+b F(X)=W(σR(W(X)+b))+b
这可以理解为两层Dense层。由此计算结果表示每个token对序列中其他token的注意力值,所以输出结果维度是 ℓ \ell ℓ。 - 结合注意力得分计算模型输出结果
Y = Softmax ( B ) G ( X ) Y=\operatorname{Softmax}(B) G(X) Y=Softmax(B)G(X)
其中 B ∈ R ℓ × ℓ B \in \mathbb{R}^{\ell \times \ell} B∈Rℓ×ℓ, G ( X ) G(X) G(X)是另一个参数化的函数,类比为标准 Transformer 的 V V V即value。
简而言之,Dense Synthesizer是用
F
(
X
)
F(X)
F(X)提换掉标准 Transformer 中的
Q
K
⊤
Q K^{\top}
QK⊤,从而消除点积注意力。
所以该模型考虑的是如何从values转为output过程变革。传统的方式用
Q
K
⊤
Q K^{\top}
QK⊤的点积注意力结果经过softmax后再和values相乘。而本文的方法:假设每个token的value维度是d,经过转换后的输出结果是
ℓ
\ell
ℓ 维,表示该token对文本中每个token的注意力权重分布。那么长度为
ℓ
\ell
ℓ的序列,经过转换后得到的是
ℓ
×
ℓ
\ell \times \ell
ℓ×ℓ的矩阵。那么从
ℓ
×
d
\ell \times d
ℓ×d矩阵转为
ℓ
×
ℓ
\ell \times \ell
ℓ×ℓ的矩阵,期间需要引入的是一个
d
×
ℓ
d \times \ell
d×ℓ的矩阵。这个
d
×
ℓ
d \times \ell
d×ℓ的矩阵,即为Dense Synthesizer需要学习的参数。
2.2 Random Synthesizer:
Dense Synthesizer学习的synthetic attention是将给定的每个token映射到
ℓ
\ell
ℓ维,因此Dense Synthesizer模型的映射结果每个token之间是独立的(每个
B
i
B_i
Bi只与
X
i
X_i
Xi有关,而与其他token无关)。这与标准的 Transformer 模型中的token-token交互截然不同。
本文提出的另一种SYNTHESIZER模型是Random Synthesizer,该模型注意力权重的初始化不受任何输入token 的影响,而是完全随机初始化。这些随机初始化的值可以被训练也可以保持固定。具体定义如下:
Y
=
Softmax
(
R
)
G
(
X
)
Y=\operatorname{Softmax}(R) G(X)
Y=Softmax(R)G(X)
其中
R
∈
R
ℓ
×
ℓ
R \in \mathbb{R}^{\ell \times \ell}
R∈Rℓ×ℓ是随机初始化的矩阵。该方法不依赖token对之间的交互或者任何单个token的信息,而是学习一个能跨实例有效的特定任务对齐。换句话说,学习一个跨实例有效的模型意味着在初始化时不直接依靠任何 token 信息。
2.3 模型分解
Dense Synthesizer和Random Synthesizer中引入的网络参数量分别是 d × ℓ {d \times \ell} d×ℓ和 ℓ × ℓ {\ell \times \ell} ℓ×ℓ。当文本序列很长时,参数量将暴增,为此本文引入模型分解的方法,一方面可以降低参数量,另一方面也可以缓解过拟合。
Factorized Dense Synthesizer:
通过生成2个低维矩阵
B
1
、
B
2
B_1、B_2
B1、B2(原文用的是
A
、
B
A、B
A、B,为了不与上文的
B
B
B混淆,这里稍微改动),
B
1
∈
R
ℓ
×
a
B_1 \in \mathbb{R}^{\ell \times a}
B1∈Rℓ×a,
B
2
∈
R
ℓ
×
b
B_2 \in \mathbb{R}^{\ell \times b}
B2∈Rℓ×b,
a
×
b
=
ℓ
a \times b=\ell
a×b=ℓ。
B
1
,
B
2
=
F
B
1
(
X
i
)
,
F
B
2
(
X
i
)
B_1, B_2=F_{B_1}\left(X_{i}\right), F_{B_2}\left(X_{i}\right)
B1,B2=FB1(Xi),FB2(Xi)
最终的输出:
Y
=
Softmax
(
C
)
G
(
X
)
Y=\operatorname{Softmax}(C) G(X)
Y=Softmax(C)G(X)
其中
C
=
H
B
1
(
B
1
)
∗
H
B
2
(
B
2
)
C=H_{B_1}(B_1) * H_{B_2}(B_2)
C=HB1(B1)∗HB2(B2),
H
B
1
(
B
1
)
H_{B_1}(B_1)
HB1(B1)表示
B
1
B_1
B1重复b次,
R
a
→
R
a
b
\mathbb{R}^{a} \rightarrow \mathbb{R}^{a b}
Ra→Rab。
H
B
2
(
B
2
)
H_{B_2}(B_2)
HB2(B2)表示
B
2
B_2
B2重复a次,
R
b
→
R
b
a
\mathbb{R}^{b} \rightarrow \mathbb{R}^{ba}
Rb→Rba,所以最终都是
R
ℓ
×
ℓ
\mathbb{R}^{\ell \times \ell}
Rℓ×ℓ。最后将两者逐位相乘(哈达玛积)得到
C
C
C。
Factorized Random Synthesizer
未分解前参数是
ℓ
×
ℓ
\ell \times \ell
ℓ×ℓ,类似地,随机矩阵也可被分解为两个低秩矩阵:
R
1
,
R
2
∈
R
ℓ
×
k
R_{1}, R_{2} \in \mathbb{R}^{\ell \times k}
R1,R2∈Rℓ×k。
Y
=
Softmax
(
R
1
R
2
⊤
)
G
(
X
)
Y=\operatorname{Softmax}\left(R_{1} R_{2}^{\top}\right) G(X)
Y=Softmax(R1R2⊤)G(X)
实验过程,选择的k=8。
混合Synthesizers:
上述提出各种synthetic attention变种都可以通过加和形式混合到一起:
Y
=
Softmax
(
α
1
S
1
(
X
)
+
⋯
α
N
S
N
(
X
)
)
G
(
X
)
Y=\operatorname{Softmax}\left(\alpha_{1} S_{1}(X)+\cdots \alpha_{N} S_{N}(X)\right) G(X)
Y=Softmax(α1S1(X)+⋯αNSN(X))G(X)
其中
S
(
.
)
S(.)
S(.)表示一个 synthesizer 函数,
α
\alpha
α是可学习的权重参数,
∑
α
=
1
\sum \alpha=1
∑α=1。
比如混合的Random Factorized + Dense Synthesizers 可以用下式表示:
Y
=
Softmax
(
R
1
R
2
⊤
+
F
(
X
)
)
G
(
X
)
Y=\operatorname{Softmax}\left(R_{1} R_{2}^{\top}+F(X)\right) G(X)
Y=Softmax(R1R2⊤+F(X))G(X)
本文提出的各种合成函数如 Table 1所示。值得注意的是,常规的点积注意力也可以被纳入SYNTHESIZER的合成器框架,换句话说,SYNTHESIZER是 Transformer 模型的一般化形式。当合成函数为
S
(
X
)
=
F
Q
(
X
)
F
K
(
X
)
⊤
S(X)=F_{Q}(X) F_{K}(X)^{\top}
S(X)=FQ(X)FK(X)⊤,即为标准的Transformer模型。
Condition On这一列表示合成的输出是否与
X
i
X_i
Xi或者
X
i
X_i
Xi-
X
j
X_j
Xj对相关,即输出和输入之间的关系。Sample这一列表示是否用到局部或全局信息,输入部分没有涉及具体的
X
i
X_i
Xi即表示全局信息。Random Synthesizers在所有样本中共享相同的全局对齐模式,所以是全局的;而Dense Synthesizers 与局部的
X
i
X_i
Xi直接相关,所以是局部的,这使得对齐模式依赖于每个单独的样本。此外,Synthesizers模型也采用多头的方式。
3. 实验
文本在机器翻译、语言模型、文本生成、多任务自然语言理解等任务上进行了实验。
机器翻译和语言建模:
在WMT’14 英德(EnDe)和英法(EnFr)机器翻译任务数据集上评测,结果如Table 2所示。
从上述Table 2可以看出,除了固定的Random Synthesizer 表现较差之外,其他模型表现都差不多,尽管相比于 Transformers 略有下降。其实固定的Random Synthesizer结果也是蛮惊人的,EnDe上也有大概24 BLEU。
语言建模任务上使用的数据集是LM1B,混合Synthesizer(Dense + Vanilla)取得效果最好 ,同时该混合Synthesizer模型也是 的各种Synthesizer模型中唯一超过 Transformer 的。
文本生成:
在文本生成上分别使用了摘要生成方面的CNN/Dailymail数据集和对话生成方面的PersonaChat数据集,具体实验结果如Table 3所示:
实验结果可以看出Synthesizer的各个模型表现不一。在文本摘要生成这个任务上,虽然在不同指标上最优模型各不相同,但是整体上标准Transformer效果比较好。但在对话生成这个任务上,各个指标上都是Synthesizer优于标准 Transformer,特别是Synthesizer(D)在各个指标上都取得了最佳结果。而当Dense和Random混合了标准的Transformer后(即 D+V 和 R+V),指标却下降了。这意味着点积自注意力在这项任务上实际上可能是帮了倒忙的。
多任务自然语言理解:
在自然语言理解任务上选用的是使用 GLUE 和 SuperGLUE。SYNTHESIZER模型和T5(base)在上述俩个benchmark上的实验结果如 Table 4和Table 5所示:
从实验结果可以看出,R+V的混合模型在多数子任务上取得最好的效果。
4. 总结
本文提出一种新的Transformer模型SYNTHESIZER,该模型它采用合成注意力(Synthetic Attention)。此外试图更好地理解和评估全局对齐、局部对齐和实例对齐(单个token和token-token)在自注意力中的效用。并在机器翻译、语言建模和对话生成等多个任务上证明了合成注意力可以与原始的Transformer相媲美。特别是在对话生成任务上,token-token之间的交互实际上会降低性能。Synthesizer 的不同设置没有绝对的优劣,与具体的任务相关。
总的来说,本文是对当下流行的自注意力机制的反思和探索,希望能够抛砖引玉,进一步促进Transformer中各个部分效用的研究。