前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文阅读:对抗训练(Adversarial Training)

论文阅读:对抗训练(Adversarial Training)

作者头像
朴素人工智能
发布2020-07-28 11:06:47
4.2K0
发布2020-07-28 11:06:47
举报
文章被收录于专栏:朴素人工智能朴素人工智能

1. 引言

对抗训练(adversarial training)是增强神经网络鲁棒性的重要方式。在对抗训练的过程中,样本会被混合一些微小的扰动(改变很小,但是很可能造成误分类),然后使神经网络适应这种改变,从而对对抗样本具有鲁棒性。

在图像领域,采用对抗训练通常能提高鲁棒性,但是通常都会造成泛化性降低,也就是说,虽然对对抗样本的抵抗力提升了,但是有可能影响普通样本的分类能力。神奇的是,在语言模型领域却观察到不一致的结果——对抗训练既提高了鲁棒性也提高了泛化性。所以对抗训练还值得研究一下,毕竟对效果也是有提升的。

我们首先来看一下对抗训练的一般性原理,对抗训练可以概括为如下的最大最小化公式:

2. FGSM/FGM方法

3. PGD方法

4. FreeAT(Free Adversarial Training)

在PGD的计算过程中,每次做前向后向计算时,不管是参数的梯度还是输出的梯度,都会计算出来,只不过在梯度下降的过程中只利用参数的梯度,在梯度提升的过程中只利用输入的梯度,这实际上有很大的浪费。我们能不能在一次前向后向计算过程中,把计算出来的参数的梯度和输入的梯度同时利用上?这就是FreeAT[4]这篇文章的核心思想。

如何做呢?这里存在一个小小的麻烦,就是普通训练的方式和PGD对抗训练的方式稍微有些不同。普通训练时相邻的batch是不同的batch,而PGD对抗训练在梯度提升的计算样本时,需要对同一个mini-batch的样本,反复求梯度。FreeAT仍然采用了PGD这种训练方式,即对于每个min-batch的样本会求K次梯度,每次求得得梯度,我们既用来更新扰动,也用来更新参数。原始的PGD训练方法,每次内层计算只用梯度来更新扰动,等K步走完之后,才重新再计算一次梯度,更新参数。这个不同可以用下图形象的表示。

需要注意的是,如果内层做K次迭代的化,对于外层计算,FreeAT会把总体的迭代epoch除以K,这样保证总体的梯度计算的次数跟普通训练一样。从外层训练的视角来看,每个min-batch被训练的次数和普通训练是相同的,只不过其被训练的顺序有些变化,K个相同的min-batch会被顺序的训练。这样带来的问题是连续相同的mini-batch对参数更新,不如随机mini-batch带来的扰动大,这有可能影响到最终模型收敛的效果。但是论文用实验证明,这种担心不太必要。详细的算法代码如下

5. YOPO(You can Only Propagate Once)

YOPO[5]的出发点是利用神经网络的结构来降低梯度计算的计算量。从PMP(Pontryagin's maximum principle)的角度看,对抗扰动只和神经网络的第一层有关。所以,论文提出固定住前面的基层,只对第一层求梯度,并据此来更新扰动。

基于这个想法,作者想复用后几层的梯度,假设p为定值:

则对扰动的更新就可以变为:

详细的算法代码如下:

虽然YOPO-m-n只完成了m次完整的正反向传播,但是却实现了mn次扰动的更新。而PGD-r算法完成r次完整的正反向传播却只能实现r次扰动的更新。这样看来,YOPO-m-n算法的效率明显更高,而实验也表明,只要使得mn略大于r,YOPO-m-n的效果就能够与PGD-r相媲美。

6. FreeLB(Free Large Batch Adversarial Training)

7. 参考文献

[1] EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES

[2] ADVERSARIAL TRAINING METHODS FOR SEMI-SUPERVISED TEXT CLASSIFICATION

[3] Towards Deep Learning Models Resistant to Adversarial Attacks

[4] Adversarial Training for Free!

[5] You Only Propagate Once: Accelerating Adversarial Training via Maximal Principle

[6] FREELB: ENHANCED ADVERSARIAL TRAINING FOR NATURAL LANGUAGE UNDERSTANDING

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

本文分享自 朴素人工智能 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 引言
  • 2. FGSM/FGM方法
  • 3. PGD方法
  • 4. FreeAT(Free Adversarial Training)
  • 5. YOPO(You can Only Propagate Once)
  • 6. FreeLB(Free Large Batch Adversarial Training)
  • 7. 参考文献
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档