你的英语不行!微软亚研自动语法纠错系统达到人类水平

选自arXiv

作者:Tao Ge, Furu Wei, Ming Zhou

机器之心编译

因为 seq2seq 模型在语法纠错上存在缺陷,微软亚洲研究院的自然语言计算团队近日提出了流畅度提升学习和推断机制,用于改善 seq2seq 模型的语法纠错性能。实验表明,改进后的模型取得了当前最佳性能,并首次在两个基准上都达到了人类水平。

用于语法纠错(GEC)的序列到序列(seq2seq)模型(Cho et al., 2014; Sutskever et al., 2014)近年来吸引了越来越多的注意力(Yuan & Briscoe, 2016; Xie et al., 2016; Ji et al., 2017; Schmaltz et al., 2017; Sakaguchi et al., 2017; Chollampatt & Ng, 2018)。但是,大部分用于 GEC 的 seq2seq 模型存在两个缺陷。第一,seq2seq 模型的训练过程中使用的纠错句对有限,如图 1(a)所示。受训练数据的限制,具备数百万参数的模型也可能无法实现良好的泛化。因此,如果一个句子和训练实例有些微的不同,则此类模型通常无法完美地修改句子,如图 1(b)所示。第二,seq2seq 模型通常无法通过单轮 seq2seq 推断完美地修改有很多语法错误的句子,如图 1(b)和图 1(c)所示,因为句子中的一些错误可能使语境变得奇怪,会误导模型修改其他错误。

图 1:(a)纠错句对;(b)如果句子与训练数据有些微的不同,则模型无法完美地修改句子;(c)单轮 seq2seq 推断无法完美地修改句子,但多轮推断可以。

为了解决上述限制,微软研究者提出一种新型流畅度提升学习和推断机制,参见图 2。

对于流畅度提升学习,seq2seq 不仅使用原始纠错句对来训练,还生成流畅度较差的句子(如来自 n-best 输出的句子),将它们与训练数据中的正确句子配对,从而构建新的纠错句对,前提是该句子的流畅度低于正确句子,如图 2(a)所示。研究者将生成的纠错句对称为流畅度提升句对(fluency boost sentence pair),因为目标端句子的流畅度总是会比源句子的流畅度高。训练过程中生成的流畅度提升句对将在后续的训练 epoch 中作为额外的训练实例,使得纠错模型可以在训练过程中看到具有更多语法错误的句子,并据此提升泛化能力。

对于模型推断,流畅度提升推断机制允许模型以多轮推断的方式渐进地修改句子,只要每一次提议的编辑能够提升语句的流畅度,如图 2(b) 所示。对于有多个语法错误的语句,一些错误将优先得到修正。而经修正的部分能让上下文更加清晰,这对模型接下来修改其它错误非常有帮助。此外,由于这种任务的特殊性,我们可以重复编辑输出的预测。微软进一步提出了一种使用两个 seq2seq 模型的往返纠错方法,其解码顺序是从左到右和从右到左的 seq2seq 模型。又因为从左到右和从右到左的解码器使用不同的上下文信息解码序列,所以它们对于特定的错误类型有独特的优势。往返纠错可以充分利用它们的优势并互补,这可以显著提升召回率。

图 2:流畅度提升学习和推断机制:(a)给出一个训练实例(即纠错句对),流畅度提升学习机制在训练过程中从 seq2seq 的 n-best 输出中构建多个流畅度提升句对。流畅度提升句对将在后续的训练 epoch 中用作训练实例,帮助扩展训练集,帮助模型学习;(b)流畅度提升推断机制允许纠错模型通过多轮 seq2seq 推断渐进式地修改句子,只要句子的流畅度一直能够提升。

结合流畅度提升学习和推断与卷积 seq2seq 模型,微软亚洲研究院取得了当前最佳的结果,这使其成为首个在两个基准上都达到人类水平的 GEC 系统。

论文:REACHING HUMAN-LEVEL PERFORMANCE IN AUTOMATIC GRAMMATICAL ERROR CORRECTION: AN EMPIRICAL STUDY

论文地址:https://arxiv.org/pdf/1807.01270.pdf

摘要:神经序列到序列(seq2seq)方法被证明在语法纠错(GEC)中有很成功的表现。基于 seq2seq 框架,我们提出了一种新的流畅度提升学习和推断机制。流畅度提升学习可以在训练期间生成多个纠错句对,允许纠错模型学习利用更多的实例提升句子的流畅度,同时流畅度提升推断允许模型通过多个推断步骤渐进地修改句子。结合流畅度提升学习和推断与卷积 seq2seq 模型,我们的方法取得了当前最佳的结果:分别在 CoNLL-2014 标注数据集上得到 75.02 的 F0.5 分数,在 JFLEG 测试集上得到 62.42 的 GLEU 分数,这使其成为首个在两个基准数据集上都达到人类水平(CoNLL72.58,JFLEG62.37)的 GEC 系统。

2 背景:神经语法纠错

典型的神经 GEC 方法使用带有注意力的编码器-解码器框架将原始句子编辑成语法正确的句子,如图 1(a)所示。给出一个原始句子

及其纠错后的句子

,其中

分别是句子 x^r 和 x^c 的第 M 和第 N 个单词,则纠错 seq2seq 模型通过最大似然估计(MLE)从纠错句对中学习概率映射 P(x^c |x^r ),进而学习模型参数 Θ_crt 以最大化以下公式:

其中 S* 表示纠错句对集。

对于模型推断,通过束搜索输出句子选择

,这一过程需要最大化下列公式:

3 流畅度提升学习

用于 GEC 的传统 seq2seq 模型仅通过原始纠错句对学习模型参数。然而,这样的纠错句对的可获得性仍然不足。因此,很多神经 GEC 模型的泛化性能不够好。

幸运的是,神经 GEC 和神经机器翻译(NMT)不同。神经 GEC 的目标是在不改变原始语义的前提下提升句子的流畅度;因此,任何满足这个条件(流畅度提升条件)的句子对都可以作为训练实例。

在这项研究中,研究者将 f(x) 定义为句子 x 的流畅度分数。

其中,P(x_i | x_<i)是给定上下文 x_<i 下 x_i 的概率,由语言模型计算得到,|x| 是句子 x 的长度。H(x) 是句子 x 的交叉熵,范围为 [0, +∞)。因此 f(x) 的范围为 (0, 1]。

流畅度提升学习的核心思想是生成流畅度提升的句对,其在训练期间满足流畅度提升条件,如图 2(a)所示,因此这些句子对可以进一步帮助模型学习。

在这一部分中,研究者展示了三种流畅度提升策略:反向提升(back-boost)、自提升(self-boost)和双向提升(dual-boost),它们以不同的方式生成流畅度提升句子对,如图 3 所示。

图 3:三种流畅度提升学习策略:(a)反向提升,(b)自提升,(c)双向提升。它们都能生成流畅度提升句对(虚线框中的句对),帮助训练过程中的的模型学习。图中的数字是对应句子的流畅度分数。

4 流畅度提升推断

4.1 多轮纠错

正如在第一节中讨论的,一些具有多个语法错误的语句通常不能通过一般的 Seq2Seq 推断(单轮推断)得到完美的修正。幸运的是,神经 GEC 与 NMT 不同,它的源语言与目标语言相同。这一特征允许我们通过多轮模型推断多次编辑语句,也就产生了流畅度提升推断过程。如图 2(b) 所示,流畅度提升推断允许通过多轮 Seq2Seq 推断渐进式地编辑语句,只要每一次提议的编辑能够提升语句的流畅度。具体来说,纠错 Seq2Seq 模型首先将原语句 x^r 作为输入,并输出假设 x^o1。然后流畅度提升推断将采用 x^o1 作为输入以生成下一个输出 x^o2,而不是将 x^o1 直接作为最终的预测。除非 x^ot 不再能提升 x^ot-1 的流畅度,否则这一过程就不会终止。

4.2 往返纠错

基于多轮纠错的思路,研究者进而提出了一个进阶流畅度提升推断方法:往返纠错。该方法不使用 4.1 中介绍的 seq2seq 模型渐进性地修改句子,而是通过一个从右到左和一个从左到右的 seq2seq 模型依次修改句子,如图 4 所示。

图 4:往返纠错:某些类型的错误(例如,冠词错误)由从右到左的 seq2seq 模型会更容易纠错,而某些错误(例如主谓一致)由从左到右的 seq2seq 模型更容易纠错。往返纠错使得二者互补,相对于单个模型能纠正更多的语法错误。

5 实验

表 2 展示了 GEC 系统在 CoNLL 和 JFLEG 数据集上的结果。由于使用了更大规模的训练数据,因此即使是基础卷积 seq2seq 模型也超越了多数之前的 GEC 系统。流畅度提升学习进一步提升了基础卷积 seq2seq 模型的性能。

表 2:GEC 系统在 CoNLL 和 JFLEG 数据集上的结果对比。

如表 3 所示,流畅度提升学习提升了基础卷积 seq2seq 模型所有层面的表现(精度、召回率、F0.5 和 GLEU),表明流畅度提升学习确实有助于用于 GEC 的 seq2seq 模型的训练。

表 3:性能最佳的 GEC 系统在 CoNLL 和 JFLEG 数据集上的评估结果分析。红色字体的结果超越了人类水平。

表 4:有/没有流畅度提升学习的卷积 seq2seq 模型在 CoNLL-2014 数据集的每个错误类型上的召回率对比。

表 5:从左到右和从右到左的 seq2seq 模型对 CoNLL-2014 中每种错误类型的召回率

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT派

干货 | 8个方法解决90%的NLP问题

每一个机器学习问题都始于数据,比如一组邮件、帖子或是推文。文本信息的常见来源包括:

1073
来自专栏张耀琦的专栏

【机器学习入门系列】Regression 回归:案例研究

本文通过预测 Pokemon Go 的 Combat Power (CP) 值的案例介绍机器学习的回归模型,举例介绍了操作步骤,通过方程的好坏最终确定了最好的损...

1.3K1
来自专栏机器之心

一周论文 | 基于知识图谱的问答系统关键技术研究#4

作者丨崔万云 学校丨复旦大学博士 研究方向丨问答系统,知识图谱 领域问答的基础在于领域知识图谱。对于特定领域,其高质量、结构化的知识往往是不存在,或者是极少的。...

5288
来自专栏IT派

推荐|14种模型设计帮你改进你的卷积神经网络(CNN)!

如果你觉得好的话,不妨分享到朋友圈。 摘要: 这14 种原创设计模式可以帮助没有经验的研究者去尝试将深度学习与新应用结合,对于那些没有机器学习博士学位的人来说...

3606
来自专栏CVer

[计算机论文速递] 2018-03-23

通知:这篇文章有15篇论文速递信息,涉及目标检测、目标跟踪、姿态估计、SLAM、GAN、行为识别、去雾、网络优化等方向 创办CVer公众号,渐渐半个多月了,很感...

41017
来自专栏机器学习之旅

应用:数据预处理-异常值处理

举个例子:以下一组用户用车月花费:100,110,90,80,200,120,115,月花费的均值在116左右,标准差在39左右,理论上用户的分布应该在116±...

1052
来自专栏机器学习算法与Python学习

干货 | 8个方法解决90%的NLP问题

1463
来自专栏PPV课数据科学社区

数据挖掘分类、聚类算法学习摘要

一、有关数据挖掘 1.1 数据挖掘相关概念与定义 数据挖掘有广义和狭义之分。广义的数据挖掘,指从大量的数据中发现隐藏的、内在的和有用的知识或信息的过程。狭义的数...

3986
来自专栏AI科技评论

学界 | 腾讯AI Lab解读多篇ACL 2018入选长文

本文转载自腾讯 AI Lab,微信号 tencent_ailab。本文将详解 2018 年 NLP 领域顶级学术会议 ACL 上,腾讯AI Lab入选 5 篇文...

1382
来自专栏AI科技大本营的专栏

八大深度学习最佳实践

翻译 | AI科技大本营 参与 | 刘畅 [AI 科技大本营导读]2017年,许多的人工智能算法得到了实践和应用。名博Hack Noon作者 Brian Muh...

36212

扫码关注云+社区

领取腾讯云代金券