鲁棒性迁移
十八、《What it Thinks is Important is Important: Robustness Transfers through Input Gradients》
1、简介
这篇论文提供了一种能够迁移对adversarial perturbation的鲁棒性的方法。以往的一些工作都是首先产生一些adversarial examples,把它们放到训练集中对模型进行retrain从而提升鲁棒性,这种鲁棒性可以在不同的任务之间进行迁移,但是要求不同任务使用的是同一个模型,这是一个很大的限制。本文提供了一种“input gradient adversarial matching”的方法,可以做到将鲁棒性在不同任务,不同模型框架之间进行迁移。本文的重点是鲁棒性的迁移,而不是如何attack一种模型,也不是如何提高鲁棒性。
2、Input gradient adversarial matching
如图所示,首先训练好一个teacher model,该模型已经对adversarial examples具有一定鲁棒性,然后输出它的梯度 J t J_{t} Jt 。student model是将要训练的,它同样也输出一个梯度 J s J_{s} Js ,那么input gradient adversarial matching所做的就是要让 J s J_{s} Js 和 J t J_{t} Jt 尽可能相同 ,同时还要让discriminator model把 J s J_{s} Js 认作 J t J_{t} Jt ,这种做法相当于是把输入的梯度作为媒介来进行transfer,也正因如此,这种transfer的方法可以不受source target 和 target task的模型框架的制约,因为transfer的是梯度,与模型框架无关。
这篇文章并没有相关的数学证明来保证迁移了输入的梯度就能够迁移对adversarial examples 的鲁棒性。文中提供了一种分析,因为输入的梯度实际上表示了在每个像素上(输入为图片时)的变化会对输出产生什么方向的影响,因此input的梯度在某种程度上反应了这个模型认为在某个像素上的改变会产生多大的影响 ,这也就是题目中“What it Thinks is Important is Important”的含义,所以从这种角度出发,如果针对同样的input,student model能够学到一个和teacher model非常接近的梯度,那么就可以认为此时的student model也具备了鲁棒性。
3、算法框架
宏观地来看,该算法有两个步骤,首先是对teacher model进行finetune(微调)其主要作用是最小化在目标任务的训练集上的loss,这其实是对teacher model再优化的过程。第二步是adversarial regularization
首先,对于teacher model,它的损失函数为:
L
ψ
,
xent
(
x
,
y
,
ψ
)
=
E
(
x
,
y
)
[
−
y
⊤
log
f
t
(
x
)
]
L_{\psi, \text { xent }}(\mathbf{x}, \mathbf{y}, \psi)=\mathbb{E}_{(\mathbf{x}, \mathbf{y})}\left[-\mathbf{y}^{\top} \log f_{t}(\mathbf{x})\right]
Lψ, xent (x,y,ψ)=E(x,y)[−y⊤logft(x)]
注意,这是一个大于0的loss,y采用了one-hot vector。为了保存teacher model已经学到的一些robust representation,文中将teacher model中的logit layer去掉换成了finetune之后的logti layer:
ψ
logit
∗
=
argmin
ψ
logit
L
xent
(
z
(
x
,
ψ
†
)
,
y
,
ψ
logit
)
\psi_{\text {logit }}^{*}=\underset{\psi_{\text {logit }}}{\operatorname{argmin}} L_{\text {xent }}\left(\mathbf{z}\left(\mathbf{x}, \psi^{\dagger}\right), \mathbf{y}, \psi_{\text {logit }}\right)
ψlogit ∗=ψlogit argminLxent (z(x,ψ†),y,ψlogit )
z
(
x
,
ψ
†
)
\mathbf{z}\left(\mathbf{x}, \psi^{\dagger}\right)
z(x,ψ†) 表示logit layer的前一个隐藏层,
ψ
†
\psi^{\dagger}
ψ† 表示固定的权重,
ψ
logit
\psi_{\text {logit }}
ψlogit 表示新的logit layer,其实就是logit layer的权重矩阵。所以finetune之后的logit layer实际上是在对teacher model之前学到的feature和目标训练集的标签求loss。当finetune完成,所有的权重都fix再开始进行下一步。
接下来就是student model的损失函数:
L
θ
,
x
e
n
t
(
x
,
y
,
θ
)
=
E
(
x
,
y
)
[
−
y
⊤
log
f
s
(
x
)
]
L_{\theta, \mathrm{xent}}(\mathbf{x}, \mathbf{y}, \theta)=\mathbb{E}_{(\mathbf{x}, \mathbf{y})}\left[-\mathbf{y}^{\top} \log f_{\mathbf{s}}(\mathbf{x})\right]
Lθ,xent(x,y,θ)=E(x,y)[−y⊤logfs(x)]
和teacher model的损失函数基本相同,只是参数不同。teacher model和student model的损失函数在本文中的作用有两个:
1、计算梯度
2、用来表示最终的adversarial loss
现在teacher model和strudent model的损失函数都已经得到,就可以计算出对于input的梯度:
J
s
(
x
)
:
=
∇
x
L
θ
,
x
e
n
t
=
[
∂
L
θ
,
xent
∂
x
1
⋯
∂
L
θ
,
x
e
n
t
∂
x
d
]
\mathrm{J}_{\mathrm{s}}(\mathbf{x}):=\nabla_{\mathbf{x}} L_{\theta, \mathrm{xent}}=\left[\frac{\partial L_{\theta, \text { xent }}}{\partial \mathbf{x}_{1}} \cdots \frac{\partial L_{\theta, \mathrm{xent}}}{\partial \mathbf{x}_{d}}\right]
Js(x):=∇xLθ,xent=[∂x1∂Lθ, xent ⋯∂xd∂Lθ,xent]
J t ( x ) : = ∇ x L ψ , x e n t = [ ∂ L ψ , xent ∂ x 1 ⋯ ∂ L ψ , xent ∂ x d ] \mathrm{J}_{\mathrm{t}}(\mathbf{x}):=\nabla_{\mathbf{x}} L_{\psi, \mathrm{xent}}=\left[\frac{\partial L_{\psi, \text { xent }}}{\partial \mathbf{x}_{1}} \quad \cdots \quad \frac{\partial L_{\psi, \text { xent }}}{\partial \mathbf{x}_{d}}\right] Jt(x):=∇xLψ,xent=[∂x1∂Lψ, xent ⋯∂xd∂Lψ, xent ]
所以接下来要做的就是训练teacher model使得
J
t
J_{t}
Jt 和
J
s
J_{s}
Js 尽可能相同,并且要让discriminator model把
J
s
J_{s}
Js 识别成
J
t
J_{t}
Jt 。文中
f
disc
(
J
)
f_{\text {disc }}(\mathrm{J})
fdisc (J) 的输出表示的是discriminator model把
J
s
J_{s}
Js 识别成
J
t
J_{t}
Jt 的概率,我们希望这个概率越大越好,因为这个概率越大说明
J
s
J_{s}
Js 和
J
t
J_{t}
Jt 越难区分,即
J
s
J_{s}
Js 和
J
t
J_{t}
Jt 的相似度越高。对于discriminator model,文中定义它的损失函数为:
L
a
d
v
=
E
J
t
[
log
f
d
i
s
c
(
J
t
)
]
+
E
J
s
[
log
(
1
−
f
d
i
s
c
(
J
s
)
)
]
L_{\mathrm{adv}}=\mathbb{E}_{\mathrm{J}_{\mathrm{t}}}\left[\log f_{\mathrm{disc}}\left(\mathrm{J}_{\mathrm{t}}\right)\right]+\mathbb{E}_{\mathrm{J}_{\mathrm{s}}}\left[\log \left(1-f_{\mathrm{disc}}\left(\mathrm{J}_{\mathrm{s}}\right)\right)\right]
Ladv=EJt[logfdisc(Jt)]+EJs[log(1−fdisc(Js))]
简单分析一下这个损失函数不难发现,因为
f
disc
(
J
)
f_{\text {disc }}(\mathrm{J})
fdisc (J) 的输出表示的是discriminator model把
J
s
J_{s}
Js 识别成
J
t
J_{t}
Jt 的概率,所以这个损失函数的值域是
(
−
∞
,
0
]
\left(-\infin, 0\right]
(−∞,0] ,只有当discriminator model能够完全正确地区分
J
s
J_{s}
Js 和
J
t
J_{t}
Jt 时loss为0,其余时候都是负数。所以对于student modle,我们希望
L
a
d
v
L_{adv}
Ladv 越小越好,但是对于discriminator model,它会希望 $L_{adv} $越大越好。
最后就是权重更新的环节,针对student model,参数更新采用SGD的方法:
θ
∗
=
argmin
θ
(
L
θ
,
x
e
n
t
+
λ
a
d
v
L
a
d
v
)
\theta^{*}=\underset{\theta}{\operatorname{argmin}}\left(L_{\theta, \mathrm{xent}}+\lambda_{\mathrm{adv}} L_{\mathrm{adv}}\right)
θ∗=θargmin(Lθ,xent+λadvLadv)
可以看到,最后用来更新的损失函数是student model的损失与discriminator model的损失的结合,权重
λ
a
d
v
\lambda_{adv}
λadv 用来控制adversarial regularization的幅度。如果它为0,则相当于普通地训练student model,如果不为0,则student model会逐渐做到“input gradient adversarial matching”
L
a
d
v
L_{adv}
Ladv 是一个adversarial regularization term,它是discriminator model的loss,由于discriminator model希望 $L_{adv} $越大越好,所以discriminator model的更新方式如下,也是采用SGD:
ϕ
∗
=
argmax
ϕ
L
a
d
v
\phi^{*}=\underset{\phi}{\operatorname{argmax}} L_{\mathrm{adv}}
ϕ∗=ϕargmaxLadv
整个算法流程如下:
4、其他
文中还介绍了一些数据预处理的方法,针对不同尺寸的输入可以做一些仿射变化,resize,crop等等。
关于不同task之间的鲁棒性的迁移文中主要做了两类实验,一类是从小模型任务向大模型任务迁移,比方说在一个比较简单的数据集上训练teacher model,然后在比较复杂的数据集上训练student model,并试图把teacher model中的鲁棒性迁移过来。另一类则反之。
5、相似论文
《JACOBIAN ADVERSARIALLY REGULARIZED NETWORKS FOR ROBUSTNESS》这篇论文和《What it Thinks is Important is Important: Robustness Transfers through Input Gradients》比较相近,它的framework和伪代码如下:
可以发现,这篇论文的重点不是如何从teacher model中迁移鲁棒性,而是如何在训练分类器的同时online地提升鲁棒性。
之前的一些工作表明,经历过adversarial training的具有较高鲁棒性的模型通常会有一个和原图有些类似的jacobian矩阵(梯度矩阵)所以这篇文章就试图训练一个分类器,让它计算出的input的梯度越来越接近最开始的input,以此来直接提升鲁棒性而不用从其他已经训练好的模型中迁移。和上一篇论文相似的地方是,这里依旧采用了一个discriminator model,它的输出是该模型认为input属于训练集中的图像而非该图像的jacobian矩阵的概率,同样我们希望这个概率越大越好。
由于这篇文章是online地在提升模型的鲁棒性,所以teacher model替换成了一个adaptor model,该adaptor model由一个 1 × 1 1\times1 1×1 的卷积层和tanh**函数构成。为什么要有这样一个模型呢?因为,虽然一个鲁棒性很好的模型的jacobian矩阵和原图有一定相似度,但是事实上我们能很明显地看出这是两幅差异很大的图,因为他们的像素分布是不同的,因此discriminator model可能很容易就能区分二者。而这个adaptor model的作用就是将jacobian矩阵向输入原图作映射。
分类器的损失函数为:
L
c
l
s
=
E
(
x
,
y
)
[
−
y
⊤
log
f
c
l
s
(
x
)
]
\mathcal{L}_{\mathrm{cls}}=\mathbb{E}_{(\mathbf{x}, \mathbf{y})}\left[-\mathbf{y}^{\top} \log f_{\mathrm{cls}}(\mathbf{x})\right]
Lcls=E(x,y)[−y⊤logfcls(x)]
得到梯度:
J
(
x
)
:
=
∇
x
L
c
l
s
=
[
∂
L
c
l
s
∂
x
1
⋯
∂
L
c
l
s
∂
x
d
]
J(\mathbf{x}):=\nabla_{\mathbf{x}} \mathcal{L}_{\mathrm{cls}}=\left[\frac{\partial \mathcal{L}_{\mathrm{cls}}}{\partial \mathbf{x}_{1}} \quad \cdots \quad \frac{\partial \mathcal{L}_{\mathrm{cls}}}{\partial \mathbf{x}_{d}}\right]
J(x):=∇xLcls=[∂x1∂Lcls⋯∂xd∂Lcls]
adaptor model:
J
′
=
f
apt
(
J
)
J^{\prime}=f_{\text {apt }}(J)
J′=fapt (J)
generator:
G
θ
,
ψ
(
x
,
y
)
=
f
a
p
t
(
∇
x
L
c
l
s
(
x
,
y
)
)
G_{\theta, \psi}(\mathbf{x}, \mathbf{y})=f_{\mathrm{apt}}\left(\nabla_{\mathbf{x}} \mathcal{L}_{\mathrm{cls}}(\mathbf{x}, \mathbf{y})\right)
Gθ,ψ(x,y)=fapt(∇xLcls(x,y))
adversarial loss:
L
a
d
v
=
E
x
[
log
f
d
i
s
c
(
x
)
]
+
E
J
′
[
log
(
1
−
f
d
i
s
c
(
J
′
)
)
]
=
E
x
[
log
f
d
i
s
c
(
x
)
]
+
E
(
x
,
y
)
[
log
(
1
−
f
d
i
s
c
(
G
θ
,
ψ
(
x
,
y
)
)
)
]
=
E
x
[
log
f
d
i
s
c
(
x
)
]
+
E
(
x
,
y
)
[
log
(
1
−
f
d
i
s
c
(
f
a
p
t
(
∇
x
L
c
l
s
(
x
,
y
)
)
)
)
]
\begin{aligned}\mathcal{L}_{\mathrm{adv}} &=\mathbb{E}_{\mathbf{x}}\left[\log f_{\mathrm{disc}}(\mathbf{x})\right]+\mathbb{E}_{J^{\prime}}\left[\log \left(1-f_{\mathrm{disc}}\left(J^{\prime}\right)\right)\right] \\&=\mathbb{E}_{\mathbf{x}}\left[\log f_{\mathrm{disc}}(\mathbf{x})\right]+\mathbb{E}_{(\mathbf{x}, \mathbf{y})}\left[\log \left(1-f_{\mathrm{disc}}\left(G_{\theta, \psi}(\mathbf{x},\mathbf{y})\right)\right)\right] \\&=\mathbb{E}_{\mathbf{x}}\left[\log f_{\mathrm{disc}}(\mathbf{x})\right]+\mathbb{E}_{(\mathbf{x}, \mathbf{y})}\left[\log \left(1-f_{\mathrm{disc}}\left(f_{\mathrm{apt}}\left(\nabla_{\mathbf{x}} \mathcal{L}_{\mathrm{cls}}(\mathbf{x}, \mathbf{y})\right)\right)\right)\right]\end{aligned}
Ladv=Ex[logfdisc(x)]+EJ′[log(1−fdisc(J′))]=Ex[logfdisc(x)]+E(x,y)[log(1−fdisc(Gθ,ψ(x,y)))]=Ex[logfdisc(x)]+E(x,y)[log(1−fdisc(fapt(∇xLcls(x,y))))]
SGD权重更新:
θ
∗
=
arg
min
θ
(
L
c
l
s
+
λ
a
d
v
L
a
d
v
)
\theta^{*}=\underset{\theta}{\arg \min }\left(\mathcal{L}_{c l s}+\lambda_{a d v} \mathcal{L}_{a d v}\right)
θ∗=θargmin(Lcls+λadvLadv)
ψ ∗ = arg min u / l L a d v \psi^{*}=\underset{u / l}{\arg \min } \mathcal{L}_{a d v} ψ∗=u/largminLadv
ϕ ∗ = arg max ϕ L a d v \phi^{*}=\underset{\phi}{\arg \max } \mathcal{L}_{a d v} ϕ∗=ϕargmaxLadv