13.3 对抗样本训练 447
除了单纯的在文本中引入各种扰动外,还可以通过文本编辑的方式,在不改变
语义的情况下尽可能修改文本,从而构建对抗样本
[589, 590]
。文本的编辑方式主要包括
交换、插入、替换和删除操作。表13.2给出了通过这几种方式生成对抗样本的例子。
表 13.2 对抗样本实例
原始输入 We are really looking forward to the holiday
替换操作 We are really looking forward to the vacation
插入操作 We are really looking forward to the holiday tomorrow
删除操作 We are really looking forward to the holiday
交换操作 We are really forward looking to the holiday
形式上,可以利用如 FGSM 等算法
[579]
,验证文本中每一个单词的贡献度,同时
为每一个单词构建一个候选池,包括该单词的近义词、拼写错误词、同音词等。对于
贡献度较低的词,如语气词、副词等,可以使用插入、删除操作进行扰动。对于其他
的单词,可以在候选池中选择相应的单词并进行替换。其中,交换操作可以是基于
词级别的,比如交换序列中的单词,也可以是基于字符级别的,例如交换单词中的字
符
[591]
。重复进行上述的编辑操作,直至编辑出的文本可以误导模型做出错误的判断。
在机器翻译中,常用的回译技术也是生成对抗样本的一种有效方式。回译就是,
通过反向模型将目标语言翻译成源语言,并将翻译得到的双语数据用于模型训练(见
第十六章)。除了翻译模型,语言模型也可以用于生成对抗样本。第二章已经介绍
过,语言模型可以用于检测句子的流畅度,它根据上文预测当前位置可能出现的单
词。因此,此时可以使用语言模型预测出当前位置最可能出现的多个单词,并用这
些词替换序列中原本的单词。在机器翻译任务中,可以通过与神经机器翻译系统联
合训练,共享词向量矩阵的方式得到语言模型
[592]
。
此外,生成对抗网络(Generative Adversarial Networks,GANs)也可以被用来生
成对抗样本
[593]
。与回译方法类似,基于生成对抗网络的方法将原始的输入映射为潜
在分布 P ,并在其中搜索出服从相同分布的文本构成对抗样本。一些研究也对这种
方法进行了优化
[593]
,在稠密的向量空间中进行搜索,也就是说在定义 P 的基础稠密
向量空间中找到对抗性表示 z
′
,然后利用生成模型将其映射回 x
′
,使最终生成的对
抗样本在语义上接近原始输入。
13.3.3 基于白盒攻击的方法
除了在单词级别增加扰动以外,还可以在模型内部增加扰动。一种简单的方法
是在每一个词的词嵌入上,累加一个正态分布的变量,之后将其作为模型的最终输
入。同时,可以在训练阶段增加额外的训练目标。比如,迫使模型在接收到被扰动的
输入后,编码器能够生成与正常输入类似的表示,同时解码器也能够输出正确的翻