摘要
神经机器翻译系统已成为语法错误纠正(GEC)任务的最新方法。在本文中,我们通过将不用修改的单词从源句子复制到目标句子,为GEC任务提出了一种复制增强的体系结构。由于GEC缺乏足够的带标签训练数据来实现高精度。我们使用未标注的“十亿基准”数据以去噪自编码器的方法对复制增强的架构进行了预训练,并在完全预训练的模型与部分预训练的模型之间进行了比较。这是第一次在GEC任务上尝试从源上下文复制单词并完全预训练序列到序列模型。此外,我们为GEC任务添加了字符级和句子级多任务学习。CoNLL-2014测试集的评估结果表明,我们的方法大大优于最近发布的所有最新结果。代码和经过预训练的模型在https://github.com/zhawe01/fairseq-gec上发布。
1.介绍
语法错误纠正(GEC)是检测和纠正文本中的语法错误的任务。由于英语语言学习者的数量不断增加,在过去的十年中,人们对英语GEC的关注日益增加。
以下句子是GEC任务的示例,其中粗体字需要更正为其副词形式。
尽管机器翻译系统已成为GEC的最新方法,但GEC与翻译不同,因为它仅更改源句子的几个单词。在表1中,我们列出了三个不同数据集中目标句子与源句子不变词的比率。我们可以看到,可以从源句子中复制超过80%的单词。
考虑到GEC任务中未更改单词的百分比很高,因此需要更合适的神经网络结构。我们通过使它能够直接从源句子中复制未更改的单词和词汇外单词来增强当前的神经网络结构,就像人类在纠正句子时所做的一样。据我们所知,这是在GEC上首次使用神经复制机制。
有了大规模的训练语料库,包括NUS学习者英语语料库(NUCLE)和大规模的Lang-8语料库,已经取得了进展。但是,即使有数百万个带标签的句子,由于缺少足够的带标签的训练数据来实现高精度,自动GEC仍然具有挑战性。
为了缓解标记数据不足的问题,我们提出了一种利用未标注数据的方法。具体方法是通过去噪自编码器的训练方法,用未标注的十亿基准预训练我们的复制增强模型。
我们还为复制增强的网络结构添加了两个多任务,包括字符级标记任务和句子级复制任务,以进一步提高GEC任务的性能。
复制机制是第一次在GEC任务上使用,该机制之前一直是在文本摘要任务上使用的。在GEC任务上,由于复制机制可以直接从源输入字符中复制未更改的单词和单词外的单词,因此可以用很小的词汇量训练模型。此外,通过将工作的恒定部分与GEC任务分开,复制使网络结构的生成部分更加强大。在本文的实验部分,我们证明了复制不仅仅能够解决“UNK问题”,而且还可以使GEC编辑的更多内容。
通过在CoNLL 2014测试数据集上获得56.42 F0.5分数,副本增强的体系结构在GEC任务上胜过所有其他体系结构。 结合去噪自动编码器和多任务功能,我们的体系结构在CoNLL-2014测试数据集上达到了61.15 F0.5,比最新系统提高了4.9 F0.5分数。
总而言之,我们的主要贡献如下:(1)针对GEC问题,我们提出了一种更合适的神经网络结构,该结构可以直接从源输入字符中复制未更改的单词和词外单词。(2)我们以去噪自编码器的方法对带有大规模未标注数据的复制增强模型进行预训练,从而缓解了标注训练语料不足的问题。(3)我们在CoNLL-2014测试集上评估了该结构,这表明我们的方法在很大程度上优于最近发布的所有最新方法。
2.方法
2.1 基本结构
通过将第二语言学习者所写的句子视为源句子,并将经过语法校正的句子视为目标句子,神经机器翻译系统已成为语法错误纠正(GEC)的最新方法。其中,翻译模型学习从源句子到目标句子的映射。
我们使用基于注意力的Transformer架构作为基准。Transformer用L个相同的块堆栈对源语句进行编码,并且它们中的每个对源字符应用多头自注意,然后是按位置的前馈层,以产生其上下文感知的隐藏状态。解码器具有与编码器相同的架构,将L个相同的多头注意块与目标隐藏状态的前馈网络堆叠在一起。但是,解码器模块在编码器的隐藏状态上有一个额外的注意层。
模型训练目标是在给定源单词序列
(
x
1
,
.
.
.
,
x
N
)
(x_1,...,x_N)
(x1,...,xN)的情况下,预测目标单词标记序列
(
y
1
,
.
.
.
,
y
T
)
(y_1,...,y_T)
(y1,...,yT)中由
t
t
t索引的下一个单词,如下所示:
h
1..
N
s
r
c
=
e
n
c
o
d
e
r
(
L
s
r
c
x
1...
N
)
(1)
h_{1..N}^{src}=encoder(L^{src}x_{1...N})\tag{1}
h1..Nsrc=encoder(Lsrcx1...N)(1)
h
t
=
d
e
c
o
d
e
r
(
L
t
r
g
y
t
−
1...1
,
h
1...
N
s
r
c
)
(2)
h_t=decoder(L^{trg}y_{t-1...1},h^{src}_{1...N})\tag{2}
ht=decoder(Ltrgyt−1...1,h1...Nsrc)(2)
P
t
(
w
)
=
s
o
f
t
m
a
x
(
L
t
r
g
h
t
)
(3)
P_t(w)=softmax(L^{trg}h_t)\tag{3}
Pt(w)=softmax(Ltrght)(3)
矩阵
L
∈
R
d
x
×
∣
V
∣
L∈R^{d_x×|V|}
L∈Rdx×∣V∣是单词嵌入矩阵,其中
d
x
d_x
dx是单词嵌入维数,
∣
V
∣
|V|
∣V∣是词汇量的大小。
h
1...
N
s
r
c
h^{src}_{1...N}
h1...Nsrc是编码器的隐藏状态,而
h
t
h_t
ht是下一个目标单词的隐藏状态。对目标隐藏状态和嵌入矩阵之间的内积进行softmax运算,得到下一个词的生成概率分布。
l
c
e
=
−
∑
t
=
1
T
l
o
g
(
p
t
(
y
t
)
)
(4)
l_{ce}=-\sum^T_{t=1}log(p_t(y_t))\tag{4}
lce=−t=1∑Tlog(pt(yt))(4)
每个训练样例的损失
l
c
e
l_{ce}
lce是解码期间每个位置的交叉熵损失的累积。
2.2 复制机制
事实证明,复制机制对文本摘要任务和语义解析任务有效。在本文中,我们首次将复制机制应用于GEC任务,使该模型能够从源语句复制字符。
如图1所示,除了通过固定词汇表生成单词外,我们的复制增强网络还允许从源输入字符中复制单词。由等式5定义,最终概率分布
P
t
P_t
Pt是生成分布
P
t
g
e
n
P^{gen}_t
Ptgen和复制分布
P
t
c
o
p
y
P^{copy}_t
Ptcopy的混合。最终,固定词汇表被源句子中出现的所有单词所扩展。在每个时刻
t
t
t,复制和生成之间的平衡由平衡因子
α
t
c
o
p
y
∈
[
0
,
1
]
α^{copy}_t∈[0,1]
αtcopy∈[0,1]控制。
p
t
(
w
)
=
(
1
−
α
t
c
o
p
y
)
∗
p
t
g
e
n
(
w
)
+
(
α
t
c
o
p
y
)
∗
p
t
c
o
p
y
(
w
)
(5)
p_t(w)=(1-\alpha^{copy}_t)*p^{gen}_t(w)+(\alpha^{copy}_t)*p^{copy}_t(w)\tag{5}
pt(w)=(1−αtcopy)∗ptgen(w)+(αtcopy)∗ptcopy(w)(5)
新结构通过生成目标隐藏状态,将生成概率分布作为基本模型输出。通过在解码器的当前隐藏状态
h
t
r
g
h^{trg}
htrg和编码器的隐藏状态
H
s
r
c
H^{src}
Hsrc使用新的注意力分布计算源输入字符的复制分数。复制注意力的计算与公式6、7、8中列出的编码器-解码器注意力相同:
q
t
,
K
,
V
=
h
t
t
r
g
W
q
T
,
H
s
r
c
W
k
T
,
H
s
r
c
W
v
T
(6)
q_t,K,V=h^{trg}_tW^T_q,H^{src}W^T_k,H^{src}W^T_v\tag{6}
qt,K,V=httrgWqT,HsrcWkT,HsrcWvT(6)
A
t
=
q
t
T
K
(7)
A_t=q^T_tK\tag{7}
At=qtTK(7)
P
t
c
o
p
y
(
w
)
=
s
o
f
t
m
a
x
(
A
t
)
(8)
P^{copy}_t(w)=softmax(A_t)\tag{8}
Ptcopy(w)=softmax(At)(8)
q
t
q_t
qt,
K
K
K和
V
V
V是计算注意力分布和复制隐藏状态所需的query,key和value。我们使用归一化的注意力分布作为复制分数,并使用复制隐藏状态来估计平衡因子
α
t
c
o
p
y
α^{copy}_t
αtcopy。
α
t
c
o
p
y
=
s
i
g
m
o
i
d
(
W
T
∑
(
A
t
T
⋅
V
)
)
(9)
\alpha^{copy}_t=sigmoid(W^T\sum(A^T_t\cdot V))\tag{9}
αtcopy=sigmoid(WT∑(AtT⋅V))(9)
损失函数如公式4中所述,但其是相对于公式5中给出的混合概率分布
y
t
y_t
yt而计算的。
3.预训练
缺乏大量训练数据时,预训练在许多任务中显示出有用的作用。在本节中,我们建议对自动编码器进行去噪,从而可以使用大规模未标注的语料库对模型进行预训练。我们还介绍了部分预训练方法,以与去噪自编码器进行比较。
3.1 去噪自编码器
去噪自编码器通常用于模型初始化,以从输入中提取和选择特征。BERT使用了预训练的双向Transformer模型,并且在许多NLP任务上都大大优于现有系统。与去噪自编码器相比,BERT仅预测15%的MASK字,而不重构整个输入。BERT去噪一个句子中15%的字符,这过将其中10%的字符替换为随机单词,将10%的字符保持不变,并用[MASK]替换80%的字符来实现。
受BERT和去噪自编码器的启发,我们通过对十亿单词基准进行噪声化来训练我们的复制增强序列到序列模型,这是一个大型的句子级英语语料库。在我们的实验中,损坏的句子对是通过以下过程生成的。
- 删除每个字符的概率为10%。
- 添加每个字符的概率为10%。
- 从词汇表中以概率10%随机选取单词来替换源语句单词。
- 通过对单词的位置添加正态分布偏差来对单词进行混洗,然后将单词按校正后的位置重新排序,标准偏差为0.5。
借助大量的人工训练数据,序列到序列模型通过信任大多数输入标记(但并非总是)来学习重建输入句子。由加噪过程生成的句子对在某种程度上是GEC句子对,因为它们都通过删除,添加,替换或混洗某些字符将非“完美”句子翻译为“完美”句子。
3.2 预训练解码器
在自然语言处理(NLP)中,预训练模型的某个部分还可以提高许多任务的性能。Word2Vec和GloVe进行了词嵌入的预训练。 CoVe对编码器进行了预训练。ELMo预训练了深度双向架构等。在所有NLP任务中,它们都被证明是有效的。
与(Ramachandran等人,2016; Junczys-Dowmunt等人,2018)相同,我们尝试将复制增强的序列到序列结构的解码器作为典型的语言模型进行预训练。我们使用预训练的参数初始化GEC模型的解码器,同时随机初始化其他参数。由于我们在编码器和解码器之间使用绑定词嵌入,因此模型的大多数参数都经过了预训练,除了编码器的参数,编码器-解码器的注意力和复制注意力之外。
4.多任务学习
多任务学习(MTL)通过联合训练多个相关任务来解决问题,并在许多任务中显示出其优势,从计算机视觉到NLP。在本文中,我们探索了改善GEC性能的两个不同任务。
4.1 token级标注任务
我们为源句子提出一个token级的标注任务,并为源句子中的每个字符分配一个标签,指示该字符是对还是错。
假设每个源字符
x
i
x_i
xi可以与目标字符
y
j
y_j
yj对齐,我们定义如果
x
i
=
y
j
x_i=y_j
xi=yj则源字符正确,否则定义错误。线性变换后,通过使编码器的最终状态
h
i
s
r
c
h^{src}_i
hisrc经过softmax来预测每个字符的标签,如公式10所示。
p
(
l
a
b
e
l
i
∣
x
1...
N
)
=
s
o
f
t
m
a
x
(
W
T
h
i
s
r
c
)
(10)
p(label_i|x_{1...N})=softmax(W^Th^{src}_i)\tag{10}
p(labeli∣x1...N)=softmax(WThisrc)(10)
token级的标注任务显式地提高了输入字符对编码器的正确性,以后可以由解码器使用。
4.3 句子级复制任务
句子级复制任务背后的主要动机是,当输入句子看起来完全正确时,使模型进行更多复制。
在训练期间,我们将相等数量的采样正确句子对和已编辑句子对发送给模型。输入正确的句子时,我们将注意力从编码器的输出上移除。如果没有编码器/解码器注意力,则生成工作会变得很困难。结果,模型的复制部分将针对正确的句子而增强。