为对抗训练的理论工作添砖加瓦:选择"核心子集"进行训练,大大缩短训练时间
关注公众号,发现CV技术之美
▊ 引言
深度神经网络极易受到对抗样本的攻击。防御对抗样本攻击一个直观有效的方式就是对抗训练比如Free adversarial training 和Fast adversarial training,但问题是对抗训练比正常的训练要慢,主要原因在于对抗训练需要模型格外引入对抗样本进行训练,另外对抗训练的理论基础还不够扎实。
论文链接:https://arxiv.org/abs/2112.00378v1
▊ 预备知识
令表示包含个独立同分布的样本训练集,其中。假定表示的是带有参数的神经网络分类器,将输入样本映射成一个向量。神经网络正常训练的目标函数可以表示成如下形式
对抗训练的目标函数可以表示为
其中表示和在空间之间的距离。将正常训练的目标函数与对抗训练的目标函数进行整合可以得到对抗训练的目标函数为
其中为正则化参数。
▊ 论文方法
该论文的核心目的就是要去寻找核心子集,所谓的核心子集就是能够对模型训练起到显著作用的训练子集。之前的研究都是在干净样本集中去寻找核心子集。
▊ Danskin定理
寻找核心子集的第一步就是要计算损失函数关于神经网络参数的梯度,可以用如下公式表示
以上定理是告诉我们如何求得最大值函数的梯度。利用该定理去寻找对抗训练中的核心子集。
▊ 算法介绍
利用定理可知,在对抗训练中,损失函数关于神经网络参数的梯度可以表示为
其中是的解。考虑到定理在神经网络中可能并不成立,主要原因是神经网络非凸且不连续,作者将上式修改为
对于对抗训练,损失函数关于神经网络参数的梯度可以表示为
其中是近似下公式的解析解
其中对于的计算需要用到多变量的链式法则,令,则有如下公式
其中固定某个变量。综上可知对于对抗训练,损失函数关于神经网络参数的梯度可以表示为
该论文的算法示意图如下所示,训练一开始模型需要在全部数据集进行训练轮,然后进行核心子集的选取(先生成对抗样本,然后计算梯度计算,最后利用贪心算法进行选取样本),接着在该子集中训练轮,重复训练次,每一次的核心子集的选取跟梯度计算有关。
综上所述可以得到如下的算法流程图
▊ 实验结果
下表记录了不同对抗训练方法得到的模型在分类干净样本和对抗样本的准确率,以及所消耗的时间能耗。可以直观的发现,在与全数据集进行对抗训练的模型相比,经过本文提出的对抗训练方法在损失较小的分类精度的情况下,大大缩短了时间能耗。
下图展示了相对误差与加速曲线的图像,可以看出,在每种情况下,对抗核心集选择的温启动和批量版本的组合都提供了最佳性能。随着逐渐减小核心集的大小,可以发现训练速度也随之提高了。
END
欢迎加入「对抗攻击」交流群👇备注:对抗