前言
本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!
DeepFool算法
特点:两种黑箱算法,即UPSET和ANGRI
论文原文:UPSET and ANGRI : Breaking High Performance Image Classifiers
正文
一些对抗样本的基础知识在这里就不赘述了,可以看我之前的博客。
先介绍两种算法的主要部分,具体网络结构以及共用同样的损失评价函数,在后面介绍。
UPSET: Universal Perturbations for Steering to Exact Targets
类标:
n
n
对抗扰动:rj,
j∈{1,2,⋯,n}
j
∈
{
1
,
2
,
⋯
,
n
}
即生成第j个目标分类的扰动
残差生成网络:
R
R
,rt=R(t)
原始样本:
x
x
对抗样本:x^,生成公式如下
x^=U(x,t)=max(min(s×R(t)+x,1),−1)
x
^
=
U
(
x
,
t
)
=
m
a
x
(
m
i
n
(
s
×
R
(
t
)
+
x
,
1
)
,
−
1
)
U
U
即为
UPSET网络,扰动叠加计算结果归一化到
[−1,1],s为比例参数,用于调节扰动
r
r
的大小,一般取值为2。
整体训练策略如下图所示,误差函数之后解释。
ANGRI: Antagonistic Network for Generating Rogue Images
原始样本:
x
x
正确类别:cx
目标类别:
t
t
,t≠cx
对抗样本:
x^
x
^
生成公式如下
x^=A(x,t)
x
^
=
A
(
x
,
t
)
A
A
即为
ANGRI网络
整体训练策略如下图所示,误差函数之后解释。
损失函数(以上两个方法都用的这个损失评估函数)
有m个预训练的分类器
Ci
C
i
,表示对抗样本
x^
x
^
输出的分类概率
pi
p
i
,
pi=Ci(x^)
p
i
=
C
i
(
x
^
)
L(x,x^,t)=LC(x^,t)+LF(x,x^)=−∑i=1mlog(Ci(x^)[t])+w∥x^−x∥kk
L
(
x
,
x
^
,
t
)
=
L
C
(
x
^
,
t
)
+
L
F
(
x
,
x
^
)
=
−
∑
i
=
1
m
l
o
g
(
C
i
(
x
^
)
[
t
]
)
+
w
‖
x
^
−
x
‖
k
k
误差函数由两部分组成,
LC
L
C
表示分类器损失,
LF
L
F
表示保真度损失。
LC
L
C
对不能产生目标攻击类进行惩罚。
LF
L
F
保证输出的对抗样本和原始样本足够相似。
权重
w
w
用来折中两个损失指标的,
k的选择应该使它不会促进稀疏性,否则一些小的区域会很明显。如果
k=2
k
=
2
,那么就是
L2
L
2
范数,可以由
∥R(x,t)∥22
‖
R
(
x
,
t
)
‖
2
2
替换。
评价指标:
Targeted fooling rate (TFR):
argmax(C(x^))=t≠cx
a
r
g
m
a
x
(
C
(
x
^
)
)
=
t
≠
c
x
,
x≈x^
x
≈
x
^
Misclassification rate (MR):
argmax(C(x^))≠cx
a
r
g
m
a
x
(
C
(
x
^
)
)
≠
c
x
,
x≈x^
x
≈
x
^
Fidelity score (FS):每个像素在每个通道下的平均残差范数
Confidence (C):成功欺骗为目标类时的平均概率,是一个置信度指标。
over
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)