最近调研了一些对抗训练相关的文章,又听了组里学弟做的报告,简略的总结一下。做PPT费了不少功夫,因此在这里直接搬过来。
NLP对抗训练背景
对抗训练简介
对抗训练样本(Adversarial Examples):通过对输入进行微小扰动,极大增加模型损失的样本
对抗训练(Adversarial Training):在训练时考虑对抗训练样本的存在,提高模型在对抗训练样本上的性能
目的:
- 正则:提高模型鲁棒性
- 攻防:作为对模型恶意输入的提前预防
做法:
- 通过损失函数:在loss中添加对微小扰动敏感性的损失项
- 通过构造样本:构造对抗样本进行训练
NLP对抗训练的挑战
NLP对抗训练的多种方案
取值离散:
- 面向输入:构造新的对抗样本语句串,从输入开始进行训练(Papernot et al., Samanta et al.)
- 面向Embedding:回避取值离散问题,将微小扰动直接加在Embedding层,从后续模型开始进行训练(Goodfellow et al.)
模型求导复杂:
- 在所有方法中均无法回避RNN求导的步骤,因此必须将循环进行展开
对单词的改变易察觉:
- 运算语义分析:通过对Embedding层的对抗训练,使得词向量在考虑语法的基础上比不经过对抗训练的模型对语义更加敏感(同词性相聚→同义词相聚)(Goodfellow et al., Papernot et al.)
- 人为语义分析:根据一定人为规定的准则构造候选替换词库,直接对输入进行语义改动较小的修改(Samanta et al.)
图像处理领域常用的对抗训练算法
JSMA-based: Crafting Adversarial Input Sequences for Recurrent Neural Networks
生成目标
RNN的JSMA算法
实验
小结
该方法解决了以下问题:
- 形式化描述了序列问题中的对抗训练样本优化问题
- 将JSMA方法引入NLP领域,通过RNN展开给出了计算前向导数的方式 3. 能够从数值解反推出所构造的文本串
该方法的优势:
- 计算较为简单,只需进行求导运算即可
该方法的劣势:
- 在序列任务中,往往并不明确需要改变的是输出的哪个值,本文没有详细说明这个问题
- 通过给定方向在字典中查找最佳对应词非常耗时,即使采用了时间友好的数据结构也会导致空间占用过大
- 该方法虽然部分解决了词表示的离散问题,但回避了语义的表示问题,导致输出句子的语法怪异
总结:
- 该方法可以看做是FGSM系方法的另一种补充,不过实际上无论是前向导数还是FGSM都是用输出对输入求导,大同小异,本文将JSMA方法引入NLP领域指示我们可以从先前连续问题的方案入手解决NLP问题
- 本文只是阶段性成果,有时间需要跟进后续进展
Future Work:
- 可以在本文基础上增加如下一篇文章一样的语义分析成分,提升生成的样本质量
JSMA-based方法相关论文(除此篇以外仅有Malware Detection领域文章):
- Kathrin Grosse, Nicolas Papernot, Praveen Manoharan, Michael Backes, and Patrick McDaniel. 2016. Adversarial perturbations against deep neural networks for malware classification. arXiv preprint arXiv:1606.04435 (2016).
- Kathrin Grosse, Nicolas Papernot, Praveen Manoharan, Michael Backes, and Patrick D. McDaniel. 2017. Adversarial Examples for Malware Detection. In Proc. of the 22nd European Symposium on Research in Computer Security (ESORICS 2017). Oslo, Norway, 62–79
FSGM-based: Towards Crafting Text Adversarial Samples
观察现象
The movie was good . [POS] vs. The movie was awful . [NEG] 形容词替换可能改变语义
The movie was good . [POS] vs. The movie was god . [POS] 少量拼写错误依然处于可理解范围内
The movie was fair. [POS] vs. The movie was extremely fair. [NEG] 增删副词可能改变语义
The movie was hilarious. (for comedy ) [POS] vs. The movie was hilarious. (for horror ) [NEG] 同样句子在不同输入分类下表达情感可能相反
因此,可以通过对原始语句的增删改操作构造对抗样例。
基于CNN的语句修改算法
贡献度计算
构造备选词库——将模型可能错分的词加入集合中
小结
该方法解决了以下问题:
- 通过大量人工的语法语义分析尽可能在对抗样本中保留了原样本的语义
- 在人工语法分析的基础上通过运算尽可能减少生成对抗样本的替换迭代次数
该方法的优势:
- 生成的语句串质量较高,难以人为辨别
- 类别专属词的单独考虑极大地提升了该方法在部分数据集上的表现
- 将判断该替换哪个词,用什么词替换分解成了两个最优化问题,利用贪心算法解决,简化了实现
该方法的劣势:
- 该方法实际上使用了修辞学的方法对语句进行修改,但增删改规则过于简单,且没有覆盖到所有语法成分
- 文章所使用的贪心算法令人费解,在备选词库中查找替换词应该有其他准则
- 文章中存在前后矛盾之处,前文提到副词的增删可能改变分类,而算法中对于副词则采取了直接删除策略
- 在备选词库中查找词时,并没有确定所查找的词应该置于语句内何处,故在RNN中使用时贡献度可能计算错误
- 并非所有数据集都存在genre,而在不加genre的情况下该方法性能并不出色
总结:
- 该方法提供了一种构造对抗样例的新思路,即通过计算确定替换词,再用人工制定的基于语法语义的策略 给出具体替换方案。
Future Work:
- 可以进行更复杂的增删改替换,例如引入修辞学的改写句子方法,不仅仅局限于单词
FGSM-based方法相关论文:
- Bin Liang, Hongcheng Li, Miaoqiang Su, Pan Bian, Xirong Li, and Wenchang Shi. 2017. Deep Text Classification Can be Fooled. arXiv preprint arXiv:1704.08006 (2017).
- Suranjana Samanta and Sameep Mehta. 2018. Generating Adversarial Text Samples. In Proc. of the 40th European Conference on IR Research (ECIR 2018). Grenoble, France, 744–749.