深度神经网络极易受到对抗样本的攻击. 防御对抗样本攻击一个直观有效的方式就是对抗训练比如 F r e e a d v e r s a r i a l t r a i n i n g \mathrm{Free \text{ } adversarial\text{ } training}Freeadversarialtraining 和 F a s t a d v e r s a r i a l t r a i n i n g \mathrm{Fast \text{ } adversarial\text{ } training}Fastadversarialtraining, 但问题是对抗训练比正常的训练要慢, 主要原因在于对抗训练需要模型格外引入对抗样本进行训练, 另外对抗训练的理论基础还不够扎实. 在该论文中作者为对抗训练的理论工作添砖加瓦, 作者提出了一种在训练集中寻找核心子集的方法, 它可以自适应于当前的一些对抗训练的方法并能大大缩短训练时间. 该论文是一篇高质量集理论分析和实证考究的好文章.
论文链接: https://arxiv.org/abs/2112.00378v1
2 预备知识
令 D = { ( x i , y i ) } i = 1 n X * C \mathcal{D}=\{(x_i,y_i)\}^{n}_{i=1}\subset \mathbb{X}\times\mathbb{C}D={(xi,yi)}i=1nX*C 表示包含 n nn 个独立同分布的样本训练集, 其中 C = [ k ] = { 1 , 2 , , k } \mathbb{C}=[k]=\{1,2,\cdots,k\}C=[k]={1,2,,k}. 假定 f θ : X → R k f_{\theta}:\mathbb{X}\rightarrow \mathbb{R}^kfθ:X→Rk 表示的是带有参数θ \thetaθ的神经网络分类器, 将输入样本 x ∈ X x\in \mathbb{X}x∈X 映射成一个 s o f t m a x \mathrm{softmax}softmax 向量 f θ ( x ) ∈ R k f_{\theta}(x)\in \mathbb{R}^kfθ(x)∈Rk. 神经网络正常训练的目标函数可以表示成如下形式 min θ ∑ i = 1 n Φ ( x i , y i ; f θ ) \min\limits_{\theta}\sum\limits_{i=1}^n \Phi(x_i,y_i;f_\theta)θmini=1∑nΦ(xi,yi;fθ)其中Φ ( ) \Phi(\cdot)Φ()表示的是损失函数, 其中Φ \PhiΦ最常用的函数是交叉熵函数 L C E \mathcal{L}_{CE}LCE, 即Φ ( x , y ; f θ ) = L C E ( f θ ( x ) , y ) \Phi(x,y;f_\theta)=\mathcal{L}_{CE}(f_{\theta}(x),y)Φ(x,y;fθ)=LCE(fθ(x),y)对抗训练的目标函数可以表示为 { Φ ( x , y ; f θ ) = max x ^ L C E ( f θ ( x ^ ) , y ) d ( x ^ , x ) ≤ ε \left\{\begin{aligned}\Phi(x,y;f_\theta)&=\max\limits_{\hat{x}}\mathcal{L}_{CE}(f_\theta(\hat{x}),y)\\d(\hat{x},x)&\le\varepsilon\end{aligned}\right.Φ(x,y;fθ)d(x^,x)=x^maxLCE(fθ(x^),y)≤ε其中 d ( , ) d(\cdot,\cdot)d(,) 表示 x ^ \hat{x}x^ 和 x xx 在空间 X \mathbb{X}X 之间的距离. 将正常训练的目标函数与对抗训练的目标函数进行整合可以得到 T R A D E S \mathrm{TRADES}TRADES 对抗训练的目标函数为Φ ( x , y ; f θ ) = L C E ( f θ ( x ) , y ) + max x ^ L C E ( f θ ( x ^ ) , f θ ( x ) ) λ \Phi(x,y;f_\theta)=\mathcal{L}_{CE}(f_\theta(x),y)+\max\limits_{\hat{x}}\frac{\mathcal{L}_{CE}(f_\theta(\hat{x}),f_\theta(x))}{\lambda}Φ(x,y;fθ)=LCE(fθ(x),y)+x^maxλLCE(fθ(x^),fθ(x))其中λ \lambdaλ为正则化参数.
3 论文方法
该论文的核心目的就是要去寻找核心子集, 所谓的核心子集就是能够对模型训练起到显著作用的训练子集. 之前的研究都是在干净样本集中去寻找核心子集. 该论文要寻找核心子集的范围更大, 它要在干净样本集和对抗样本集这个更大的集合中去寻找核心子集, 利用该核心子集去进行对抗训练从而使得模型在保证分类精度的条件下, 训练时间能够大大缩短.
- 3.1
- D a n s k i n \mathrm{
- Danskin
- }
- Danskin
定理
寻找核心子集的第一步就是要计算损失函数关于神经网络参数的梯度, 可以用如下公式表示 θ Φ ( x i , y i ; f θ ) , i ∈ V \nabla_\theta \Phi(x_i,y_i;f_\theta),\quad \forall i\in VθΦ(xi,yi;fθ),i∈V 其中 V = [ n ] = { 1 , 2 , , n } V=[n]= \{1,2,\cdots,n\}V=[n]={1,2,,n}表示训练数据集的下标索引. 在正常的神经网络训练中, 损失函数关于神经网络参数的梯度可以表示为 θ Φ ( x i , y i ; f θ ) = θ L C E ( f θ ( x i ) , y i ) , i ∈ V \nabla_\theta \Phi(x_i,y_i;f_\theta)=\nabla_\theta \mathcal{L}_{CE}(f_\theta(x_i),y_i),\quad \forall i\in VθΦ(xi,yi;fθ)=θLCE(fθ(xi),yi),i∈V 在对抗训练中, 计算损失函数关于神经网络参数的梯度则需要用到关于最大值目标的偏导. 为此需要引入 D a n s k i n \mathrm{Danskin}Danskin(1969)定理, 该定理的描述如下所示
定理 1(D a n s k i n \mathrm{Danskin}Danskin): 令 S \mathcal{S}S 是一个非空紧的拓扑空间. 对于任意的δ ∈ S \delta\in \mathcal{S}δ∈S, 函数 ( θ , δ ) : R m * S → R \ell(\theta,\delta): \mathbb{R}^m \times \mathcal{S}\rightarrow \mathbb{R}(θ,δ):Rm*S→R 是可微的, 并且 θ ( θ , δ ) \nabla_{\theta}\ell(\theta,\delta)θ(θ,δ)在 R m * S \mathbb{R}^{m}\times \mathcal{S}Rm*S 是连续的. 令δ ( θ ) = { δ ∈ argmax δ ∈ S ( θ , δ ) } \delta^{*}(\theta)=\{\delta\in \argmax\limits_{\delta\in \mathcal{S}}\ell(\theta,\delta)\}δ(θ)={δ∈δ∈Sargmax(θ,δ)}, 则函数Φ ( θ ) = max δ ∈ S ( θ , δ ) \Phi(\theta)=\max\limits_{\delta \in \mathcal{S}}\ell(\theta,\delta)Φ(θ)=δ∈Smax(θ,δ)是局部 L i p s c h i t z \mathrm{Lipschitz}Lipschitz 连续和方向可微的, 并对于方向向量为 h hh 的方向导数满足ϕ ′ ( θ , h ) = sup δ ∈ δ ( θ ) h θ ( θ , δ ) \phi^{\prime}(\theta,h)=\sup\limits_{\delta\in \delta^{*}(\theta)}h^{\top}\nabla_{\theta}\ell(\theta,\delta)ϕ′(θ,h)=δ∈δ(θ)suphθ(θ,δ)当θ ∈ R m \theta\in\mathbb{R}^{m}θ∈Rm, 且集合δ ( θ ) = { δ θ } \delta^{*}(\theta)=\{\delta^{*}_\theta\}δ(θ)={δθ}是单一元素时, 最大值函数在θ \thetaθ上是可微的, 且有 ϕ ( θ ) = θ ( θ , δ θ ) \nabla \phi(\theta)=\nabla_\theta \ell(\theta,\delta^{*}_\theta)ϕ(θ)=θ(θ,δθ)
以上定理是告诉我们如何求得最大值函数的梯度. 利用该定理去寻找对抗训练中的核心子集.
3.2 核心子集选取
核心子集选取的目的是在训练集中选择一个可以更好近似全体梯度的子数据集, 具体的目标函数可以表示为∥ ∑ i ∈ V θ Φ ( x i ; y i ; f θ ) − ∑ j ∈ S γ j θ Φ ( x j , y j ; f θ ) ∥ \left\|\sum\limits_{i\in V}\nabla_{\theta}\Phi(x_i;y_i;f_{\theta})-\sum\limits_{j\in \mathcal{S}}\gamma_j\nabla_{\theta}\Phi(x_j,y_j;f_{\theta})\right\|∥∥∥∥∥∥i∈V∑θΦ(xi;yi;fθ)−j∈S∑γjθΦ(xj,yj;fθ)∥∥∥∥∥∥其中 V = [ n ] = { 1 , 2 , , n } V=[n]=\{1,2,\cdots,n\}V=[n]={1,2,,n}表示的是训练集, 核心子集表示为 S \mathcal{S}S, 且有 S V \mathcal{S}\subset VSV. 作者为了计算方便, 将上式进一步化简为 S = arg min S V ∣ S ∣ , s . t . L ( S ) ∑ i ∈ V min j ∈ S d i j ≤ ε \mathcal{S}^*=\arg\min\limits_{\mathcal{S}\subseteq V}|\mathcal{S}|,\quad \mathrm{s.t.}\quad L(\mathcal{S})\triangleq \sum\limits_{i\in V}\min\limits_{j\in \mathcal{S}}d_{ij}\le \varepsilonS=argSVmin∣S∣,s.t.L(S)i∈V∑j∈Smindij≤ε其中 d i j = max θ ∈ Θ ∥ θ Φ ( x i , y i ; f θ ) − θ Φ ( x j , y j ; f θ ) ∥ d_{ij}\triangleq=\max\limits_{\theta \in \Theta}\|\nabla_{\theta}\Phi(x_i,y_i;f_{\theta})-\nabla_{\theta}\Phi(x_j,y_j;f_{\theta})\|dij=θ∈Θmax∥θΦ(xi,yi;fθ)−θΦ(xj,yj;fθ)∥表示的是最大化梯度样本间的梯度距离.
3.3 算法介绍
利用
- D a n s k i n \mathrm{
- Danskin
- }
- Danskin
定理可知, 在对抗训练中, 损失函数关于神经网络参数的梯度可以表示为
θ Φ ( x , y ; f θ ) = θ max x ^ L C E ( f θ ( x ^ ) , y ) = θ L C E ( f θ ( x ) , y ) \begin{aligned}\nabla_{\theta}\Phi(x,y;f_\theta)&=\nabla_{\theta}\max\limits_{\hat{x}}\mathcal{L}_{CE}(f_\theta(\hat{x}),y)\\&=\nabla_{\theta}\mathcal{L}_{CE}(f_\theta(x^{*}),y)\end{aligned}
θ
Φ(x,y;
f
)
=
θ
- max
- L
- CE
- (
- f
- (
- ),y)
- =
θ
- L
- CE
- (
- f
- (
- x
- ),y)
其中
x x^{*}
x
是
- max x ^ L C E ( f θ ( x ^ ) , y ) \max\limits_{
- \hat{
- x
- }
- }\mathcal{
- L
- }_{
- CE
- }(f_\theta(\hat{
- x
- }),y)
- L
- CE
- (
- f
- (
- ),y)
的解. 考虑到
- D a n s k i n \mathrm{
- Danskin
- }
- Danskin
定理在神经网络中可能并不成立, 主要原因是神经网络非凸且不连续, 作者将上式修改为
θ Φ ( x , y ; f θ ) ≈ θ L C E ( f θ ( x a d v ) , y ) \nabla_{\theta}\Phi(x,y;f_\theta)\approx\nabla_{\theta}\mathcal{L}_{CE}(f_\theta(x_{adv}),y)
θ
Φ(x,y;
f
)≈
θ
- L
- CE
- (
- f
- (
- x
- adv
- ),y)
对于
- T R A D E S \mathrm{
- TRADES
- }
- TRADES
对抗训练, 损失函数关于神经网络参数的梯度可以表示为
θ Φ ( x , y ; f θ ) ≈ θ L C E ( f θ ( x ) , y ) + θ L C E ( f θ ( x a d v ) , f θ ( x ) ) λ \nabla_{\theta}\Phi(x,y;f_\theta)\approx\nabla_{\theta}\mathcal{L}_{CE}(f_\theta(x),y)+\frac{\nabla_{\theta}\mathcal{L}_{CE}(f_{\theta}(x_{adv}),f_{\theta}(x))}{\lambda}
θ
Φ(x,y;
f
)≈
θ
- L
- CE
- (
- f
- (x),y)+
θ
L
CE
(
f
θ
(
x
adv
),
f
θ
(x))
其中
- x a d v x_{
- adv
- }
- x
- adv
是近似下公式的解析解
max x ^ L C E ( f θ ( x ^ ) , f θ ( x ) ) λ \max\limits_{\hat{x}}\frac{\mathcal{L}_{CE}(f_{\theta}(\hat{x}),f_{\theta}(x))}{\lambda}
L
CE
(
f
θ
(
),
f
θ
(x))
其中对于
θ L C E ( f θ ( x ^ ) , f θ ( x ) ) λ \frac{\nabla_{\theta}\mathcal{L}_{CE}(f_{\theta}(\hat{x}),f_{\theta}(x))}{\lambda}
λ
θ
L
CE
(
f
θ
(
),
f
θ
(x))
的计算需要用到多变量的链式法则, 令
ω ( θ ) = f θ ( x a d v ) \omega(\theta)=f_{\theta}(x_{adv})
ω(θ)=
f
θ
(
x
adv
)
,
z ( θ ) = f θ ( x ) z(\theta)=f_{\theta}(x)
z(θ)=
f
θ
(x)
则有如下公式
θ L C E ( f θ ( x a d v ) , f θ ( x ) ) = θ L C E ( ω ( θ ) , z ( θ ) ) = ∂ L C E ∂ ω θ ω ( θ ) + ∂ L C E ∂ z θ z ( θ ) = θ L C E ( f θ ( x a d v ) , f r e e z e ( f θ ( x ) ) ) + θ L C E ( f r e e z e ( f θ ( x a d v ) ) , f θ ( x ) ) \begin{aligned}\nabla_{\theta}\mathcal{L}_{CE}(f_{\theta}(x_{adv}),f_{\theta}(x))&=\nabla_{\theta}\mathcal{L}_{CE}(\omega(\theta),z(\theta))\\&=\frac{\partial \mathcal{L}_{CE}}{\partial \omega}\nabla_{\theta}\omega(\theta)+\frac{\partial \mathcal{L}_{CE}}{\partial z}\nabla_{\theta}z(\theta)\\&=\nabla_{\theta}\mathcal{L}_{CE}(f_\theta(x_{adv}),\mathrm{freeze}(f_{\theta}(x)))\\& + \nabla_{\theta}\mathcal{L}_{CE}(\mathrm{freeze}(f_{\theta}(x_{adv})),f_{\theta}(x))\end{aligned}
θ
L
CE
(
f
θ
(
x
adv
),
f
θ
(x))
=
θ
- L
- CE
- (ω(θ),z(θ))
- =
∂ω
∂
L
CE
θ
ω(θ)+
∂z
∂
L
CE
θ
z(θ)
=
θ
- L
- CE
- (
- f
- (
- x
- adv
- ),
- freeze
- (
- f
θ
(x)))
+
θ
- L
- CE
- (
- freeze
- (
- f
θ
(
x
adv
)),
f
θ
(x))
其中
- f r e e z e ( ) \mathrm{
- freeze
- }(\cdot)
- freeze
- ()
固定某个变量. 综上可知对于
- T R A D E S \mathrm{
- TRADES
- }
- TRADES
对抗训练, 损失函数关于神经网络参数的梯度可以表示为
θ Φ ( x , y ; f θ ) = θ L C E ( f θ ( x ) , y ) + θ L C E ( f θ ( x a d v ) , f r e e z e ( f θ ( x ) ) ) λ + θ L C E ( f r e e z e ( f θ ( x a d v ) ) , f θ ( x ) ) λ \begin{aligned}\nabla_{\theta}\Phi(x,y;f_{\theta})&=\nabla_{\theta}\mathcal{L}_{CE}(f_{\theta}(x),y)\\&+\frac{\nabla_{\theta}\mathcal{L}_{CE}(f_{\theta}(x_{adv}),\mathrm{freeze}(f_{\theta}(x)))}{\lambda}\\&+\frac{\nabla_{\theta}\mathcal{L}_{CE}(\mathrm{freeze}(f_{\theta}(x_{adv})),f_{\theta}(x))}{\lambda}\end{aligned}
θ
Φ(x,y;
f
θ
)
=
θ
L
CE
(
f
θ
(x),y)
+
λ
θ
L
CE
(
f
θ
- (
- x
- adv
- ),
- freeze
- (
- f
θ
(x)))
+
λ
θ
- L
- CE
- (
- freeze
- (
- f
θ
(
x
adv
)),
f
θ
(x))
该论文的算法示意图如下所示, 训练一开始模型需要在全部数据集进行训练
- T w a r m T_{
- warm
- }
- T
- warm
轮, 然后进行核心子集的选取(先生成对抗样本, 然后计算梯度计算, 最后利用贪心算法进行选取样本), 接着在该子集中训练
T T T
轮, 重复训练
N N N
次, 每一次的核心子集的选取跟梯度计算有关.
综上所述可以得到如下的算法流程图
4 实验结果
下表记录了不同对抗训练方法得到的模型在分类干净样本和对抗样本的准确率, 以及所消耗的时间能耗. 可以直观的发现, 在与全数据集进行对抗训练的模型相比, 经过本文提出的对抗训练方法在损失较小的分类精度的情况下, 大大缩短了时间能耗.
下图展示了相对误差与加速曲线的图像, 可以看出, 在每种情况下, 对抗核心集选择的温启动和批量版本的组合都提供了最佳性能. 随着逐渐减小核心集的大小, 可以发现训练速度也随之提高了.
来源: https://blog.csdn.net/qq_38406029/article/details/122423700