美文网首页
Combating Adversarial Misspellin

Combating Adversarial Misspellin

作者: ltochange | 来源:发表于2021-06-30 22:38 被阅读0次

Combating Adversarial Misspellings with Robust Word Recognition

<center> 来源:ACL2019 </center>
<center> 链接: https://arxiv.org/pdf/1905.11268.pdf </center>
<center> 代码:https://github.com/danishpruthi/Adversarial-Misspellings </center>

动机

文本攻防逐渐发展成为一个研究方向。如图所示,基于fine-tuned BERT的情感分类器的准确率可以达到90.3%,但是一旦输入文本中引入拼写错误(对正确单词中的字母做一次交换,替换,插入或删除),模型的正确率下降至45.8%


在这里插入图片描述

解决方法

在下游任务(例如情感分类)之前,引入单词识别模型,提高下游任务模型的鲁棒性。假设单词识别模型是W,下游分类任务模型是C,首先,输入样本经过单词识别器W,还原错误单词为对应的正确单词,然后,将W处理过的样本作为C的输入(其中C 与W分开训练)。

图一 处理流程

<center> 图一 处理流程 </center>

单词识别模型 ScRNN Model[1]

输入:将一个单词分为三个部分,首字母,尾字母以及中间字母,每个字母用one-hot表示。假如,句子 \mathrm{S}=\left\{\mathrm{W}_{1}, \mathrm{W}_{2}, \ldots, \mathrm{W}_{\mathrm{n}}\right\},其中单词可以表示为三个部分的拼接(1)首字母:\mathrm{W}_{\mathrm{i} 1}(2)尾字母:\mathrm{W}_{\mathrm{iL}}(3)中间字母求和:\sum_{j=2}^{L-1} w_{i j}
备用策略:当ScRNN Model也不能识别出单词(输出UNK时,模型所用词表不够完备),探索了三种备用策略

  1. Pass-through传递:单词识别器按原样传递单词(可能拼错)至下游任务;
  2. Neutral退到中性词: 使用类似于单词a, the等代替, 因为这样的词在不同的类别中分布相同;
  3. Background使用background model: 使用更大的、更通用的语料库训练通用的单词识别模型。


    图二 第三种备用策略Background的示意图

    <center> 图二 第三种备用策略Background的示意图</center>

下游分类模型使用BiLSTM + softmax或者fine-tuned BERT

实验结果

单词识别器
引入拼写错误至数据集SST,训练并测试单词识别模型改正单词的能力。引入的拼写错误类别有以下几种:

  1. Swap:交换单词中的相邻两个字母;
  2. Drop:删除单词中的一个字母 ;
  3. Add:在单词中增加一个字母;
  4. Key: 使用键盘上相邻的字母替换原有字母;
  5. All:随机选择以上的四种错误。

对每个长度大于4的单词(不包含停用词)引入错误,并且不改变单词的首字母和尾字母,之所以这么设定是参照论文[2]。单词识别器的单词错误率WER作为评价指标。ATD是一个开源的拼写纠错器。其中,使用Background备用策略的单词识别模型,单词错误率WER最低。

在这里插入图片描述
下游分类器
两个分类任务:sentiment analysis,paraphrase detection
两种结构:BiLSTM + softmax,Fine-tuned BERT
四种不同的输入:Word-only,Char-only,Word+Char,word-piece
实验设置如下,探索不同粒度的输入,以及不同模型,对于拼写错误输入的鲁棒性。
BiLSTM + softmax: Word-only,Char-only,Word+Char
Fine-tuned BERT: word-piece

下表中,BERT + DA 以及 BERT + Adv 是基于先前别人提出的两种处理对抗样本的的方法。(1) data augmentation (DA) 使用数据扩充的方法,将引入噪声(拼写错误)的数据作为训练集训练模型,然后再用真实的数据进行微调;(2) adversarial training (Adv) 在用真实数据训练好的模型的基础上,用对抗样本进行微调,首先随机选择对抗样本,进行预测,将预测不正确的样本继续做训练,迭代进行,直到验证集上的准确率不上升。


在这里插入图片描述

实验表明,论文提出的方法的准确率比先前的策略要高。总体来看,可得出结论:

  1. 模型鲁棒性:word-only > word+char > char-only > word-piece
    (通过对比No attack列和其他列的差值,差值越小代表越不容易受攻击
  2. 攻击能力:add > key > drop > swap (准确率下降的越多代表攻击能力越高)

并且,总体来看,单词识别的备用策略中退到中性词的结果最好,这也表明并不是WER越低,下游任务模型就越稳定。

结果分析

分析什么样的模型比较稳定
模型的稳定性包括两个方面:单词错误率WER 和 模型的敏感度(Sensitivity)

给定集合中的一个句子s,A(s)表示攻击类型A下的n个扰动集合,W为单词识别模型,V为将字符串映射到下游分类器的输入表示形式的函数(word, char , word-piece),\# \mathrm{u}(.) 输入表示与s不一致的句子个数,模型的敏感度(Sensitivity)可表示为 \mathrm{S}_{W, V}^{\mathrm{A}}
\mathrm{A}(\mathrm{s})=\mathrm{s}_{1}^{\prime} \mathrm{s}_{1}^{\prime}, \ldots, \mathrm{s}_{\mathrm{n}}^{\prime}
\mathrm{S}_{W, V}^{\mathrm{A}}=E_{S}\left[\frac{\# u\left(V \circ W\left(s_{1}^{\prime}\right), \ldots, V \circ W\left(s_{n}^{\prime}\right)\right)}{n}\right]

通俗点说: 模型的敏感度就是原始输入句子引入拼写错误后,经过单词识别模型,再经过下游任务输入映射之后,和原来句子表示不一样的句子个数占比。

单词识别的备用策略中退到中性词的策略模型的敏感度较低,所以对下游任务有较好的效果。

结论及意义

结论:

  1. 现有nlp模型中,基于character和word-piece输入的模型占主导地位,但相比基于word的模型更易受到攻击;
  2. 在下游任务之前加上单词识别模型,可有效改善拼写错误的攻击;
  3. 下游任务模型的鲁棒性不仅仅与单词识别模型的识别率有关还与模型本身的敏感度有关。

意义:
对于构建更稳定的下游模型具有指导意义,但是对抗样本的种类有待丰富,构造拼写错误仅仅是其中一种,并且人工构造的样本与实际应用场景可能存在偏差。

更多文本攻防的论文 https://github.com/thunlp/TAADpapers

[1]Keisuke Sakaguchi, Kevin Duh, Matt Post, and Benjamin Van Durme. 2017. Robsut wrod reocginiton via semi-character recurrent neural network. In Association for the Advancement of Artificial Intelligence (AAAI).
[2]Matt Davis. 2003. Psycholinguistic evidence on scrambled letters in reading. https://www.mrc-cbu.cam.ac.uk/people/matt.davis/cmabridge/.

相关文章

网友评论

      本文标题:Combating Adversarial Misspellin

      本文链接:https://www.haomeiwen.com/subject/xpedultx.html