必然有人会对现存的模型发起攻击,比如那些发送广告邮件的人会攻击识别垃圾邮件的模型
因此模型需要有一定的能力去应对可能的恶意攻击
内容分为两部分:如何攻击\如何防御
攻击的目的就是在原本正确的模型上,给输入量加入一个人为制造的特殊变量,使得结果发生错误.
问题是如何找到这个认为制造的特殊变量呢?
攻击和训练的区别在于,训练的时候x是固定的θ是更新改变的,攻击的时候x是更新改变的θ是固定的
L2方法并不太好,原因见下图
图中两种改变方式:1.四种颜色都改一点 2.只改了绿色
从肉眼来说,方法二是不太精明的攻击,然而L2算法却认为这两个是相同程度的攻击
同样是使用梯度下降方法,只不过求梯度对象由θ变为x
但是在更新的过程中,每次更新完成后要进行一次检查,如果x’与x的距离过远,需要进行一次修正
在所有的符合距离约束的x中,选择一个与当前不符合距离约束的x’最近的,作为修正值
上半部分是人类直觉上在某一维输入上结果的变化曲线,当然是对的
但是在255^3个维度上,并不是所有维度都是这样的,有某些维度是下图这样
那么在这个维度上的微小改变,会对结果造成巨大影响
如果梯度是正数,就取+1;如果梯度是负数,就取-1.
也就是说,FGSM类似梯度下降,只不过不在乎梯度的大小,只在乎梯度的方向
他的思想就是沿着梯度的反方向,一直走到尽头,也就完成了梯度下降
如果不知道网络结构,那么可以利用这样一条特性去进行攻击
使用相同训练数据进行训练的模型往往有相同的弱点(尽管结构不同)