对抗攻击基础知识(完结)
https://cloud.tencent.com/developer/news/162169
https://zhuanlan.zhihu.com/p/37260275
什么是对抗攻击
-
为图片添加噪声,人眼看不出明显差别,但会导致机器识别错误.
攻击模式分类
-
Black/White box:是否需要模型的先验知识,如算法、参数、训练集.在实际应用中,通过模型A生成对抗样本,进而攻击模型B,若两者是同一个模型则为白盒,否则为黑盒.
-
Targeted/Non-targeted:对于攻击样本的目标分类是具有指向性还是仅仅使其预测错误即可.
-
Specific/Universal:攻击方式是否跟特定图片有关.
-
Perturbation norm:对噪音的限制计算方式.
-
Learning:单次和逐渐迭代.
-
Strength:攻击强度.
对抗攻击的来龙去脉
-
《Intriguing properties of neural networks(神经网络有趣的特性)》:
-
神经网络中包含语义信息的部分并不是在每个独立的神经元,而是整个空间.
-
神经网络学习到的从输入到输出的映射很大程度上是不连续的.
-
验证了将图片适当修改后能欺骗深度学习模型的可能性.
-
-
《Explaining and harnessing adversarial examples》:
-
产生对抗攻击根本原因的猜测:深度神经网络在高维空间中的线性特征.
-
更高效制造对抗样本的方法.
-
-
如何理解对抗攻击
-
每层神经元的输出a=g(Wx+b),实际上是二维平面上的旋转、移动和拉伸:
-
使用W线性变换
-
使用b移动
-
使用g非线性变换.
对于简单的分类问题,在二维平面被拉伸成可以通过直线完成分类的布局,对于较复杂问题,通过增加神经元,在高维空间进行分离.
-
-
神经网络通过对空间进行变换后,从最终的表征层中学习,因此包含该语义信息的是整个空间.
-
在上图的拉伸结果中,距离较大的地方可以认为映射是连续的,但仍缠绕在一起的部分超平面已经无法连续.对抗样本正是跨过了该界限.我理解是要保持与某类点的平均距离尽量近的同时去跨过该界限.
-
抵御对抗攻击的一个直观方法是将对抗样本加入到训练集中去.
-
GoodFellow提出生成对抗样本的方法:
-
根基是目前神经网络为了提高训练效率,所使用的激活函数在局部过于线性.
-
w是权重向量,x是真实样本,n是 噪音.当n足够小时肉眼无法区分出x的变化,但是若n与w的方向完全一致,则对激活值的计算会产生巨大干扰.
-
快速梯度符号法FGSM:为了能使n与w方向一致,即损失函数在待构造样本上的梯度方向.ε是调节系数,J是损失函数.在调整损失函数时会用θ - ∂θ来进行,而该方法令x̄ = x +∂x.此方法有一个开源攻击库CleverHans.
-
如何抵御攻击
-
修改训练样本:例如通过添加对抗样本到训练集中.
-
梯度掩码:将原始梯度隐藏起来.
-
修改训练网络:例如在最后一层使用更加非线性的激活函数、随机化等.可分为完全抵抗和仅检测两种方式.
-
去噪:在样本输入模型前先去噪,剔除扰动信息.
-