Adversarial Vertex Mixup: Toward Better Adversarially Robust Generalization

Lee S., Lee H. and Yoon S. Adversarial vertex mixup: toward better adversarially robust generalization. In IEEE Conference on Computer Vsion and Pattern Recognition (CVPR), 2020.

本文提出类注意哦那个 AVmixup 方法用以提高鲁棒的泛化性.

主要内容

通常, 我们会选择用 \(x + \delta\) 来作为对抗样本, 但是这个方式的对抗样本缺乏多样性, 故会导致较差的鲁棒泛化性. 本文采用(启发自 mixup)

\[x' = \alpha x + (1 - \alpha) x_{av}, \\ x_{av} = x + \gamma \cdot \delta_x, \]

这里通常 \(\gamma \ge 1\), 即 \(x_{av}\) 是沿着\(\delta\)方向的一个延拓. 最后的对抗样本\(x'\)是在干净样本\(x'\)和这个延拓后的样本中选择的. 和 mixup, 给定其概率向量为

\[\bm{p} = \alpha \phi(y, \lambda_1) + (1 - \alpha) \phi(y, \lambda_2) \in \mathbb{R}^K. \]

这里\(\phi\)是soft_label的函数, 其实 mixup 就是直接用的 \(y\), 作者这里用了最普通的label smoothing:

\[[\phi(y, \lambda)]_k = \left \{ \begin{array}{ll} \lambda & k = y \\ \frac{1 - \lambda}{K - 1} & k \not = y. \end{array} \right . \]

算法:

  1. \(\delta \leftarrow \mathcal{G}(x, y; \theta)\);
  2. \(x_{av} \leftarrow x + \gamma \delta\), \(\alpha \sim \mathcal{U}[0, 1]\);
  3. \(x' \leftarrow \alpha x + (1 - \alpha) x_{av}\);
  4. \(\bm{p} \leftarrow \alpha \phi(y, \lambda_1) + (1 - \alpha)(y, \lambda_2)\);
  5. \(\theta \leftarrow \theta - \tau \frac{1}{n}\sum_{i=1}^n \nabla_{\theta} \mathcal{L}(x'_i, \bm{p}_i; \theta)\).

注: 作者给出了在高斯分布上的分析, 但是我顺不起来, 这里就不提了.

注: 虽然这个方法有点破坏梯度的感觉, 但是其在AutoAttack下依然是有尚可的鲁棒性的, 代价仅仅是几个点的自然精度的损失, 从这个角度来说其实挺好的.

代码

原文代码

PyTorch

posted @ 2022-04-30 13:10  馒头and花卷  阅读(167)  评论(0编辑  收藏  举报