第二篇文章 Ian GoodFellow:Explaining and Harnessing Adversarial Examples.
文章指出,早期解释对抗样例的原因主要在非线性和过拟合,但是GoodFellow却有不一样的看法,认为神经网络容易受到对抗扰动的原因是固有的线性特性,模型在高维空间的线性行为足够让攻击者找到对抗样例
对于之前Szegedy的工作,GoodFellow总结到,
- Box-constrained 的L-BFGS能够找到对抗样本
- 在一些数据集上如ImageNet,对抗样例跟原始的样本非常接近,人眼几乎观察不出
- 同一个对抗样例经常被不同架构的分类器误分类,即使这些分类器是由训练集的不同子集训练出来的
- 浅层softMax回归模型也会被被对抗样例攻击
- 用对抗样例训练模型能够正则化模型,但是,这个代价很大不现实,获取训练集的代价太高。
对对抗样例的线性解释
在很多问题中,对单独的输入特征的精度是有限的,例如图像经常使用8bit表示每个像素,所以信息的范围在1/255波动。正因为精度的限制,如果对抗扰动 在输入上的干扰
η
η
非常小,小于特征的精度,指望分类器对对抗输入(
x̃ =x+η
x
~
=
x
+
η
) 能够作出不同的反应是不理性的。而我们也预期分类器会作出相同的分类对与
x
x
和,只要
||η||∞<ϵ
|
|
η
|
|
∞
<
ϵ
ϵ
ϵ
是足够小被传感器所不能识别的。
举例如下: 将权值向量
ω
ω
与对抗样例
x̃
x
~
点积:
ωTx̃ =ωTx+ωTη
ω
T
x
~
=
ω
T
x
+
ω
T
η
则对抗扰动造成的激活增长了
ωTη
ω
T
η
,我们令
η=sign(ω)
η
=
s
i
g
n
(
ω
)
来增大激活值,如果
ω
ω
有
n
n
维,每个维度上平均增加,则激活值将增加
ϵmn
ϵ
m
n
,而且
||η||∞
|
|
η
|
|
∞
不随维度增加而变化,但是激活值可以随着
n
n
线性变化,那么在高维问题上我们只要在输入上有很多小的改变,而对最后的输出变化影响较大。
非线性模型的线性扰动
LSTMs, ReLUs, 和maxout网络都设计得比较“线性”,这样的设计使得线性模型上的微小扰动都能破坏神经网络,很容易受到对抗样例的攻击。
假设 是模型的参数,
y
y
是 的目标值,
J(θ,x,y)
J
(
θ
,
x
,
y
)
是训练神经网络的代价函数,在目前的
θ
θ
值局部下,我们可以将代价函数线性化,利用线性模型的攻击方法,我们得到一个最优扰动
η=ϵsign(∇xJ(θ,x,y))
η
=
ϵ
s
i
g
n
(
∇
x
J
(
θ
,
x
,
y
)
)
这就是生成对抗样例的快速梯度符号法,梯度可以用反向传播算法求解。
作者对浅层soft-max network/max-out network都做了测试,都获得了较好的攻击效果。同时作者发现,如果沿着梯度的方向对输入
x
x
旋转一个小角度也可以产生对抗样例。
线性模型的对抗训练
以简单的logistic regression来举例
训练一个简单的模型来识别标签 ,其中
P(y=1)=σ(ωT+b)
P
(
y
=
1
)
=
σ
(
ω
T
+
b
)
而
σ(z)
σ
(
z
)
是logistic sigmoid function,接着在下面函数进行梯度下降
Ex,y∼pdataζ(−y(ωTx+b))
E
x
,
y
∼
p
d
a
t
a
ζ
(
−
y
(
ω
T
x
+
b
)
)
其中,
ζ=log(1+exp(z))
ζ
=
l
o
g
(
1
+
e
x
p
(
z
)
)
是softplus function。
然后我们将扰动
x̃
x
~
替换到上述的函数,因为梯度的符号是
−sign(ω)
−
s
i
g
n
(
ω
)
并且
ωTsign(ω)=||ω||1
ω
T
s
i
g
n
(
ω
)
=
|
|
ω
|
|
1
所以推导出logistic regression的对抗版本优化函数
Ex,y∼pdataζ(y(ϵ||ω||1−ωTx−b))
E
x
,
y
∼
p
d
a
t
a
ζ
(
y
(
ϵ
|
|
ω
|
|
1
−
ω
T
x
−
b
)
)
这个跟
L1
L
1
正则化很像,但是有很大的不同。最大的不同是,
L1
L
1
惩罚是从模型的激活值中减去,而不是添加到损失函数。这意味着如果模型能够学习出足够置信度的预测,惩罚最终将逐渐消失。
This means that the penalty can eventually start to disappear if the model learns to make confident enough predictions that ζ ζ saturates.
但是也不能完全担保,在一些欠拟合的情况下,对抗训练可能会使得欠拟合更加糟糕。
We can thus view L1 L 1 weight decay as being more “worst case” than adversarial training, because it fails to deactivate in the case of good margin.
对于softmax regression多分类来说, L1 L 1 的权重衰减变得更加悲观,因为它需要在soft Max的每一个输出上做出扰动,而事实上不可能找到一个扰动 η η ,对于每一个标签类的权重向量梯度上达到最坏。权重衰减高估了扰动在含有多层隐藏层的深度神经网络中的伤害。因为 L1 L 1 权重衰减高估了攻击者可以伤害的数量,因此非常有必要用一个比 η η 更小的权重衰减系数。但是也带来了弊端,就是小的权重衰减系数能够较好的对抗训练,但是不能达到较好的正则化的效果。
深度网络的对抗训练
在Szegedy 的论文中也提到,用混合的对抗和干净样例训练网络能够
起到一定的正则化效果,而且,在对抗样例上训练与一般的扩充数据集不同,对抗样例的扩充的样本一般是没在训练集里出现过的,且是能够找到决策函数缺陷的样本。但是这个效果并不是太好,可能是因为用L-BFGS获取对抗样例的方法太昂贵,样本不够。
作者提出了使用基于快速梯度符号法的对抗目标函数,能够达到较好的正则化效果
J(θ,x,y)=αJ(θ,x,y)+(1−α)J(θ,x+ϵsign(∇xJ(θ,x,y))
J
(
θ
,
x
,
y
)
=
α
J
(
θ
,
x
,
y
)
+
(
1
−
α
)
J
(
θ
,
x
+
ϵ
s
i
g
n
(
∇
x
J
(
θ
,
x
,
y
)
)
Adversarial examples are transferable between the two models but with the adversarially trained model showing greater robustness. Adversarial examples generated via the original model yield an error rate of 19.6% on the adversarially trained model, while adversarial examples generated via the new model yield an error rate of 40.9% on the original model. When the adversarially trained model does misclassify an adversarial example, its predictions are unfortunately still highly confident. The average confidence on a misclassified example was 81.4%.
对抗训练的过程可以看做当数据被恶意扰动的时候,最小化最差情况的错误率
为什么对抗样例通用
An intriguing aspect of adversarial examples is that an example generated for one model is often misclassified by other models, even when they have different architecures or were trained on disjoint training sets
在线性的观点下,对抗样例存在于广阔的子空间,方向
η
η
只需要在代价函数梯度的正点积,且
ϵ
ϵ
足够大。
对抗样例存在于样本中就像实数中的有理数,对抗样例很普遍但是只存在于非常精确的一些位置。
一些结论
- 对抗样例可以解释为是高维点积的一个属性,它们是模型太线性的结果,而不是非线性。
- 对抗样例在不同的模型上的泛化性可以解释为:对抗扰动是跟权重向量联系在一起的,而不同的模型在训练学习同一个任务时会学习出相似的函数
- 扰动的方向比较重要,而不是空间中的点,Space is not full of pockets of adversarial examples that finely tile the reals like the rational numbers
- 因为方向最重要,所以对抗扰动在不同的clean examples中都通用
- 对抗训练可以起到一些正则化的效果,甚至比dropout更好的正则化
- 简单的进行 L1 L 1 权重衰减或者添加噪音不能达到这个对抗效果
- 容易优化的模型也容易扰动
- 线性模型没有抵抗对抗扰动的能力,只有那些含有一个隐藏层的结构应该训练去防御对抗扰动。
- RBF网络可以抵御对抗样例
- 如果对对抗训练过的模型进行输入扰动,显示仍然不能抵御对抗样例
- 集成的方法不能抵御对抗样例
- Rubbish class examples普遍存在且容易生成
- 浅层线性模型不能抵御Rubbish class examples
- RBF网络可以抵御Rubbish class examples