提出了一种针对NMT的模型鲁棒性强壮思路
攻击文本生成算法AdvGen
多模型连带训练
攻击样本生成
扰动encoder输入
对于输入的第i个token —— xi,xi’是从Vocab中找到的,使得余弦相似度最大的token,余弦相似度计算的两个输入分别是,xi的gradient loss和新旧token之间的vector距离。
全部Vocab搜索计算消耗过大,采用贪婪思想,运用动态vocab减小搜索范围
现在需要定义一个Q,在给定句子X和第i个位置的前提下,能够计算该位置上,和原单词xi的所有Vx中的词的似然度
从输出中找前N个词作为Xi的动态词表。也即和xi最相似的前N个词,N通常很小
利用训练好的双向语言模型,针对于第i个单词,预测此处Vx中各个词的概率,以此替代函数Q
AdvGen Function:
给定输入的一句话,按照Dpos的概率分布对输入s中的每个此随机采样。未被采样的单词保留;被采样的单词通过top_n(Q)(双向语言模型)生成动态的Vsi,然后计算原词si的gradient记为gi,最后利用公式计算使得余弦相似度最大的,Vsi中的替代词replace
扰动输入
和输入的扰动同样的计算,但是对应参数有所改动:
- Loss定义
- Q(Vxi计算):
平衡victim model和generate model对输入扰动的贡献 - D(采样分布):
输入没有被修改的位置导致相近位置的输出被采样的概率为0.同时针对这些被修改的输入,计算该输出位置和所有这些输入的注意力分数,注意力分数越高被采样概率越大
鲁棒性评估
利用上述的抗击样本训练更好的鲁棒模型,定义模型鲁棒性能:
鲁棒Loss计算步骤:
对于每一个原始样本(x,y)利用两个generate LM缩小替代词搜索范围,按照公式计算X’,Z’。最后将攻击文本喂给decoder计算似然Loss评估鲁棒性能。
合作训练
在transformer上多消耗20%时间,于是将Loss定义为4倍,backward三个模型参数,同时训练三个合作的模型(两个generator + 一个victim),达到互利共赢,弥补速度缺陷。
self
- 很好的一篇paper,白箱模型,在NMT的模型架构上效果显著。
- 利用gradient loss+余弦相似度衡量距离
- 内部扰动——input of both encoder and decoder
- 利用LM减少替换词serach范围
- 多个LM合作训练