论文笔记--XLNet: Generalized Autoregressive Pretraining for Language Understanding
1. 文章简介
- 标题:XLNet: Generalized Autoregressive Pretraining for Language Understanding
- 作者:Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le
- 日期:2019
- 期刊:NeurIPS
2. 文章导读
2.1 概括
BERT[1]和GPT[2]模型均有着各自的优势和劣势:BERT属于自编码(AE)类模型,采用MLM和NSP进行预训练,得到的模型适用于处理上下文依赖的下游任务,如文本相似度分析等,但1) MLM未考虑到多个[MASK]之间的依赖性,从而模型可能会有偏差 2) 下游任务中无[MASK],从而造成预训练和微调任务的差异性;GPT属于自回归/生成式(AR)模型,即依赖上文生成当前token,生成式模型可以避免BERT的上述问题,但模型是单向的,无法考虑到上下文依赖。
为了解决上述问题,本文提出了XLNET(transformer-XL NETwork),可以将AR和AE类任务的优点结合,在自然语言理解、文本分类、文档排序等任务上均超过了BERT的表现。
文章整体架构如下
2.2 文章重点技术
2.2.1 排列语言模型 Permutation Language Modeling
为了充分结合AR和AE的优点,文章提出了Permutation Language Modeling(PLM)目标,从而令生成式模型可以捕捉到双向上下文依赖。具体来说,给定长度为
T
T
T的序列
x
=
(
x
1
,
…
,
x
T
)
x=(x_1, \dots, x_T)
x=(x1,…,xT),令
Z
T
=
1
到
T
的所有排列组合
Z_T = {1到T的所有排列组合}
ZT=1到T的所有排列组合表示序列
x
x
x的可能的下标顺序,则对任意
z
⃗
=
(
z
1
,
…
,
z
T
)
∈
Z
T
\vec{z} =(z_1, \dots, z_T)\in Z_T
z=(z1,…,zT)∈ZT,令
Z
⃗
<
t
=
(
z
t
,
…
,
z
t
−
1
)
\vec{Z}_{<t} =(z_t, \dots, z_{t-1})
Z<t=(zt,…,zt−1) 表示
t
t
t时刻前的下标序列。文章提出的PLM目标为
max
θ
E
z
⃗
∈
Z
T
[
∑
t
=
1
T
log
p
θ
(
x
z
t
∣
x
z
⃗
<
t
)
]
\max_{\theta} \mathbb{E}_{\vec{z}\in Z_T} \left[\sum_{t=1}^T \log p_{\theta} (x_{z_t}|x_{\vec{z}_{<t}})\right]
θmaxEz∈ZT[t=1∑Tlogpθ(xzt∣xz<t)],即考虑所有不同的下标顺序的期望最大值,每个顺序下对应的目标函数即GPT的生成式目标函数:给定
t
t
t时刻之前的下标,令当前
t
t
t时刻的输出概率最大化。
特别注意,这里的目标函数仅随机打乱了下标的顺序,而非序列的位置。在处理时,我们对每个原始序列的元素进行位置编码,无论该元素在哪个下标组合下,其位置编码仍是原始的位置编码。在微调阶段,我们只需保持原始的顺序即可。
例如,当原始句子为
y
=
(
I
,
l
o
v
e
,
p
l
a
y
i
n
g
,
t
h
e
,
p
i
a
n
o
)
y=(I, love, playing, the, piano)
y=(I,love,playing,the,piano)时,
Z
T
=
1
,
2
,
3
,
4
,
5
的所有排列
Z_T={1,2,3,4,5的所有排列}
ZT=1,2,3,4,5的所有排列,对
z
⃗
=
(
1
,
3
,
2
,
5
,
4
)
∈
Z
T
\vec{z}=(1,3,2,5,4)\in Z_T
z=(1,3,2,5,4)∈ZT,我们有
- t = 1 t=1 t=1时,最大化 p θ ( x z 1 = y z 1 ) = p θ ( x 1 = ’I’ ) p_{\theta}(x_{z_1}=y_{z_1}) = p_{\theta}(x_1=\text{'I'}) pθ(xz1=yz1)=pθ(x1=’I’)
- t = 2 t=2 t=2时,最大化 p θ ( x z 2 = y z 2 ) = p θ ( x 3 = ’playing’ ∣ x 1 = ’I’ ) p_{\theta}(x_{z_2}=y_{z_2}) = p_{\theta}(x_3=\text{'playing'}|x_1=\text{'I'}) pθ(xz2=yz2)=pθ(x3=’playing’∣x1=’I’)
- t = 3 t=3 t=3时,最大化 p θ ( x z 3 = y z 3 ) = p θ ( x 2 = ’love’ ∣ x 1 = ’I’ , x 3 = ’playing’ ) p_{\theta}(x_{z_3}=y_{z_3}) = p_{\theta}(x_2=\text{'love'}|x_1=\text{'I'},x_3=\text{'playing'}) pθ(xz3=yz3)=pθ(x2=’love’∣x1=’I’,x3=’playing’)
- t = 4 t=4 t=4时,最大化 p θ ( x z 4 = y z 4 ) = p θ ( x 5 = ’piano’ ∣ x 1 = ’I’ , x 3 = ’playing’ , x 2 = ’love’ ) p_{\theta}(x_{z_4}=y_{z_4}) = p_{\theta}(x_5=\text{'piano'}|x_1=\text{'I'},x_3=\text{'playing'},x_2=\text{'love'}) pθ(xz4=yz4)=pθ(x5=’piano’∣x1=’I’,x3=’playing’,x2=’love’)
-
t
=
5
t=5
t=5时,最大化
p
θ
(
x
z
5
=
y
z
5
)
=
p
θ
(
x
4
=
’the’
∣
x
1
=
’I’
,
x
3
=
’playing’
,
x
2
=
’love’
,
x
5
=
’piano’
)
p_{\theta}(x_{z_5}=y_{z_5}) = p_{\theta}(x_4=\text{'the'}|x_1=\text{'I'},x_3=\text{'playing'},x_2=\text{'love'},x_5=\text{'piano'})
pθ(xz5=yz5)=pθ(x4=’the’∣x1=’I’,x3=’playing’,x2=’love’,x5=’piano’)
可以看到,上述过程中在预测 x 2 x_2 x2的时候用到了其上下文信息。
但上述的目前函数使用标准SoftMax之后为 p θ ( X z t = x ∣ x z ⃗ < t ) = exp ( e ( x ) T h θ ( x z ⃗ < t ) ) ∑ x ′ exp ( e ( x ′ ) T h θ ( x z ⃗ < t ′ ) ) p_\theta(X_{z_t}=x|x_{\vec{z}_{<t}})=\frac{\exp(e(x)^Th_\theta(x_{\vec{z}_{<t}}))}{\sum_{x'}\exp(e(x')^Th_\theta(x'_{\vec{z}_{<t}}))} pθ(Xzt=x∣xz<t)=∑x′exp(e(x′)Thθ(xz<t′))exp(e(x)Thθ(xz<t)),其中 e ( x ) e(x) e(x)表示 x x x的词嵌入, h θ ( x ) h_\theta(x) hθ(x)表示 x x x经过Transformer的隐藏层输出。但注意到上式的 h θ ( x z ⃗ < t ) h_\theta(x_{\vec{z}_{<t}}) hθ(xz<t)与其预测的位置无关,即对任意的 z ⃗ \vec{z} z,只要当前时刻前的 z ⃗ < t \vec{z}_{<t} z<t相同,当前位置为任意下标预测每个token得到的概率均相同。为此,文章提出将target position也放入到目标函数中,即重写目标函数中的条件概率为 p θ ( X z t = x ∣ x z ⃗ < t ) = exp ( e ( x ) T g θ ( x z ⃗ < t , z t ) ) ∑ x ′ exp ( e ( x ′ ) T g θ ( x z ⃗ < t ′ , z t ) ) p_\theta(X_{z_t}=x|x_{\vec{z}_{<t}})=\frac{\exp(e(x)^Tg_\theta(x_{\vec{z}_{<t}}, z_t))}{\sum_{x'}\exp(e(x')^Tg_\theta(x'_{\vec{z}_{<t}}, z_t))} pθ(Xzt=x∣xz<t)=∑x′exp(e(x′)Tgθ(xz<t′,zt))exp(e(x)Tgθ(xz<t,zt)),其中 g θ ( x , z t ) g_\theta(x,z_t) gθ(x,zt)为以 x , z t x,z_t x,zt为自变量的函数。
2.2.2 双流自注意力机制Two-Stream Self-Attention
为了给出上述 g θ g_\theta gθ的合适表达,我们需要考虑其满足的特性:1)要预测当前的 x z t x_{z_t} xzt, g θ g_\theta gθ不能依赖 x z t x_{z_t} xzt,而只能依赖 x z ⃗ < t x_{\vec{z}_{<t}} xz<t和位置 z t z_t zt,否则问题会变成平凡的问题 2)为了预测 t t t时刻之后的状态, g θ g_\theta gθ要依赖当前的 x z t x_{z_t} xzt。这样则产生了矛盾。为了解决上述矛盾,文章提出采用两种隐藏层
- 内容表征(content representation, CR) h θ ( x z ⃗ < t ) : = h z t h_\theta(x_{\vec{z}_{<t}}):=h_{z_t} hθ(xz<t):=hzt,和Transformer中隐藏层一致,为了编码上下文和 x z t x_{z_t} xzt。CR初始化为 h i ( 0 ) = e ( x i ) h_i^{(0)} = e(x_i) hi(0)=e(xi)即每个单词的嵌入,对 j > 0 j>0 j>0,将上一层的 h i ( j − 1 ) h_i^{(j-1)} hi(j−1)作为注意力机制的输入得到新的 h i ( j ) h_i^{(j)} hi(j);
- 请求表征(query representation, QR)
g
θ
(
x
z
⃗
<
t
,
z
t
)
:
=
g
z
t
g_\theta(x_{\vec{z}<t}, z_t):=g_{z_t}
gθ(xz<t,zt):=gzt,无
x
z
t
x_{z_t}
xzt的信息,仅获取到当前时刻的上文内容(下标意义的)和当前时刻的位置。
g
i
(
0
)
g_i^{(0)}
gi(0)初始化为
ω
\omega
ω,一个可学习的向量,对
j
>
0
j>0
j>0,将上一层的
g
i
(
j
−
1
)
g_i^{(j-1)}
gi(j−1)作为注意力机制的输入得到新的
g
i
(
j
)
g_i^{(j)}
gi(j);
整体的训练方法参照文初的架构图。
2.2.3 Partial Prediction
为了减少计算量,文章提出将 z ⃗ \vec{z} z分成两部分 z ⃗ < = c \vec{z}_{<=c} z<=c和 z ⃗ > c \vec{z}_{>c} z>c,前者作为条件,而后者中的元素可作为target进行预测。为了控制预测的占比,给定超参数 K K K,保证大约 1 / K 1/K 1/K分词作为target被预测。
3. 文章亮点
文章提出了XLNET,结合了BERT和GPT的优势,在生成式模型的基础上通过不同的下标顺序融入了上下文信息。XLNET在包括SQuAD,RACE等多个下游任务上表现超越了BERT,预示着XLNET这种“排列式AR”获取可作为大模型训练的一个潜在方向。
4. 原文传送门
XLNet: Generalized Autoregressive Pretraining for Language Understanding
5. References
[1] 论文笔记–BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[2] 论文笔记–Improving Language Understanding by Generative Pre-Training