前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为对抗训练的理论工作添砖加瓦:选择"核心子集"进行训练,大大缩短训练时间

为对抗训练的理论工作添砖加瓦:选择"核心子集"进行训练,大大缩短训练时间

作者头像
CV君
发布2022-03-23 08:14:20
5040
发布2022-03-23 08:14:20
举报
文章被收录于专栏:我爱计算机视觉

引言

深度神经网络极易受到对抗样本的攻击。防御对抗样本攻击一个直观有效的方式就是对抗训练比如Free adversarial training 和Fast adversarial training,但问题是对抗训练比正常的训练要慢,主要原因在于对抗训练需要模型格外引入对抗样本进行训练,另外对抗训练的理论基础还不够扎实。

在该论文中作者为对抗训练的理论工作添砖加瓦,作者提出了一种在训练集中寻找核心子集的方法,并在该核心子集中进行对抗训练,它可以自适应于当前的一些对抗训练的方法并能大大缩短训练时间。该论文是一篇高质量集理论分析和实证考究的好文章。

论文链接:https://arxiv.org/abs/2112.00378v1

预备知识

令表示包含个独立同分布的样本训练集,其中。假定表示的是带有参数的神经网络分类器,将输入样本映射成一个向量。神经网络正常训练的目标函数可以表示成如下形式

\min\limits_{\theta}\sum\limits_{i=1}^n \Phi(x_i,y_i;f_\theta)

其中表示的是损失函数,其中最常用的函数是交叉熵函数,即

\Phi(x,y;f_\theta)=\mathcal{L}_{CE}(f_{\theta}(x),y)
\Phi(x,y;f_\theta)=\mathcal{L}_{CE}(f_{\theta}(x),y)
\Phi(x,y;f_\theta)=\mathcal{L}_{CE}(f_{\theta}(x),y)

对抗训练的目标函数可以表示为

\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.
\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.
\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.

其中表示和在空间之间的距离。将正常训练的目标函数与对抗训练的目标函数进行整合可以得到对抗训练的目标函数为

\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}
\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}
\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}

其中为正则化参数。

论文方法

该论文的核心目的就是要去寻找核心子集,所谓的核心子集就是能够对模型训练起到显著作用的训练子集。之前的研究都是在干净样本集中去寻找核心子集。

该论文要寻找核心子集的范围更大,它要在干净样本集和对抗样本集这个更大的集合中去寻找核心子集,利用该核心子集去进行对抗训练从而使得模型在保证分类精度的条件下,训练时间能够大大缩短。

Danskin定理

寻找核心子集的第一步就是要计算损失函数关于神经网络参数的梯度,可以用如下公式表示

\nabla_\theta \Phi(x_i,y_i;f_\theta),\quad \forall i\in 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
\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

在对抗训练中,计算损失函数关于神经网络参数的梯度则需要用到关于最大值目标的偏导。为此需要引入(1969)定理,该定理的描述如下所示令是一个非空紧的拓扑空间。

对于任意的,函数是可微的,并且在是连续的。令,则函数

是局部连续和方向可微的,并对于方向向量为的方向导数满足

\phi^{\prime}(\theta,h)=\sup\limits_{\delta\in \delta^{*}(\theta)}h^{\top}\nabla_{\theta}\ell(\theta,\delta)
\phi^{\prime}(\theta,h)=\sup\limits_{\delta\in \delta^{*}(\theta)}h^{\top}\nabla_{\theta}\ell(\theta,\delta)

当,且集合是单一元素时,最大值函数在上是可微的,且有

以上定理是告诉我们如何求得最大值函数的梯度。利用该定理去寻找对抗训练中的核心子集。

算法介绍

利用定理可知,在对抗训练中,损失函数关于神经网络参数的梯度可以表示为

\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}
\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}

其中是的解。考虑到定理在神经网络中可能并不成立,主要原因是神经网络非凸且不连续,作者将上式修改为

\nabla_{\theta}\Phi(x,y;f_\theta)\approx\nabla_{\theta}\mathcal{L}_{CE}(f_\theta(x_{adv}),y)
\nabla_{\theta}\Phi(x,y;f_\theta)\approx\nabla_{\theta}\mathcal{L}_{CE}(f_\theta(x_{adv}),y)
\nabla_{\theta}\Phi(x,y;f_\theta)\approx\nabla_{\theta}\mathcal{L}_{CE}(f_\theta(x_{adv}),y)

对于对抗训练,损失函数关于神经网络参数的梯度可以表示为

\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}
\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}
\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}

其中是近似下公式的解析解

\max\limits_{\hat{x}}\frac{\mathcal{L}_{CE}(f_{\theta}(\hat{x}),f_{\theta}(x))}{\lambda}
\max\limits_{\hat{x}}\frac{\mathcal{L}_{CE}(f_{\theta}(\hat{x}),f_{\theta}(x))}{\lambda}

其中对于的计算需要用到多变量的链式法则,令,则有如下公式

\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}
\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}
\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}

其中固定某个变量。综上可知对于对抗训练,损失函数关于神经网络参数的梯度可以表示为

\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}

该论文的算法示意图如下所示,训练一开始模型需要在全部数据集进行训练轮,然后进行核心子集的选取(先生成对抗样本,然后计算梯度计算,最后利用贪心算法进行选取样本),接着在该子集中训练轮,重复训练次,每一次的核心子集的选取跟梯度计算有关。

综上所述可以得到如下的算法流程图

实验结果

下表记录了不同对抗训练方法得到的模型在分类干净样本和对抗样本的准确率,以及所消耗的时间能耗。可以直观的发现,在与全数据集进行对抗训练的模型相比,经过本文提出的对抗训练方法在损失较小的分类精度的情况下,大大缩短了时间能耗。

下图展示了相对误差与加速曲线的图像,可以看出,在每种情况下,对抗核心集选择的温启动和批量版本的组合都提供了最佳性能。随着逐渐减小核心集的大小,可以发现训练速度也随之提高了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档