Improving Adversarial Robustness Using Proxy Distributions

Sehwag V., Mahloujifar S., Handina T., Dai S., Xiang C., Chiang M. and Mittal P. Improving adversarial robustness using proxy Distributions. arXiv preprint arXiv: 2104.09425, 2021.

本文利用GAN生成数据, 并利用这些数据进行对抗训练, 无论是自然精度还是鲁棒性都获得了极大的提升.
在相同的网络结构且不使用额外的真实数据的前提下, 该方法在RobustBench上取得最好的成绩.

主要内容

proxy distribution

本文首先给出了一个理论分析, 即在proxy distribution上取得的鲁棒性和与真实分布之间的差距有多大.

首先给出average robustness的定义:

\[\mathrm{Rob}_d (h, D) = \mathbb{E}_{(x, y)\sim D} [\inf_{h(x') \not =y} d(x', x)], \]

其中\(h\)是分类器, \(D\)是数据的分布, \(d\)是一个距离, 比如常见的\(\ell_{\infty}\). 该指标衡量的就是分类器\(h\)在数据分布\(D\)上的平均鲁棒性.

因为, 我们实际上可获得的是有限的数据集\(S\), \(S\)\(D\)中采样得到, 故我们更关心的实际上:

\[\mathop{\mathbb{E}} \limits_{S \sim D, \: h \leftarrow L(S)} [\mathrm{Rob}_d (h, D)], \]

其中\(L\)是某种训练算法, 比如常见的对抗训练.
由于:

\[\mathrm{Rob}_d (h, D) = (\mathrm{Rob}_d (h, D)-\mathrm{Rob}_d (h, \tilde{D})) + (\mathrm{Rob}_d (h, \tilde{D}) - \mathrm{Rob}_d (h, \hat{S})) + \mathrm{Rob}_d (h, \hat{S}). \]

其中\(\tilde{D}\)是另一个分布(这篇文章里就是proxy distribution, 用GAN拟合的分布), \(\hat{S}\)则是从\(\tilde{D}\)中采样的数据集.

\(\mathop{\mathbb{E}} \limits_{S \sim \tilde{D}^n, \: h \leftarrow L(S)} [\mathrm{Rob}_d (h, D)]\)
进一步, 有如下的分解(注意\(S \sim \tilde{D}^n\)表示\(S\)是从拟合的分布中采样的, 并且有\(n\)个样本.):

image-20210505113544306

即, 分成了三部分:

  1. Empirical robustness: 即在训练集上的鲁棒性;
  2. Generalization penalty: 即训练集上的鲁棒性和在整个拟合的数据分布上的鲁棒性的差距;
  3. Distribution-shift penalty: 即与真实分布上鲁棒性的差距.

前两项已经有别的工作研究了, 本文研究的是, 在拟合分布上的鲁棒性和真实分布上的乱不能更新的差距到底有多少(注意都是在拟合数据集上训练的\(h\)).

首先作者用wasserstein 散度定义两个分布的距离:

image-20210505114330947

接着给出定理1:

image-20210505114346639

定理1的意义在于, 其说明只要我们拟合的分布足够好, 那么鲁棒性的差距就能足够小, 这结果与分类器\(h\)无关!

作者还给出了一些推论, 和定理3说明上面的界是紧的, 但我感觉意义不大, 这里就不多赘述了.

如何利用构造的数据

训练的目标是很简洁的:

\[\min_{\theta} \: [\gamma \cdot \mathbb{E}_{(x, y)\sim D} [ \mathcal{L}_{adv} (\theta, x, y)] + (1 - \gamma) \cdot \mathcal{L}_{adv}\mathbb{E}_{(x,y)[\sim \tilde{D}}(\theta, x, y)]]. \]

前一项就是在真实数据上进行对抗训练, 后者就是在构造的数据上进行对抗训练.

伪造的数据集是这样构建的:

  1. 用DDPM模型拟合CIFAR-10的训练集的分布;
  2. 利用DDPM生成无标签数据\(\{x\}\);
  3. 利用LaNet和SplitNet对数据预测标签\(\{y_1\}\), \(\{y_2\}\);
  4. 去掉\(y_1 \not = y_2\)的数据, 去掉二者confidence均小于90%的数据.

作者总共生成了6M的数据, 在训练的时候, 每个batch, 真实的和虚假的数据的比例是1:1.

作者在验证鲁棒性上进行了实验, 这里不多赘述.

posted @ 2021-05-05 12:00  馒头and花卷  阅读(108)  评论(0编辑  收藏  举报