论文笔记:Improving Grammatical Error Correction Models with Purpose-Built Adversarial Examples

论文笔记:Improving Grammatical Error Correction Models with Purpose-Built Adversarial Examples

文章简要介绍

  1. 出处:EMNLP 2020
  2. 作者来自:复旦大学 Shanghai Key Laboratory of Intelligent Information Processing
  3. 解决问题:GEC模型的性能依赖于语料库大小和质量的问题
  4. 思路:受对抗训练启发,通过不断识别模型弱点生成对抗样本,并将生成的对抗样本添加到训练集中

Introduction

1.简要介绍GEC模型:Grammatical Error Correction(GEC)语法错误纠正模型,它以seq2seq模型为基础,输入为有语法错误的句子,输出为正确的句子。GEC的目的是为了识别和修正文本中的不同错误,例如:拼写错误,标点符号,单词选择错误等。

2.背景介绍:有多种语法错误可以发生在一个句子中,然而无法构造一个涵盖所有错误及其组合的语料库。GEC模型的性能依赖于语料库大小和质量。**语料库的内容是原目标对,即一个语法错误的句子和一个正确的句子是一对。**目前生成高质量训练样本的方法可以简单的分为两类:(1)direct noise 直接噪声:类似于文本编辑操作,如:替换、删除、插入等(2)back-translation:训练一个clean-to-noise模型来生成带有语法错误的句子。这种方法生成的带有语法错误的句子有较差的可读性,和人类生成的带有语法错误的句子不同。还有一个问题:这种back-translation 生成的句子只包含几种类型的错误,并且难以生成在训练集中未出现的错误。

缺少训练数据是GEC的瓶颈

在这里插入图片描述

3.主要贡献:(1)发现GEC模型中存在对抗样本(2)通过对GEC模型进行对抗攻击,可以生成有价值的带有语法错误的句子,可以利用生成的句子训练GEC模型,提升性能的同时提升鲁棒性。

Method

1.**Baseline Model:**根据之前提到的,可以把GEC模型视为一个MT(machine translation)模型,将ungrammatical的句子视为源句x,将正确的句子视为目标句子y,D={(x,y)}是GEC的的训练数据集。带有Attention机制的seq2seq模型不详细介绍。

2.对抗样本生成:GEC模型生成对抗样本分为两步。

(1)Identifying Weak Spots 识别GEC模型弱点

​ **利用位置分数找到会影响模型结果的token。**一个token的位置分数越低,说明模型在预测这个位置出现这个token的置信度越低,说明这种预测容易被更改。使用位置分数还帮助减少生成的伪数据中的偏差,在这种情况下,过多的语法错误是因为误用了介词或者冠词导致的。实验发现,位置分数较低的单词都是词汇,或者名词,动词,形容词以及副词,还有一些OOV词典外的单词。下面详细介绍怎么用位置分数识别一个句子的weak spots.
在 输 出 部 分 , 第 i 个 t o k e n 的 位 置 分 数 : g ( y i ) = P ( y i ∣ y 1 : i − 1 ) 在输出部分,第i个token的位置分数: g(yi) = P(yi|y1:i-1) itokeng(yi)=P(yiy1:i1)
下面详细介绍怎么用位置分数定位一个句子中的weak spots.

在这里插入图片描述

​ 用attention机制获得在一个seq2seq模型中目标句子中token Yi和源句中token Xj之间的注意力权重。上面公式6中的两个h,第一个对应的是decoder层的隐藏向量表示,第二个对应的是输入经过encoder层的隐藏向量表示。通过计算输入和输出每个token之间的注意力权重,可以获得一个矩阵A。对于目标句子中的token Yi,会计算它和源句中每个token之间的注意力权重,关注权重分数最大的那个源句token Xj,在矩阵A中将对应位置设置为1,这表示目标句子中的token Yi对齐源句token Xj,其他的设置为0。

在这里插入图片描述

怎么确定要被修改的token? 在原始训练数据集上训练的GEC模型,会对输出的每个token Yi给出一个位置分数g(Yi),如果**位置分数g(Yi)小于固定阈值**,就认为对应的源句token Xj是可以被修改的token。

(2)Word Substitutions-based Perturbations 基于替换的词级扰动

​ NLP任务中的对抗样本生成已经有了一些研究,大多集中在对于情感分析任务。对情感分析任务生成对抗样本时,要改别预测结果但是保留语义,所以常用同义词进行替换。但是对于GEC模型,这种同义词替换的方法不可行。文章中提出两种替换方法

方法一:从GEC训练集中获得一个correction-to-error的映射map,对于候选修改的token,从这个map中找到合适的替换token。(带有语法错误) 如果通过Map找到有多种可以替换的token,需要根据上下文、语义选择最合适的一个。给出了一个定义句子相似性的函数S(基于编辑距离)。

在这里插入图片描述

​ 公式11描述的是加权随机抽样,权重Wi通过函数S计算得到。需要注意的是,会有一词多义,举例:单词change有两个词性,动词和名词,不同的词性将会产生不同的错误。因此,在进行替换选择的时候,要删除和原始token没有相同词性的候选项

**方法二:基于规则生成错误。 **

如果用方法1找不到候选替换,再用方法二。为了最大程度的保持句子语义,根据不同词性执行不同的变换方法。

在这里插入图片描述

​ 其中,数字和专有名词不进行修改。所有的冠词或限定词、介词、连词、代词都先通过方法1找到合适的候选替换。rare words或者符号可以直接删除或者标记为.

​ 在一个句子中可能存在多个要被修改的token,我们可以把所有错误集成到这个句子中,即获得一个有多种语法错误的句子。也可以不将语法错误集成,生成多个对抗样本。后续试验证明,把所有错误集成到一个句子中,更好。

总结:GEC对抗样本生成的算法

在这里插入图片描述

3.Adversarial Training对抗训练

​ 使用未标记的语料库越多,GEC模型的性能会越好。前两步使用未标记的语料库,为对抗训练生成大规模的对抗样本。

​ **训练策略:**对抗训练通过向训练集中加入对抗样本进行训练,可以有效提升模型的鲁棒性。但是这种方式存在问题,可能会让模型过拟合噪声,在干净数据集上的准确率会下降。有人提出用pre-training和fine-tuning的方法来缓解这种noise-overfit的问题。

论文:Improving grammatical error correction via pre-training a
copy-augmented architecture with unlabeled data

论文:An empirical study of incorporating pseudo data into grammatical
error correction.

​ 论文里面的训练方式也用类似的方法:模型先用对抗样本进行pre-trained,然后在原始训练集上对模型进行fine-tuned。

在这里插入图片描述

实验

1.数据集&评估

​ 数据集:BEA-2019 workshop official dataset。从训练集中**删除源句和目标局一致的句子对,并且从数据集中采样不含有数字和专有名词的句子,作为预训练的未标注数据**。

​ 评估:MaxMatch scores,GLEU。在评估前使用从Lang-8语料库中提取的含有50,000个词的词典进行拼写矫正。

2.模型&超参数设置

​ (1)baseline seq2seq模型:Transformer模型(论文:Attention is all you need)&工具包 fairseq

​ (2)为了评估模型的鲁棒性,在测试数据中添加对抗样本,添加的对抗样本含有1个或者3个错误。为了确保在攻击过程中生成错误,位置分数的阈值设定为0。

​ (3)对抗攻击分析:
在这里插入图片描述

​ (I)当前GEC模型,包括一些先进的模型,容易受到对抗样本影响

(II)用direct-noise做数据增强对提升GEC模型鲁棒性的效果不大。这可能与direct noise的编辑操作引入了一些任务无关的噪声有关

(III)综合对抗训练,可以不断提高模型的鲁棒性,如果以一定性能损失作为可接受代价。

Wang L , Zheng X . Improving Grammatical Error Correction Models with Purpose-Built Adversarial Examples[C]// Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020.

注意的点:
1.识别出有语法错误的方式
2.对抗训练方式

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值