文章目录
- 1 对抗学习的目的是什么?
- 2 embedding是什么?
- 3 对抗训练
- 4 常见的对抗训练方式
- 4.1 FGM
- 4.2 PGD
- 4.3 FreeAT
- 4.4 FreeLB
- 5 对抗训练和constractive learning
- 6 对比学习的history and achievement
思维导图链接:https://www.processon.com/mindmap/64159f9ff502f062b5d616be
1 对抗学习的目的是什么?
是为了让模型更鲁棒,对噪声更加的不敏感。
在实现这一点上,有对抗防御、对抗攻击和对抗训练。
对抗防御是识别出更多的样本
对抗攻击是为了构造更多的样本
对抗训练是将样本添加到模型中,以提高模型的鲁棒性
2 embedding是什么?
embedding是词的表示的一种,一般是可以互相替换的词之间的相似度是比较高的。
大概还是和最初的训练objective 有关,一般的Word embedding的训练是根据自监督方式完成,即预测下一个字
如果两个字是可以同时接在下一个字后面的话,相似度理应高一些。比如:我喜欢你和我讨厌你。
参考链接:https://spaces.ac.cn/archives/4122
3 对抗训练
深度学习中的对抗,一般会有两个含义:一个是生成对抗网络(Generative Adversarial Networks,GAN),代表着一大类先进的生成模型;另一个则是跟对抗攻击、对抗样本相关的领域,它跟GAN相关,但又很不一样,它主要关心的是模型在小扰动下的稳健性。
原文链接:https://spaces.ac.cn/archives/7234
最好还是看原文,讲的很透彻。
问题
1.FGM从思想上来说,我理解它的意思是,在原始输入样本x上加对抗r,但这个对抗肯定没法在原始token上加,所以就加在E = nn.word_embedding(x) = x * W_emb上,所以简单描述应该是x_adv = x * W_emb + r;
但从你的FGM的代码实操来看,似乎是将扰动r加在了embedding层的权重W_emb上,即x_adv’ = x * (W_emb + r)
= x * W_emb + x * r,似乎扰动r被多加了(x-1)倍?当然,这种略带玄学的东西本就不该十分一丝不苟,因为好不好用应该是实践说了算,不过我担心是我理解有误,所以请教一下这个问题~