Combating Adversarial Misspellings with Robust Word Recognition

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

动机

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

解决方法

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

图一 处理流程

单词识别模型 ScRNN Model[1]

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

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

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

下游分类模型使用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),#u(.)\# \mathrm{u}(.)#u(.) 输入表示与s不一致的句子个数,模型的敏感度(Sensitivity)可表示为 SW,VA\mathrm{S}_{W, V}^{\mathrm{A}}SW,VA​:
A(s)=s1′s1′,…,sn′\mathrm{A}(\mathrm{s})=\mathrm{s}_{1}^{\prime} \mathrm{s}_{1}^{\prime}, \ldots, \mathrm{s}_{\mathrm{n}}^{\prime}A(s)=s1′​s1′​,…,sn′​
SW,VA=ES[#u(V∘W(s1′),…,V∘W(sn′))n]\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]SW,VA​=ES​[n#u(V∘W(s1′​),…,V∘W(sn′​))​]

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

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

结论及意义

结论:

  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 Misspellings with Robust Word Recognition相关推荐

  1. 论文解读 Combating Adversarial Misspellings with Robust Word Recognition

    1. 简介 论文链接 https://www.aclweb.org/anthology/P19-1561.pdf 这篇文章发表在ACL19,目的是为了解决错误拼写的对抗(adversarial mis ...

  2. Within-sample variability-invariant loss for robust speaker recognition under noisy environments

    Within-sample variability-invariant loss for robust speaker recognition under noisy environments 标题: ...

  3. DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations – CVPR 2016

    DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations – CVPR 2016 论文( ...

  4. 【菜鸡读论文】Face2Exp: Combating Data Biases for Facial Expression Recognition

    [菜鸡读论文]Face2Exp: Combating Data Biases for Facial Expression Recognition 最近上海开始降温了,而且常常下雨,天气开始变得好冷啊! ...

  5. 用于语音识别的多任务自我监督学习(Multi-task self-supervised learning for robust speech recognition )

    文章目录 简介 论文信息 题目 内容摘要 论文背景 应用背景 技术现状 论文主要工作 论文工作介绍 文章框架 核心工作 1.PASE+整体框架. 蓝色部分是在 PASE 的基础上改进的部分. 2.如何 ...

  6. 论文学习:Occlusion Robust Face Recognition Based on Mask Learning

    论文地址:Occlusion Robust Face Recognition Based on Mask Learning with Pairwise Differential Siamese Net ...

  7. Masking Adversarial Damage: Finding Adversarial Saliency for Robust and Sparse Network

    对抗训练在过度参数化的情况下,需要很高的计算量和大内存运算,为了弥合对抗鲁棒性和模型压缩,本文提出了一种新的对抗修剪方法:掩蔽对抗损伤MAD.通过利用对抗损失的二阶信息和掩码优化以及block-wis ...

  8. ECCV 2020 ——RobustScanner: Dynamically Enhancing Positional Clues for Robust Text Recognition

    0. 引言 基于注意力机制的场景文本识别已经非常普遍,并且也取得了很不错的效果.但是注意力机制会不会有一些负面效果?17年有一个工作来探讨了一下,存在了一个严重的注意力漂移问题."Focus ...

  9. 稀疏表示人脸识别入门文章-《Robust Face Recognition via Sparse Representation》马毅

    人脸识别是机器视觉中非常火的一个领域了,在近十几年来发展迅猛,而本文介绍的方法是基于稀疏表示分类(Sparse Representation based classification,SRC)的人脸识 ...

最新文章

  1. HDU - 3333 Turing Tree 线段树区间不同值和+详解+思想
  2. 在Blender中创建惊人的低多边形动画
  3. python web项目案例教程_Python Web开发案例教程(慕课版)——使用Flask、Tornado、Django...
  4. 使用Android Studio运行项目出现 UnsupportedMethodException 错误的解决办法
  5. C#中跨窗体操作(1)--事件
  6. 中望3D 2021 线框设计“提取中心线”
  7. JAVA菜鸟入门(8) Java的Final关键字
  8. win7如何添加终端服务器,Win7系统如何添加超级终端?Windows7系统超级终端的添加方法...
  9. 什么网页游戏是按地地狱划分服务器的,不思议迷宫地域边境详细攻略 全方位介绍地狱边境所有玩法...
  10. hadoop之大数据生态系统的前世今生
  11. vue中Route和router、routes的关系
  12. 服务器更换桌面壁纸,通过VBS更换桌面设置壁纸源码
  13. ISO8583包[详细说明]
  14. 手把手教你将矩阵画成张量网络图
  15. 【XML系列】----DTD中的元素定义
  16. 在API 中,常用的code码
  17. c语言猜12生肖一种,12生肖2017年运程完整版十二生肖中最老的是哪个生肖_脑筋急转弯_算......
  18. 125 · 背包问题(二)Backpack II
  19. Haskell函数式编程学习笔记
  20. winxp搜索网络计算机,WinXP系统上的计算机打开WiFi搜索后无法找到无线网络的问题的解决方法...

热门文章

  1. MakeGenericMethod Reflection 反射 ObjectToXmlT Generic XmlSerializer
  2. 新工作 (2) : 准备
  3. 华为机试HJ27:查找兄弟单词
  4. mysql dsec_MySql数据库操作命令
  5. 软件测试工程师除了找BUG,还能干啥?
  6. linux下矩阵键盘设备名,Linux下矩阵键盘驱动分析与移植
  7. 肺结节圆形边界光滑_肺结节读片(16):再谈肺磨玻璃结节边界的CT形态特点
  8. 新手项目:黑马blog (适合刚接触node和数据库MongoDB)
  9. 剑指offer面试题[49]-把字符串转化为整型
  10. 寻找三角形(编程题)