AdvProp:两组Batch Normalization助你在CNN对抗训练中高效涨点

作者丨皮特潘
审稿|邓富城
编辑丨极市平台

极市导读

CNN能被轻易的攻击是其最大的弱点之一,本文介绍的AdvProp创造性提出了在一个网络中使用两组可以切换的BN,并利用附加的BN去处理对抗样本,实现了较好的效果。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

前言

CNN的对抗攻击是近年来的研究热点。CNN能被轻易的攻击到也是其最大的弱点之一。本文介绍的AdvProp(Adversarial Propagation)不是用来利用防御手段应对对抗攻击的,而是提高模型在真实原始的数据集上的准确率。是增强的对抗性训练方法,将对抗样本视为附加样本,用来防止网络过拟合。本文的核心点就是利用附加的BN去处理对抗样本,因为论文认为对抗样本和真实样本有着不同的分布。

AdvProp的两点贡献

  • 创造性提出了在一个网络中使用两组可以切换的BN,处理两种不同的分布,分别是真实样本和对抗样本。
  • 在Image数据集上,相对于baseline,准确率均有不同程度提高。对于模型EfficientNet-B7上,取得了ImageNet (+0.7%), ImageNet-C (+6.5%), ImageNet-A (+7.0%), StylizedImageNet (+4.8%)。在EfficientNet-B8上,无额外数据训练的情况下在ImageNet上实现top-1为85.5%。

前置知识一:对抗攻击和防御

对抗攻击通过添加不易察觉的图像扰动,就可以使网络预测失败,这些样本被称为对抗样本。对抗样本的存在不仅揭示了神经网络具有有限的泛化能力,同时也带来了安全性问题,对模型的实际部署也带来了威胁。对抗攻击包括提前知道模型信息的白盒攻击和不利用模型信息的黑盒攻击。

例如论文《explaining and harnessing adversarial examples》(https://arxiv.org/abs/1412.6572)中给熊猫图片增加扰动,网络就预测成了长臂猿。其利用的就是基于梯度的攻击,也是白盒攻击常用的方法。

再例如论文《Adversarial T-shirt! Evading Person Detectors in A Physical World》(https://arxiv.org/abs/1910.11099)中,利用物理对抗攻击,可以让目标检测网络造成漏报。如下面的视频截图,网络无法识别右侧穿着白色T恤的人,所谓的Adversarial T-shirt,有兴趣可以去网上搜索视频和论文。

本文利用到的是PGD(Project Gradient Descent )攻击方法,是一种迭代攻击,相比于普通的FGSM 仅做一次迭代,PGD是做多次迭代,每次走一小步,每次迭代都会将扰动投射到规定范围内。是Athalye等人在2018年发现的, 并且是最强大的一阶攻击方法之一。

其中FGSM生成干扰样本的公式为:

PGD生成干扰样本的公式如下,是经过多次迭代获取的:

FGSM伪代码:

def perturb(self, x, y=None): x, y = self._verify_and_process_inputs(x, y) # 获取target y,如果是target攻击,就是将网络预测值攻击成预测target,否则攻击成预测错误 xadv = x.requires_grad_() outputs = self.predict(xadv) # 网络预测 loss = self.loss_fn(outputs, y) # 计算loss if self.targeted: loss = -loss loss.backward() # 反向传播 grad_sign = xadv.grad.detach().sign()# 计算梯度方向 xadv = xadv + batch_multiply(self.eps, grad_sign)# 增加扰动,可以这样理解,网络优化利用梯度下降,攻击利用梯度上升 xadv = clamp(xadv, self.clip_min, self.clip_max) return xadv.detach()

既然能够被攻击到,那么一个朴素的方法就是:能否将对抗样本加到训练集中来抵抗攻击?

事实上,就是就对抗防御的思想,也是一个领域,本文不去过多关注,以后可以做专门的解读。不过本文认为,之前的对抗防御做法要么是在mnist等小数据集上做的,要么是在大数据集上用半监督的形式做的。到底有没有用,是一个比较open的话题。另外本文对标的方法《Towards Deep Learning Models Resistant to Adversarial Attacks》用到的是min-max game方法,其问题是不能在原始干净的图片上提升指标,甚至还会降低指标。

另外,Adversarial T-shirt中提到,现实中对抗样本是否存在?他们经过大量的实验和经验发现,现实中很难出现对抗样本,理由如下:

  • 像素变化过于细微,无法通过打印机表现出来。

  • 通过相机的捕捉会再次改变对抗样本。

  • 环境和目标本身发生变化。

所以就更能突出本文的意义所在:利用对抗样本提高真实clean图片的准确率。

前置知识二:BN

BN(batch Normalization)通过将数据进行偏移和尺度缩放拉到一个特定的分布。它的引入是用来解决 internal covariate shift 问题,即训练迭代中网络激活的分布的变化对网络训练带来的破坏。BN通过在每次训练迭代的时候,利用minibatch计算出的当前batch的均值和方差,进行标准化来缓解这个问题。

一般来说,BN的主要有两个优点:1是降低对初始化、学习率等超参的敏感程度,因为每层的输入被BN拉成相对稳定的分布,也能加速收敛过程。2是应对梯度饱和和梯度弥散,主要是对于sigmoid和tanh的激活函数。再来回顾一下BN的具体做法:

  • 训练的时候:使用当前batch统计的均值和方差对数据进行标准化,同时优化优化gamma和beta两个参数。另外利用指数滑动平均收集全局的均值和方差。
  • 测试的时候:使用训练收集全局均值和方差以及优化好的gamma和beta进行推理。

可以看出,要想BN真正work,就要保证训练时当前的均值和方差逼近全部数据的均值和方差。因为训练过程每个minibatch从整体数据中均匀采样,不同分布的话minibatch的均值和方差和训练样本整体的均值和方差是会存在较大差异的。

所有LN、IN、GN等所有的Normalization都会用到真实数据做归一化操作的,只不过发生的维度不一样而已,所以本文的方法适合推广。

本文做法

本文的思路也很简单朴素,既然clean样本和对抗样本是不同的分布,那么使用两个BN不就可以了嘛!如上图,图a代表的是传统的BN,可以看出clean样本和对抗样本有着不一样的分布。图b为本文的做法,只在BN的地方增加auxiliary BN,训练过程根据输入样本是clean还是对抗样本进行切换。

这是普通训练的优化目标,其中为网络参数,L为loss:

这是Madry’s对抗训练的优化目标,用到的是min-max方法,max是使得增加对抗扰动,让loss最大;min是在该loss上优化网络参数。

这个本文的优化目标,可以看作在对抗样本+原始样本上进行联合训练,力求网络拟合两种数据集。

训练过程:

  • 选择clean 图片和对应label,利用辅助BN生成对抗样本;
  • 利用main BN计算clean图片的loss;
  • 利用辅助BN计算对抗图片的loss;
  • 利用同时计算两种loss的梯度反向传播,更新网络参数;

测试过程:

将辅助BN去掉,只使用正常的BN,因为我们面临的场景是正常图片的预测。

实验结果:

测试结果如下,在imagenet上,使用effencientnet不同大小模型,均有不同程度的提高。说明该方法是work的:

在imagenet其他数据集上表现都不错,可见其泛化能力。

论文并对进行了消融实验,其中越大,攻击程度越大。可以看出,小模型上弱的攻击带来的效果越好,大模型反之。

总结

本文介绍的AdvProp着眼利用对抗样本提高训练的测试指标,其最大创新点就是利用两组BN处理不同的数据分布,思路简单有效,值得借鉴。

◎作者档案
皮特潘,致力于AI落地而上下求索
欢迎大家联系极市小编(微信ID:fengcall19)加入极市原创作者行列
(0)

相关推荐

  • 【连载17】GoogLeNet Inception V2

    公众号后台回复"python",立刻领取100本机器学习必备Python电子书 GoogLeNet Inception V2在<Batch Normalization: Ac ...

  • 梯度下降法的三种形式BGD、SGD以及MBGD

    阅读目录 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD 4. 总结 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度下降法 ...

  • 一文梳理2020年大热的对比学习模型

    对比学习的概念很早就有了,但真正成为热门方向是在2020年的2月份,Hinton组的Ting Chen提出了SimCLR,用该框架训练出的表示以7%的提升刷爆了之前的SOTA,甚至接近有监督模型的效果 ...

  • (4条消息) 深度学习中的epochs,batch

    深度学习框架中涉及很多参数,如果一些基本的参数如果不了解,那么你去看任何一个深度学习框架是都会觉得很困难,下面介绍几个新手常问的几个参数. batch 深度学习的优化算法,说白了就是梯度下降.每次的参 ...

  • 两篇文章带你深入理解A/B Testing(一)

    作者:PMCoder 来源:PMCoder之路 导读:如果希望了解A/B Testing 实际应用的指标说明,可以直接读文章的第二部分.如果你希望了解一些理论基础,可以从这篇文章开始读. 一.为什么要 ...

  • 【AI初识境】深度学习模型中的Normalization,你懂了多少?

    这是<AI初识境>第6篇,这次我们说说Normalization.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 数据经过归一化和标准化后可以加快梯度下降的求解速度,这就是Ba ...

  • K均值算法

    K均值算法 K均值算法是一种聚类算法,把样本分配到离它最近的类中心所属的类,类中心由属于这个类的所有样本确定. k均值算法是一种无监督的聚类算法.算法将每个样本分配到离它最近的那个类中心所代表的类,而 ...

  • mxnet框架下超全手写字体识别—从数据预处理到网络的训练—模型

    Mxnet框架深度学习框架越来越受到大家的欢迎.但是如何正确的使用这一框架,很多人并不是很清楚.从训练数据的预处理,数据的生成(网络真正需要的数据格式,网络模型的保存,网络训练日志的保存,等等,虽然网 ...

  • 神器:多卡同步的Batch Normalization

    作者丨CW 来源丨深蓝学院 编辑丨极市平台 极市导读 本文为大家介绍了BN 的多卡同步,解释了为什么需要进行同步,同步需要的信息,并详细讲解结合基于 Pytorch 实现的代码解析实现过程中的五个关键 ...

  • 干货|理解Dropout,BN及数据预处理

    一.随机失活(Dropout) 具体做法:在训练的时候,随机失活的实现方法是让神经元以超参数 的概率被激活或者被设置为0.如下图所示: Dropout可以看作是Bagging的极限形式,每个模型都在当 ...

  • 深度学习在搜索排序业务中的应用

    文章作者:白博 内容来源:58技术 导读 深度学习得益于良好的深层特征表达性,目前在视觉.文本.语音等领域获得了广泛的应用.搜索领域紧贴用户需求,作为深度学习商业变现最成功的路径之一,众多头部企业发展 ...