一、写在前面的话
由于NLP领域的对抗攻击一直处于较为初级的阶段,所以之前一直没有重点研究。最近看了一篇关于NLP的对抗的博文,感觉使用上可以作为另一种数据增强,因此打算研究一波作为之后日常的trick。也是初次涉及该领域,如有错误的地方也请大佬们多指教。
二、对抗攻击的基本概念
对抗攻击:攻击者就会通过设计一种有针对性的数值型向量从而让机器学习模型做出误判,这便被称为对抗性攻击,简单来说就是研究如何生成能使网络出错的样本
根据条件不同,对抗攻击主要可分为:
-
黑盒攻击与白盒攻击(攻击环境)
黑箱攻击向目标模型提供了不了解该模型而生成的对抗样本(在测试期间);白箱攻击假定(对抗者)完全了解目标模型,包括其参数值、体系结构、训练方法,在某些情况下还包括其训练数据。 -
有目标攻击和无目标攻击(攻击的目标)
无目标攻击指攻击只要使得网络出错即可,目标攻击则不仅要使得网络出错,而且要指定错误的情况 -
基于梯度的攻击、基于优化的攻击、基于决策面的攻击或者其他(攻击实现方式)
三、对抗攻击的一些方法
3.1 Fast Gradient Sign Method
FGSM是一种白箱攻击方法,该方法认为攻击就是添加扰动使得模型的loss增大,所以沿着梯度方向生成攻击样本应该是最佳的(注意:传统情况下我们是固定样本,通过梯度改变权值,现在就是固定权值,通过梯度改变样本。),具体公式如下图所示:
3.2 Project Gradient Descent
FGSM是一种一次攻击,即针对一张图加梯度也仅仅增一次梯度。但如果现在攻击的是一个复杂非线性模型的话,这样的方法可能就不能一定攻击成功。可以想象,复杂的非线性模型可能在极小的范围内剧烈变化,所以梯度跨度大可能就不能攻击成功,所以PGD考虑把FGSM的一大步换成多小步:
clip用来防止一小步走得太大
网友评论