目录

  • 简介
  • 一些基本概念的收集
    • 对抗样本
    • 现实中的对抗样本
    • 产生"对抗样本问题"的原因
  • 制造对抗样本的方式
    • FGSM
    • FGM

简介

本文旨在收集对抗训练相关的内容,并作出比较详细的理解和讲解。

一些基本概念的收集

本部分收集对抗训练相关的一些基本概念,并结合写下自己的理解。

对抗样本

我们对数据集中的数据,做一些比较小的、但却能带来很大杀伤力的改动。改动后的数据可能会让模型以较高的confidence输出一个错误的预测。1
很多模型面对这种样本的时候,是很容易出错的。2
也就是说,对抗样本应该是一些只加入了轻微扰动,却给模型带来较大负面影响的样本。

现实中的对抗样本

设原样本为xxx
设引入扰动后的样本为x~\tilde{x}x~:
x~=x+η\tilde{x} = x + \eta x~=x+η
(此处的η\etaη为引入的扰动)

现实中我们怕的是,两个样本xxx和x~\tilde{x}x~在本质上没有区别,但模型觉得它俩不一样。
比如说,xxx和x~\tilde{x}x~是两张我们看起来长得一毛一样的图片,但实际上它们每一个像素的颜色上有无比轻微的、我们观察不太出来的区别,但就因为这些区别,模型认为这俩图片所在的class不一样,那这种情况是不能被我们人类接受的。

当然,"观察不太出来"是从人的角度出发、比较主观的。
我们还是用比较数字化的方式1来定义一下这种区别:
很多储存图片的设备,每个像素只存8个bit,也就是说,在设备储存精度之外的一些信息,对储存图片的设备来说是不重要的。
那我们就可以这样规定:只要η\etaη满足∥η∥∞<=ϵ\Vert \eta \Vert_\infty<=\epsilon∥η∥∞​<=ϵ (也就是说η\etaη这个向量里每个元素的绝对值中最大的也小于ϵ\epsilonϵ), 我们就规定xxx和x~\tilde{x}x~的class是一样的。此处的ϵ\epsilonϵ小到对我们的储存或者传感设备来说,xxx和x~\tilde{x}x~是一样的。
再换句话说,扰动η\etaη足够小,小到我们的储存或者传感设备感受不到。

产生"对抗样本问题"的原因

Goodfellow et al.1提出,模型的线性就可能足够让这类问题产生。
为什么模型的线性会让"对抗样本问题"产生?也就是说,为什么由于模型的线性,当我们对某些数据引入较小的扰动的时候,会带来较大的负面影响?
Goodfellow et al.1是这样解释的:
假如我们把xxx扔进一个线性模型,那我们就得到:
wTxw^Tx wTx
假如我们把x~\tilde{x}x~扔进一个线性模型,那我们就得到:
wTx~=wTx+wTηw^T\tilde{x} = w^Tx + w^T\eta wTx~=wTx+wTη
也就是说,对于这两个样本,线性模型出来的结果之间就只差一个wTηw^T\etawTη。假设www中一共有nnn个元素,每个元素平均值是mmm,那么这个wTηw^T\etawTη的算出来的就会是在nmϵnm\epsilonnmϵ这个水平(因为是点乘)。
那也就是说,我们的原始样本xxx和对抗样本x~\tilde{x}x~分别输入模型之后,得到的输出之间会相差约nmϵnm\epsilonnmϵ。这个差距,是会随着www的维数(nnn)来线性增加的。也就是说,如果我们的问题是一个高维问题,就算加入的干扰不多,也会由于维数较多而给模型输出带来很大的影响。
这就是Goodfellow et al.1解释线性模型能让"对抗样本问题"产生的逻辑。

制造对抗样本的方式

那么如何让模型面对对抗样本时也能有能力识别正确?我们可以制造对抗样本来攻击模型,以此提升它的防御能力。

FGSM

FGSM的全称是Fast Gradient Sign Method. 如果用FGSM来制造扰动η\etaη,可以使用如下的式子:
η=ϵsign(∇xJ(θ,x,y))\eta = \epsilon sign(\nabla_xJ(\theta, x, y)) η=ϵsign(∇x​J(θ,x,y))
其中xxx是输入,yyy是xxx的标签,θ\thetaθ是模型的参数,J()J()J()是损失函数。

我们来看一下这个式子里各部分的寓意和用意。
首先,∇xJ(θ,x,y)\nabla_xJ(\theta, x, y)∇x​J(θ,x,y)这部分是损失函数关于输入xxx求导得到的梯度,也就是说,如果我们让xxx的值往这个方向走,损失函数是上升得最快的。它解决的问题是:让xxx往哪个方向走(即我们要如何扰动这个xxx),才能让模型在面对正确的标签yyy的时候,反而高效地把损失函数拉得很大?从而让模型倾向于认为yyy并不是正确的标签。

其次,我们来说一下这个式子剩下的部分,这部分主要是为了使得∥η∥∞<=ϵ\Vert \eta \Vert_\infty<=\epsilon∥η∥∞​<=ϵ。
ϵ\epsilonϵ就是我们一开始提到的,扰动η\etaη的无限范数不能超过的值。那我们是如何做到这一点的呢,答案是靠sign()sign()sign(),sign()sign()sign()的函数图像3是这样的:

也就是说:
sign(a)={1,a>00,a=0−1,a<0sign(a)=\left\{ \begin{aligned} 1 \qquad ,a>0 \\ 0 \qquad ,a=0 \\ -1 \qquad ,a<0 \end{aligned} \right. sign(a)=⎩⎪⎨⎪⎧​1,a>00,a=0−1,a<0​
如果这里的aaa是一个向量的话,就会对它的每个维度分别做这样的操作。4

由于sign()sign()sign()函数的输出在{-1,0,1}之间,那么简单地,ϵsign()\epsilon sign()ϵsign()的输出就在{−ϵ,0,ϵ}\{-\epsilon,0,\epsilon\}{−ϵ,0,ϵ}之间了,从而,我们就成功使得∥η∥∞<=ϵ\Vert \eta \Vert_\infty<=\epsilon∥η∥∞​<=ϵ了。

总结:∇xJ(θ,x,y)\nabla_xJ(\theta, x, y)∇x​J(θ,x,y)给我们提供了扰动xxx的高效方向,ϵsign()\epsilon sign()ϵsign()帮助我们使得扰动大小被限制在某个范围内。

FGM

FGM的全称是Fast Gradient Method, 一般指的是这样的扰动(出现于Adversarial Training Methods for Semi-supervised Text Classification这篇论文):
η=ϵg∥g∥2其中,g=∇xJ(θ,x,y)\eta = \epsilon \frac{g}{\Vert g \Vert_2}\\ \quad\\ 其中,g = \nabla_xJ(\theta, x, y) η=ϵ∥g∥2​g​其中,g=∇x​J(θ,x,y)
也就是说比起FGSM中sign()sign()sign()的方式,这里做了一个L2范数归一化。
设ggg的第iii维是gig_igi​,那么就有:
g∥g∥2=(g1∥g∥2,g2∥g∥2,...,gn∥g∥2)=(g1g12+g22+...+gn2,g2g12+g22+...+gn2,...,gng12+g22+...+gn2)\begin{aligned} \frac{g}{\Vert g \Vert_2} &= (\frac{g_1}{\Vert g\Vert_2}, \frac{g_2}{\Vert g\Vert_2}, ...,\frac{g_n}{\Vert g\Vert_2})\\ &=(\frac{g_1}{\sqrt{g_1^2+g_2^2+...+g_n^2}},\frac{g_2}{\sqrt{g_1^2+g_2^2+...+g_n^2}},...,\frac{g_n}{\sqrt{g_1^2+g_2^2+...+g_n^2}}) \end{aligned} ∥g∥2​g​​=(∥g∥2​g1​​,∥g∥2​g2​​,...,∥g∥2​gn​​)=(g12​+g22​+...+gn2​​g1​​,g12​+g22​+...+gn2​​g2​​,...,g12​+g22​+...+gn2​​gn​​)​
通过这样归一化的话,还能保留每个维度之间的相对大小,不像FGSM直接用了一个把每个维度转成-1,1或0的sign()sign()sign()函数。


  1. EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. Intriguing properties of neural networks ↩︎

  3. https://baike.baidu.com/item/sign/115763?fr=aladdin ↩︎

  4. https://ww2.mathworks.cn/help/releases/R2017a/matlab/ref/sign.html ↩︎

对抗训练+FGSM, FGM理解与详解相关推荐

  1. 【综述】NLP 对抗训练(FGM、PGD、FreeAT、YOPO、FreeLB、SMART)

    在对抗训练中关键的是需要找到对抗样本,通常是对原始的输入添加一定的扰动来构造,然后放给模型训练,这样模型就有了识别对抗样本的能力.其中的关键技术在于如果构造扰动,使得模型在不同的攻击样本中均能够具备较 ...

  2. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  3. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  4. 【直播】陈安东,但扬:CNN模型搭建、训练以及LSTM模型思路详解

    CNN模型搭建.训练以及LSTM模型思路详解 目前 Datawhale第24期组队学习 正在如火如荼的进行中.为了大家更好的学习"零基础入门语音识别(食物声音识别)"的课程设计者 ...

  5. 对抗训练:FGM、FGSM、PGD

    当前,在各大NLP竞赛中,对抗训练已然成为上分神器,尤其是fgm和pgd使用较多,下面来说说吧.对抗训练是一种引入噪声的训练方式,可以对参数进行正则化,提升模型鲁棒性和泛化能力. 一.什么是对抗训练? ...

  6. Yolo v5 训练自己的数据从训练到调参实战详解

    主要分3章,第一章先跑通模型代码,熟悉yolo v5的输入和输出:第二章训练自己的数据:第三章讲解模型参数部分 文章目录 一.跑通模型 1.代码下载 2.环境配置 3.参数路径调整 3.运行detec ...

  7. 蓝桥杯 试题 算法训练 娜神平衡 C++ 详解

    问题描述: 娜娜是一个特别可爱的女孩子,作为学神的她最近在情感方面出现了一点点小问题. 她暗恋的琦琦是一名学霸,他只喜欢长得漂亮和学习很好的女生. 娜娜学习确实很神,但是她在琦琦面前却总是表现不出平时 ...

  8. 深入理解搜索引擎——详解query理解

    [导语]当你在搜索框输入一串简短的文本后,搜索引擎立马会返回成千上万条结果,整个搜索过程看似简单,其实底层引擎大有文章.每一个简短的搜索词背后都隐藏着用户最真实的查询意图,需要搜索引擎使用很多不同策略 ...

  9. cityscapes场景图_图像语意分割训练Cityscapes数据集SegNet-ConvNet神经网络详解

    版权声明:本文首发于本人CSDN博客. 前言:经过将近一个月的陆续学习研究,在神经网络中训练多分类任务识别Cityscapes数据集,终于在最近得到了理想中的实验结果.在我陷入对细节参数调整不当及诸多 ...

  10. 对抗生成网络(GAN)详解

    目录 前言 目标函数 原理 训练 给定生成器,训练判别器 给定判别器,训练生成器 总结 前言 之前的生成模型侧重于将分布函数构造出来,然后使用最大似然函数去更新这个分布函数的参数,从而优化分布函数,但 ...

最新文章

  1. ​ImageNet的top-1终于上了90%,网友质疑:用额外数据集还不公开,让人怎么信服?...
  2. Node.js中的常用工具类util
  3. linux mount文件夹
  4. jQuery实现星星评分功能
  5. Linux下区分物理CPU、逻辑CPU和CPU核数
  6. 计算机网络基础:ISO/OSI网络体系结构知识笔记​
  7. Cus系统beta1.2发布
  8. 【BCH码1】系统BCH码编码原理及MATLAB实现(不使用MATLAB库函数)
  9. HTML5 基础知识
  10. 库克连夜从谷歌抢人,阻止 Siri 继续变傻!
  11. 定时器name冲突会报错吗_部落冲突:冬季版本即将更新,多个超级兵种被曝光,会上线吗?...
  12. Java 实现插入排序算法
  13. sudo rosdep init 出现 ERROR: cannot download default sources list from:错误解决方法
  14. Photoshop教程_PS渐变工具找不到,怎样导入ps渐变样式?ps渐变使用教程
  15. iReport简单使用
  16. sea新浪云计算机平台,新浪云计算SAE免费申请使用及域名绑定
  17. 外卖联盟高级接口 - 美团联盟接口 美团外卖CPS+CPA推广活动推广API接口
  18. 用python使用py2neo时候报“ModuleNotFoundError:No module named 'py2neo'”的错误
  19. GitHub标星8-3k的学习习惯,未来的Android高级架构师:别让这几个点毁了你
  20. 关于 电脑分配IP地址可以连接局域网但无法上互联网 的解决方法

热门文章

  1. hyperterminal停止工作_hyper terminal超级终端最新下载
  2. Linux 快捷键总结
  3. java已知两坐标求直线长度_java计算两点间的距离方法总结
  4. 波场地址解析易语言代码
  5. matlab画受力分析图,MATLAB求解受力分析
  6. docker搭建sftp服务器
  7. 广数928te_广数928te2说明书
  8. **网页静态化解决方案_Freemarker*
  9. 肖维勒准则matlab_肖维勒准则.PPT
  10. kettle Windows下载