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