前言
本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!
DeepFool算法
特点:两种黑箱算法,即UPSET和ANGRI
论文原文:UPSET and ANGRI : Breaking High Performance Image Classifiers
正文
一些对抗样本的基础知识在这里就不赘述了,可以看我之前的博客。
先介绍两种算法的主要部分,具体网络结构以及共用同样的损失评价函数,在后面介绍。
UPSET: Universal Perturbations for Steering to Exact Targets
类标:
n
n
对抗扰动:,
j∈{1,2,⋯,n}
j
∈
{
1
,
2
,
⋯
,
n
}
即生成第j个目标分类的扰动
残差生成网络:
R
R
,
原始样本:
x
x
对抗样本:,生成公式如下
整体训练策略如下图所示,误差函数之后解释。
ANGRI: Antagonistic Network for Generating Rogue Images
原始样本:
x
x
正确类别:
目标类别:
t
t
,
对抗样本:
x^
x
^
生成公式如下
整体训练策略如下图所示,误差函数之后解释。
损失函数(以上两个方法都用的这个损失评估函数)
有个预训练的分类器
Ci
C
i
,表示对抗样本
x^
x
^
输出的分类概率
pi
p
i
,
pi=Ci(x^)
p
i
=
C
i
(
x
^
)
误差函数由两部分组成, LC L C 表示分类器损失, LF L F 表示保真度损失。
LC L C 对不能产生目标攻击类进行惩罚。
LF L F 保证输出的对抗样本和原始样本足够相似。
权重 w w 用来折中两个损失指标的,的选择应该使它不会促进稀疏性,否则一些小的区域会很明显。如果 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):成功欺骗为目标类时的平均概率,是一个置信度指标。