代码实现篇

对抗学习常见方法代码实现篇

对抗学习的基本概念

要认识对抗训练,首先要了解 “对抗样本”,在论文 Intriguing properties of neural networks 之中有关于对抗样本的阐述。简单来说,它是指对于人类来说 “看起来” 几乎一样,但对于模型来说预测结果却完全不一样的样本,比如下面的经典例子(一只熊猫加了点扰动就被识别成了长臂猿)

对抗学习的基本思想

Min-Max公式:

max函数指的是,我们要找到一组在样本空间内、使Loss最大的的对抗样本(该对抗样本由原样本x和经过某种手段得到的扰动项r_adv共同组合得到)。这样一组样本组成的对抗样本集,它们所体现出的数据分布,就是该中括号中所体现的。
min()函数指的是,我们面对这种数据分布的样本集,要通过对模型参数的更新,使模型在该对抗样本集上的期望loss最小。

FGSM(Fast Gradient Sign Method)

Goodfellow等人在这篇论文中提出了FGSM对抗方法:
EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES
论文主要结论:

  • 对抗样本可以被解释为高维点积运算的一个属性,是模型过于线性,而非过于非线性导致的;
  • 围绕不同模型之间的对抗样本泛化可以被解释为和模型权重向量高度对齐的对抗干扰,在相同任务上训练的不同模型学习了相似的功能;
  • 干扰的方向,而不是空间中的一个具体的点,才是最重要的。空间中的对抗样例是不足的,不能像有理数那样表示实数;
  • 因为它是最重要的方向,对抗性扰动在不同干净样本之间起到泛化的作用;
  • 介绍了一些列快速生成对抗样本的方法;
  • 对抗性训练可以起到正则化的作用,且比dropout正则化作用更大;
  • 易于优化的模型更容易受到对抗干扰;
  • 线性模型缺乏抵抗干扰的能力,仅带有隐藏层的网络,通过训练后可以抵抗干扰;
  • RBF网络可以抵抗干扰;
  • 对输入分布进行建模的模型没有抵抗干扰的能力;
  • 组合模型无法对抗干扰;

FGSM是一种白箱攻击方法,该方法认为攻击就是添加扰动使得模型的loss增大,所以沿着梯度方向生成攻击样本应该是最佳的(注意:传统情况下我们是固定样本,通过梯度改变权值,现在就是固定权值,通过梯度改变样本。),具体公式如下图所示:

FGM(Fast Gradient Method)

ADVERSARIAL TRAINING METHODS FOR SEMI-SUPERVISED TEXT CLASSIFICATION

对于 CV 领域的任务,在输入上添加一个连续的扰动,这种对抗训练的流程可以顺利执行下来,因为图像可以视为普通的连续实数向量, Δx\Delta xΔx也是一个实数向量,因此 x+Δxx + \Delta xx+Δx依然可以是有意义的图像。但 NLP 不一样,NLP 的输入是文本,它本质上是 one-hot 向量,而两个不同的 one-hot 向量,其欧式距离恒为 ,因此对于理论上不存在什么 “小扰动”,因此本文中提出将扰动添加到Embedding层。

For text classification, the input is discrete, and usually represented as a series of highdimensional one-hot vectors. Because the set of high-dimensional one-hot vectors does not admit infinitesimal perturbation, we define the perturbation on continuous word embeddings instead of discrete word inputs.


此外,为避免出现不合理的优化解,在应用对抗训练前,先对embedding进行正则化处理,vk,v‾k分别表示rawembedding、normalizedembeddingv_k,\overline v_k分别表示raw \ embedding、normalized \ embeddingvk,vkrawembeddingnormalizedembedding如下:

FSGM是每个方向上都走相同的一步,Goodfellow后续提出的FGM则是根据具体的梯度进行scale,得到更好的对抗样本:

FGSM&FGM 对抗步骤:

  1. 一切照常,计算前向loss,然后反向传播计算grad(注意这里不要更新梯度,即没有optimizer.step());
  2. 拿到embedding层的梯度,计算其norm,然后根据公式计算出r_adv,再将r_adv累加到原始embedding的样本上,即 x+r ,得到对抗样本;
  3. 根据新对抗样本 x+r ,计算新loss,在backward()得到对抗样本的梯度。由于是在step(1)之后又做了一次反向传播,所以该对抗样本的梯度是累加在原始样本的梯度上的;
  4. 将被修改的embedding恢复到原始状态(没加上r_adv 的时候);
  5. 使用step(3)的梯度(原始梯度+对抗梯度),对模型参数进行更新(optimizer.step()/scheduler.step()).

PGD(Projected Gradient Descent)

Paper:Towards Deep Learning Models Resistant to Adversarial Attacks
FGM 的思路是梯度上升,本质上来说没有什么问题,但是 FGM 简单粗暴的 “一步到位” 是不是有可能并不能走到约束内的最优点呢?当然是有可能的。于是,一个新的想法诞生了,Madry 在 18 年的 ICLR 中提出了 Projected Gradient Descent(PGD)方法,简单的说,就是 “小步走,多走几步”,如果走出了扰动半径为 的空间,就重新映射回 “球面” 上,以保证扰动不要过大:

PGD对抗具体步骤

对于每个x:
1.计算x的前向loss,反向传播得到梯度并备份;
对于每步t:
a)根据Embedding矩阵的梯度计算出r,并加到当前Embedding上,相当于x+r(超出范围则投影回epsilon内)
b)t不是最后一步: 将梯度归0,根据(1)的x+r计算前后向并得到梯度
c)t是最后一步: 恢复(1)的梯度,计算最后的x+r并将梯度累加到(1)上
2.将Embedding恢复为(1)时的值;
3.根据©的梯度对参数进行更新;

FreeAT (Free Adversarial Training)

Adversarial Training for Free!

FreeLB (Free Large-Batch Adversarial Training)

FREELB: ENHANCED ADVERSARIAL TRAINING FOR NATURAL LANGUAGE UNDERSTANDING

YOPO (You Only Propagate Once)

You Only Propagate Once: Accelerating Adversarial Training Using Maximal Principle

ALUM (Adversarial training for large neural LangUage Models)

Adversarial Training for Large Neural Language Models

SMART (SMoothness inducing Adversarial Regularization and BRegman pRoximal poinT opTimization)

SMART

Virtual Adversarial Training【虚拟对抗训练】

Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning

下一篇,我们来看几种对抗方法的具体代码实现。

参考文献:
https://wmathor.com/index.php/archives/1537/

对抗学习概念、基本思想、方法综述相关推荐

  1. 帮推|基于深度学习的图像融合方法综述

    基于深度学习的图像融合方法综述 博主朋友关于图像融合的综述论文基于深度学习的图像融合方法综述已被<中国图象图形学报>正式接收! 极力推荐想要入门图像融合领域的小伙伴下载学习,此外希望在图像 ...

  2. 论文《基于深度学习的表面缺陷检测方法综述》学习笔记

    <基于深度学习的表面缺陷检测方法综述>学习笔记 前段时间完成了<基于图像的零部件缺陷识别系统设计>毕业课程设计,过程中收获了很多,老师也分享了很多论文,在此记录一下学习的收获. ...

  3. 基于深度学习的表面缺陷检测方法综述-论文阅读笔记

    //2022.3.2日阅读笔记 原文链接:基于深度学习的表面缺陷检测方法综述 (aas.net.cn) 个人对本篇综述内容的大致概括 论文首先介绍了表面缺陷检测中不同场景下的成像方案,主要根据表面颜色 ...

  4. 基于弱监督深度学习的医学图像分割方法综述

    基于弱监督深度学习的医学图像分割方法综述 摘要:基于深度学习的医学影像分割尽管精度在不断的提升,但是离不开大规模的高质量标注数据的训练,被称为弱监督学习的深度学习的一个分支正在帮助医生通过减少对完整和 ...

  5. 《对抗攻击与防御分类方法综述》阅读笔记20220401

    <对抗攻击与防御分类方法综述> A Review of Adversarial Attack and Defense for Classification Methods DOI:10.1 ...

  6. AI-无损检测方向速读:基于深度学习的表面缺陷检测方法综述

    1 表面缺陷检测的概念 表面缺陷检测是机器视觉领域中非常重要的一项研究内容, 也称为 AOI (Automated optical inspection) 或 ASI (Automated surfa ...

  7. 基于深度学习的目标检测方法综述

    引言 现有的深度学习的目标检测方法,可以大致分为两类:一.基于候选区域的目标检测方法:二.基于回归的目标检测方法.依据方法的提出时间,可以构建出如下时间线: 2014 CVPR R-CNN[1] 20 ...

  8. 文献学习(part23)--双向聚类方法综述

    学习笔记,仅供参考,有错必纠 文章目录 双向聚类方法综述 摘要 引言 双向聚类方法 稀疏双向聚类 谱双向聚类 信息双向聚类 双向聚类方法综述 摘要 传统的聚类方法由于无法提取样本和变量间的局部对应关系 ...

  9. 行为检测论文笔记【综述】基于深度学习的行为检测方法综述

    摘 要: 行为检测在自动驾驶.视频监控等领域的广阔应用前景使其成为了视频分析的研究热点.近年来,基于深度学习的方法在行为检测领域取得了巨大的进展,引起了国内外研究者的关注,对这些方法进行了全面的梳理和 ...

  10. 论文精读:基于深度学习的表面缺陷检测方法综述

    摘要: 基于表面缺陷检测方法,根据数据标签的不同将其分为全监督学习模型方法.无监督学习模型方法和其他方法.细分归类,对比分析,总结每种方法优缺点,应用场景. Introduction         ...

最新文章

  1. P1215 母亲的牛奶
  2. web移动端Fixed在Input获取焦点时ios下产生的BUG及处理
  3. 浅谈云服务器都能用来做什么?
  4. MS CRM 2011 用Jscript打开新窗口的几种方法
  5. python重命名异常_python异常处理
  6. 安卓学习笔记40:基于套接字网络编程
  7. JAVA里面==和euqals的区别
  8. atitit groovy 总结java 提升效率
  9. 水平居中和transform: translateY(-50%) 实现元素垂直居中效果
  10. 云原生数据库-Amazon RDS
  11. 语音助手——评测指标
  12. [附源码]计算机毕业设计JAVA濒危物种科普系统
  13. 【硕士论文】《动态场景下的语义三维地图构建 》西南科技大学 余东应
  14. java中的迭代是什么意思_JAVA里的 迭代 具体是指什么意思
  15. 企业微信公众号运营技巧有哪些
  16. 搬:五大车载操作(VOS)系统优劣对比,车载系统架构分析
  17. insertSelective和insert的区别?
  18. 用户登录之SHA1加密
  19. 【WOT】听2015年北京WOT互联网运维与开发者大会随记
  20. 01 将狼才鲸的嵌入式开源项目仓库链接

热门文章

  1. tebluea 仪表板如何联动_瑞士定制宝马F900R改装套件Nardo-Blue亮相
  2. zabbix Too many processes on xxx
  3. html返回的状态值,iradon函数返回的是什么值
  4. c语言怎么移位,C语言中的移位操作
  5. emoji粉色爱心符号_粉色爱心符号
  6. [python爬虫] Selenium爬取新浪微博内容及用户信息
  7. php-fpm master 关系,php-fpm master worker 关系介绍
  8. 施一公 谈英文论文写作
  9. Python html.parser库学习小结
  10. 字体小三、小四号字的数字表示是多少