第一遍
标题以及作者
摘要
- BERT使用掩码破坏了输入(导致在训练阶段和推理阶段的输入出现了差异),忽略了掩码位置之间的依赖关系(即:掩码之间相互独立,但是被遮挡的词语,出现在句中不同位置是有区别的,例如:【我爱阅读】,如果是自回归模型,P(我爱阅读)=P(我)P(爱|我)P(阅|我爱)P(读|我爱阅);如果是自编码模型,P(我爱阅读|我爱maskmask)=P(阅|我爱)P(读|我爱),其中两个mask是相互独立,这是不符合语言直觉的)。
- 本文的XLNet就是为了克服以上两个缺点,提出了一种排列语言模型的方法,对于一个序列编码相当于对其序列所有的排序方法进行编码(实际实现过程中,没有使用所有的排列,而是从所有排列中采样,降低计算复杂度,也尽可能的保留了位置信息),这就是一种自回归模型,关注到了掩码位置之间的依赖关系;另一方面,输入序列在pretrain和fine-tune阶段都保持不变,通过mask矩阵来排序。
结论
XLNet是一种广义的AR预训练方法,它使用排列语言模型建模目标来结合AR和AE的优点。XLNet包括集成了Transformer-XL以及精心设计的双流注意力机制。
1 介绍
-
自回归语言建模和自编码语言建模是无监督预训练任务中最成功的两个。
-
AR语言模型,尝试通过自回归建模去估计文本语料库的概率分布。例如:给定一个序列 x = ( x 1 , . . . , x T ) {\rm x} = (x_1,...,x_T) x=(x1,...,xT),AR语言建模通过前向乘积表示为: p ( x ) = ∏ t = i T p ( x t ∣ x < t ) p(x) = \prod_{t=i}^Tp( x_t|{\rm x}_{<t}) p(x)=∏t=iTp(xt∣x<t) (Note: x 表 示 序 列 , x 表 示 某 个 字 符 {\rm x}表示序列,{x}表示某个字符 x表示序列,x表示某个字符);或者通过后向乘积表示: p ( x ) = ∏ t = T 1 p ( x t ∣ x > t ) p(x)=\prod_{t=T}^1p(x_t|{\rm x}_{>t}) p(x)=∏t=T1p(xt∣x>t)。一般神经网络就是去学习其中的条件分布。AR模型每次建模只能使用单向的信息,而下游语言理解任务通常需要上下文信息,这导致AR语言建模和有效的预训练之间存在差距。
-
相比之下,AE语言模型不执行显式概率分布估计,而在于从损坏的输入重建原始数据。例如:BERT在训练过程中,会将一些词进行MASK并训练模型从损坏的版本中恢复原始标记,因此BERT可以使用上下文的双向信息。但是其中也存在两个问题,(1)由于[MASK]在微调阶段是不出现的,因此存在pretrain-finetune差距;(2)由于某些输入被[MASK],BERT无法使用条件概率的乘积规则对联合概率进行建模,进一步来说,BERT中作出了[MASK]内容相互独立的假设,忽略了[MASK]的词与其他词的联合概率分布。
-
本文提出一种方法,从两种方法中取长补短。
-
XLNet分解顺序的所有可能排列,首先通过置换操作,每个位置的上下文可以由左右两个标记组成,那么经过一系列的置换,每个位置都学习利用来自所有位置的上下文信息,可以任务补货了上下文信息。
-
XLNet不依赖于破坏数据然后去重建这种方式,因为不存在pretrain-finetune的问题,同时AR使用了乘积规则分解预测标记的联合概率,消除了BERT的独立性假设。
-
-
本文将Transformer-XL的分段循环机制和相关编码方案集成到预训练中;简单地将 Transformer(-XL) 架构应用于基于排列的语言建模是行不通的,因为分解顺序是任意的并且目标是模棱两可的。作为一种解决方案,我们建议重新参数化 Transformer(-XL) 网络以消除歧义。
第二遍
2 提出的方法
2.1 背景
AR语言模型建模公式:
max
θ
log
p
θ
(
x
)
=
∑
t
=
1
T
log
p
θ
(
x
t
∣
x
<
t
)
=
∑
t
=
1
T
log
exp
(
h
θ
(
x
1
:
t
−
1
)
⊤
e
(
x
t
)
)
∑
x
′
exp
(
h
θ
(
x
1
:
t
−
1
)
⊤
e
(
x
′
)
)
h
θ
(
x
1
:
t
−
1
)
是
上
下
文
表
示
,
e
(
x
)
是
x
的
词
向
量
。
\max _{\theta} \log p_{\theta}(\mathbf{x})=\sum_{t=1}^{T} \log p_{\theta}\left(x_{t} \mid \mathbf{x}_{<t}\right)=\sum_{t=1}^{T} \log \frac{\exp \left(h_{\theta}\left(\mathbf{x}_{1: t-1}\right)^{\top} e\left(x_{t}\right)\right)}{\sum_{x^{\prime}} \exp \left(h_{\theta}\left(\mathbf{x}_{1: t-1}\right)^{\top} e\left(x^{\prime}\right)\right)} \\ h_{\theta}(\mathbf{x}_{1: t-1})是上下文表示,e(x)是x的词向量。
θmaxlogpθ(x)=t=1∑Tlogpθ(xt∣x<t)=t=1∑Tlog∑x′exp(hθ(x1:t−1)⊤e(x′))exp(hθ(x1:t−1)⊤e(xt))hθ(x1:t−1)是上下文表示,e(x)是x的词向量。
AE语言模型建模公式:
max
θ
log
p
θ
(
x
‾
∣
x
^
)
≈
∑
t
=
1
T
m
t
log
p
θ
(
x
t
∣
x
^
)
=
∑
t
=
1
T
m
t
log
exp
(
H
θ
(
x
^
)
t
⊤
e
(
x
t
)
)
∑
x
′
exp
(
H
θ
(
x
^
)
t
⊤
e
(
x
′
)
)
x
^
表
示
受
损
的
输
入
,
x
‾
表
示
被
M
a
s
k
的
t
o
k
e
n
。
m
t
=
1
时
表
示
该
字
符
被
遮
蔽
,
因
为
只
需
要
求
被
m
a
s
k
的
词
的
概
率
分
布
。
\max _{\theta} \quad \log p_{\theta}(\overline{\mathbf{x}} \mid \hat{\mathbf{x}}) \approx \sum_{t=1}^{T} m_{t} \log p_{\theta}\left(x_{t} \mid \hat{\mathbf{x}}\right)=\sum_{t=1}^{T} m_{t} \log \frac{\exp \left(H_{\theta}(\hat{\mathbf{x}})_{t}^{\top} e\left(x_{t}\right)\right)}{\sum_{x^{\prime}} \exp \left(H_{\theta}(\hat{\mathbf{x}})_{t}^{\top} e\left(x^{\prime}\right)\right)} \\ \hat{\mathbf{x}}表示受损的输入,\overline{\mathbf{x}} 表示被Mask的token。m_t=1时表示该字符被遮蔽,因为只需要求被mask的词的概率分布。
θmaxlogpθ(x∣x^)≈t=1∑Tmtlogpθ(xt∣x^)=t=1∑Tmtlog∑x′exp(Hθ(x^)t⊤e(x′))exp(Hθ(x^)t⊤e(xt))x^表示受损的输入,x表示被Mask的token。mt=1时表示该字符被遮蔽,因为只需要求被mask的词的概率分布。
2.2 目标函数:Permutation Language Modeling
一个长度为T的序列,打乱顺序一共有T!个序列,如果模型参数在所有分解顺序之间共享,则预期模型将学习从双方的所有位置收集信息。
公式表示为:
max
θ
E
z
∼
Z
T
[
∑
t
=
1
T
log
p
θ
(
x
z
t
∣
x
z
<
t
)
]
\max _{\theta} \quad \mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_{T}}\left[\sum_{t=1}^{T} \log p_{\theta}\left(x_{z_{t}} \mid \mathbf{x}_{\mathbf{z}_{<t}}\right)\right]
θmaxEz∼ZT[t=1∑Tlogpθ(xzt∣xz<t)]
本质上,对于文本序列 x,我们一次采样一个分解顺序 z,并根据分解顺序分解似然$ p_θ(x)$。由于在训练期间所有分解顺序共享相同的模型参数 θ,因此预期
x
t
x_t
xt已经看到了序列中每个可能的元素$ x_i \neq x_t$,因此能够捕获双向上下文。此外,由于这个目标适合 AR 框架,它自然避免了BERT模型的独立性假设和预训练-微调差异。
Note:
所提出的目标仅置换分解顺序,而不是序列顺序。换句话说,我们保持原始序列顺序,使用与原始序列对应的位置编码,并依靠 Transformers 中适当的注意力掩码来实现分解顺序的排列。请注意,此选择是必要的,因为模型在微调期间只会遇到具有自然顺序的文本序列。
由上图可以看到,该模型在按照分解顺序,让模型只能看到 x 3 x_3 x3前面的序列。
2.3 框架
- (a)表示内容流注意力(和标准的自注意力一样)
- (b)查询流注意
让我们考虑两种不同的排列,
z
(
1
)
和
z
(
2
)
,
z
(
1
)
=
z
(
2
)
=
z
<
t
但
是
预
测
的
位
置
不
同
,
z
t
(
1
)
=
i
≠
j
=
z
t
(
2
)
z^{(1)}和z^{{(2)}},z^{(1)}=z^{(2)}=z_{<t}但是预测的位置不同,z_t^{(1)}=i\neq j = z_t^{(2)}
z(1)和z(2),z(1)=z(2)=z<t但是预测的位置不同,zt(1)=i=j=zt(2) ,如果用寻常的transformer,对于这两个位置的条件概率是相同的。
p
θ
(
X
i
=
x
∣
x
z
<
t
t
)
⏟
z
t
(
1
)
=
i
,
z
<
t
(
1
)
=
z
<
t
=
p
θ
(
X
j
=
x
∣
x
z
<
t
)
⏟
z
t
(
1
)
=
j
,
z
<
t
(
2
)
=
z
<
t
=
exp
(
e
(
x
)
⊤
h
(
x
z
<
t
)
)
∑
x
′
exp
(
e
(
x
′
)
⊤
h
(
x
z
<
t
)
)
\underbrace{p_{\theta}\left(X_{i}=x \mid \mathbf{x}_{\mathbf{z}_{<t} t}\right)}_{z_{t}^{(1)}=i, \mathbf{z}_{<t}^{(1)}=\mathbf{z}_{<t}}=\underbrace{p_{\theta}\left(X_{j}=x \mid \mathbf{x}_{\mathbf{z}_{<t}}\right)}_{z_{t}^{(1)}=j, \mathbf{z}_{<t}^{(2)}=\mathbf{z}_{<t}}=\frac{\exp \left(e(x)^{\top} h\left(\mathbf{x}_{\mathbf{z}_{<t}}\right)\right)}{\sum_{x^{\prime}} \exp \left(e\left(x^{\prime}\right)^{\top} h\left(\mathbf{x}_{\mathbf{z}_{<t}}\right)\right)}
zt(1)=i,z<t(1)=z<t
pθ(Xi=x∣xz<tt)=zt(1)=j,z<t(2)=z<t
pθ(Xj=x∣xz<t)=∑x′exp(e(x′)⊤h(xz<t))exp(e(x)⊤h(xz<t))
由于
h
θ
(
x
z
<
t
)
h_{\theta}(x_{z<t})
hθ(xz<t)不取决于它将预测的位置,因此本文提出一种新的表示会关注位置信息
g
θ
(
x
z
<
t
,
z
t
)
g_{\theta}(x_{z<t},z_{t})
gθ(xz<t,zt)
因此预测公式变化为:
p
θ
(
X
z
t
=
x
∣
x
z
<
t
)
=
exp
(
e
(
x
)
⊤
g
θ
(
x
z
<
t
,
z
t
)
)
∑
x
′
exp
(
e
(
x
′
)
⊤
g
θ
(
x
z
<
t
,
z
t
)
)
p_{\theta}\left(X_{z_{t}}=x \mid \mathbf{x}_{z_{<t}}\right)=\frac{\exp \left(e(x)^{\top} g_{\theta}\left(\mathbf{x}_{\mathbf{z}_{<t}}, z_{t}\right)\right)}{\sum_{x^{\prime}} \exp \left(e\left(x^{\prime}\right)^{\top} g_{\theta}\left(\mathbf{x}_{\mathbf{z}_{<t}}, z_{t}\right)\right)}
pθ(Xzt=x∣xz<t)=∑x′exp(e(x′)⊤gθ(xz<t,zt))exp(e(x)⊤gθ(xz<t,zt))
如何建立
g
θ
g_{\theta}
gθ存在两个矛盾的点在标准的Transformer结构:(1)预测token
x
z
t
x_{z_t}
xzt应该只使用
z
t
z_t
zt的位置信息而不使用上下文信息。(2)当预测其他位置tokens时,
g
θ
g_{\theta}
gθ应该能够使用
x
z
t
x_{z_{t}}
xzt的内容信息。因此本文通过两个注意力流来实现以上要求。
双流注意力计算过程:
初始化:
∀
t
=
1
,
…
,
T
:
h
t
=
e
(
x
t
)
and
g
t
=
w
\forall t=1, \ldots, T: \quad h_{t}=e\left(x_{t}\right) \quad \text { and } \quad g_{t}=w
∀t=1,…,T:ht=e(xt) and gt=w
中间层:
∀
t
=
1
,
…
,
T
:
h
^
z
t
(
m
)
=
LayerNorm
(
h
z
t
(
m
−
1
)
+
RelAttn
(
h
z
t
(
m
−
1
)
,
[
h
~
(
m
−
1
)
,
h
z
≤
t
(
m
−
1
)
]
)
)
h
z
t
(
m
)
=
LayerNorm
(
h
^
z
t
(
m
)
+
PosFF
(
h
^
z
t
(
m
)
)
)
g
^
z
t
(
m
)
=
LayerNorm
(
g
z
t
(
m
−
1
)
+
RelAttn
(
g
z
t
(
m
−
1
)
,
[
h
~
(
m
−
1
)
,
h
z
<
t
(
m
−
1
)
]
)
)
g
z
t
(
m
)
=
LayerNorm
(
g
^
z
t
(
m
)
+
PosFF
(
g
^
z
t
(
m
)
)
)
\begin{aligned} \forall t=1, \ldots, T: \quad & \hat{h}_{z_{t}}^{(m)}=\operatorname{LayerNorm}\left(h_{z_{t}}^{(m-1)}+\operatorname{RelAttn}\left(h_{z_{t}}^{(m-1)},\left[\tilde{\mathbf{h}}^{(m-1)}, \mathbf{h}_{\mathbf{z}_{\leq t}}^{(m-1)}\right]\right)\right) \\ h_{z_{t}}^{(m)} &=\operatorname{LayerNorm}\left(\hat{h}_{z_{t}}^{(m)}+\operatorname{PosFF}\left(\hat{h}_{z_{t}}^{(m)}\right)\right) \\ \hat{g}_{z_{t}}^{(m)} &=\operatorname{LayerNorm}\left(g_{z_{t}}^{(m-1)}+\operatorname{RelAttn}\left(g_{z_{t}}^{(m-1)},\left[\tilde{\mathbf{h}}^{(m-1)}, \mathbf{h}_{\mathbf{z}_{<t}}^{(m-1)}\right]\right)\right) \\ g_{z_{t}}^{(m)} &=\operatorname{LayerNorm}\left(\hat{g}_{z_{t}}^{(m)}+\operatorname{PosFF}\left(\hat{g}_{z_{t}}^{(m)}\right)\right) \end{aligned}
∀t=1,…,T:hzt(m)g^zt(m)gzt(m)h^zt(m)=LayerNorm(hzt(m−1)+RelAttn(hzt(m−1),[h~(m−1),hz≤t(m−1)]))=LayerNorm(h^zt(m)+PosFF(h^zt(m)))=LayerNorm(gzt(m−1)+RelAttn(gzt(m−1),[h~(m−1),hz<t(m−1)]))=LayerNorm(g^zt(m)+PosFF(g^zt(m)))
预测函数:
p
θ
(
X
z
t
=
x
∣
x
z
<
t
)
=
exp
(
e
(
x
)
⊤
g
z
t
(
M
)
)
∑
x
′
exp
(
e
(
x
′
)
⊤
g
z
t
(
M
)
)
p_{\theta}\left(X_{z_{t}}=x \mid \mathbf{x}_{z_{<t}}\right)=\frac{\exp \left(e(x)^{\top} g_{z_{t}}^{(M)}\right)}{\sum_{x^{\prime}} \exp \left(e\left(x^{\prime}\right)^{\top} g_{z_{t}}^{(M)}\right)}
pθ(Xzt=x∣xz<t)=∑x′exp(e(x′)⊤gzt(M))exp(e(x)⊤gzt(M))
部分预测
为了提高模型的收敛速度,本文将z拆解为非目标子序列
z
≤
c
z \leq c
z≤c和目标子序列
z
>
c
z>c
z>c,目标是最大化以非目标子序列为条件的目标子序列的对数似然。
max
θ
E
z
∼
Z
T
[
log
p
θ
(
x
z
>
c
∣
x
z
≤
c
)
]
=
E
z
∼
Z
T
[
∑
t
=
c
+
1
∣
z
∣
log
p
θ
(
x
z
t
∣
x
z
<
t
)
]
\max _{\theta} \quad \mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_{T}}\left[\log p_{\theta}\left(\mathbf{x}_{\mathbf{z}_{>c}} \mid \mathbf{x}_{\mathbf{z}_{\leq c}}\right)\right]=\mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_{T}}\left[\sum_{t=c+1}^{|\mathbf{z}|} \log p_{\theta}\left(x_{z_{t}} \mid \mathbf{x}_{\mathbf{z}_{<t}}\right)\right]
θmaxEz∼ZT[logpθ(xz>c∣xz≤c)]=Ez∼ZT⎣⎡t=c+1∑∣z∣logpθ(xzt∣xz<t)⎦⎤
2.6 Discussion
BERT和XLNet的虽然都是预测一部分数据,但是它们是有区别,例如:
第三遍
附件:
注意力分数图:
本文认为以上几种注意力分数更加利于模型更快地学习序列中的信息。
小结:
- XLNet之所以被提出来,是因为希望找到一个语言模型能够兼顾AR语言模型和AE语言模型的优点,同时避免它们的缺点;然后想到了使用排列语言模型,不仅避免了BERT的独立性假设、pretrain-finetune差异、AR模型的单向编码局限,而且吸纳了AR模型的乘积规则的联合概率分布建模以及BERT的双向上下文编码能力。
- 在实现排列语言模型时,作者发现传统的transformer不能区分位置上的区别,从而提出了双流注意力模型,巧妙地将内容和位置注意力分开,使模型不仅吸收了上下文信息而且区分了位置关系。