查看原文
其他

【源头活水】BERT Attack: 基于BERT的文本对抗技术

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—清香白莲

地址:https://zhuanlan.zhihu.com/p/377412027

深度学习虽然在机器学习使用效果上取得了质的飞跃,但其仍然害怕对抗样本的攻击。所谓对抗样本,就是对原始输入数据加一个几乎可以忽略的微小扰动,就会使得神经网络判断错误,但这种微小扰动却丝毫不影响人工判断。如果能人工生成对抗样本,让模型学习免疫这些对抗样本,将可以极大提升模型的稳健性。
在CV领域,有序数据的连续性,可以训练出很好的模型去生成对抗样本,对抗样本经常被作为一种有效的数据增强技术,对模型带来了很大的提升。然而在NLP领域,由于数据的离散性,难以训练一个直接生成对抗样本的模型,一般都是基于规则生成一些候选对抗样本,然后用语言模型或者其他模型对候选样本进行打分过滤。这种方式不仅效果不好,难以保证语义一致性与句子的流畅性,而且效率低下。
本文基于介绍一种基于BERT的对抗样本生成技术,不仅效果好,而且计算效率高,可以被大规模使用。其主要分为两步,先找出易受攻击的词(对语义影响较大),然后替换掉这些词。

01

找出易受攻击词(Vulnerable Words)
通过评分的方式找出易受攻击的词,一句话中一个词的评分的定义是将该词MASK掉后对BERT(或者fine tune过得BERT)输出的logit值得影响。
其中
通过这种方式,找出评分topk的词作为易受攻击的词,然后对它们进行后续的替换操作。

02

替换掉易受攻击的词
先将原始的句子输入BERT模型,在每个位置用softmax函数选出K个候选词。然后从这些候选词中选择替换原始单词的词。
由于BERT使用字节对编码(BPE)进行分词,原始句子中的词可能会被切开,因此原始句子中的单词可能与BERT模型所用的词表中一个或者若干个词对应,在生成替换词时需要进行对齐。所以要用到两种替换方式。

2.1 单词替换

针对未被BPE切开的词,直接使用该位置的K个候选词进行逐一尝试,主要分为以下几步:
  • 先使用NLTK过滤其中的停用词;
  • 如果是情感分类任务,候选词中可能包括同义词和反义词,使用同义词词典过滤反义词;
  • 将替换完成的句子重新输入判别器,如果判别器给出与原label相反的判断那么输出该句子作为对抗样本;
  • 如果上一步没能生成对抗样本,从筛选出的候选词中选择一个对logit影响最大的词作为替换词。

2.2 词组替换

如果原始词被BPE切开了,一个词对应了切词后的一个词组,是无法直接获取其替代词的。解决方案是:
  • 用对应的词组中所有词的候选词的组合作为初步的原始候选词,如词组长度为  则一共有  个;
  • 用类似于前面分析单个词的易攻击程度,用Masked Language Model分析整个词组的易攻击程度,然后再选出词组的topk个组合,作为原始词的候选词;
  • 剩余过程与单词替换一致。
整个流程如下。


03

对抗效果
可以看出相比其他文本对抗方法,BERT-Attack在对与那是句子扰动更小的情况下更大程度地降低了判别器的准确性,并且在生成对抗样本时对判别器的访问次数也更少,此外与原始句子的语义相似性(通过句子编码器进行编码算出的向量相似度)也更高。


04

人工评估
将对抗样本与原始句子混合在一起,人工对每一个句子进行语法正确性评分,对抗样本的平均得分比较接近原始句子,说明语法正确性较好。语义上,与原始句子的一致性也较好。

参考文献

https://arxiv.org/pdf/2004.09984.pdf

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看


分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存