Adversarial Attack的粗略总结
这部分挺有意思,建议了解。不过知乎说这个方向有点坑,不建议深入学习。
要把 Network 真正应用,光是它们正确率高是不够的,它们还需要能够应付来自人类的恶意。比如说我们在网上下载数据集训练时,如果有人恶意在数据集上加入很小的噪点(人眼看不出),导致数据集被误判为另一个种类,这样训练出来的网络就有了隐患(后门)。
攻击方法
攻击可分为两种类型,一种无目标攻击,一种有目标攻击。
无目标攻击:
我们现在要做的目标就是,我们要找到一张新的图片,这张新的图片 我们用 x 来表示,当我们把 x 丢到这个 Network 的时候,它的输出是 y,我们正确的答案叫做 ŷ,我们希望 y 跟 ŷ 它的差距越大越好。这与训练神经网络是类似的。
我们先定一个 Loss Function,看它的 Cross Entropy,我们希望这个 Cross Entropy 越大越好,所以我们今天在 Cross Entropy 前面加一个负号
有目标攻击:
假设原本是输出是猫,现在我们希望 Network,不仅输出的不能是猫,且要输指定的类别。比如说 我们希望加了一个杂讯以后,Network 输出是海星,它把猫错误判断成一个海星,才算是攻击成功。
那我们会先设定好我们的目标(例如海星这个目标),输出的值与目标值的cross entropy 要越小越好,同时输出的值与实际值(例如猫)的 cross entropy 要越大越好,最终 Loss Function 就写成这样:
骗过人眼
但光去找一个 x,Minimize Loss 是不够的,因为我们其实还期待说,我们加入的杂讯越小越好,也就是说人眼要轻易的认不出来才行。所以我们在解这个Optimization 的 Problem 的时候,还会多加入一个限制
我们希望改变后的X值与原先的X值的差距越小越好。那么接下里的问题是怎么定义这个差距呢?
简单来说吧,一个方法是所有的x维度都拿出来相减后取平方、相加开根号;另一个方法是计算所有维度之间的最大值。当然方法没有好坏之分,具体的要结合实际情况,根据人的感知来。编程思路
编程思路其实蛮简单的,因为你要对一张图像做处理,将里面的像素点变大或者变小,所以你把这个图片里所有的像素(向量)看做是神经网络的参数,原本的神经网络是已经提早训练好了的。也就是说现在的参数变成了图片,而不是神经网络的参数,神经网络的参数不变。把图像的像素点减去learning rate * gradent decent
注意,你在做完这个 Gradient Descent,用 Gradient 去 Update 你的 x 以后,它一定还是得要落在这个框框裡面才行,那怎么样保证 Update 以后落在这个框框裡面呢,只要 Update 超出了框框,就把它拉回来就结束了。
这里有一个最简单的 Attack 的方法,叫做FGSM, Fast Gradient Sign Method,插个题外话,看到sign了嘛,就知道是一个定值了。本来如果你是算 Gradient,它的值可以是任何的 Real Number,但现在取 Sign,它要嘛是 1 要嘛是 -1,所以 g 里面就都是 1 或者是 -1,其实现在减去或者加上的值就是learning rate而已了,(一击必杀)
那有同学就会问说一击必杀有什么好处呢,如果我多攻击几次,多跑几个 epoch 结果不会更好吗?会更好,FGSM只是最简单的方法而已了。
黑箱、白箱攻击
前面介绍的都是白箱攻击,但是实际中不太可能是白箱攻击吧?因为白箱攻击我之前说了,假设神经网络参数不变,然后改变图像的像素值,因此前提你要知道这个神经网络,但是这怎么可能呢,哪个公司会把自己的NN开源?
- 未知模型、已知训练资料
核心思想:你训练一个 Network,让这个 Network 来模仿我们要攻击的对象,那我们要攻击的对象跟 Proxy 的 Network。如果都是用同样的训练资料训练出来的话,也许它们就会有一定程度的相似度。也许这个有被攻击过的 Image,拿去丢到我们不知道参数的 Network 上,攻击也会成功。 - 未知模型、未知训练资料
如果我没有训练资料可怎么办呢,其实这也不是完全无解的。假设这是你要攻击的影像辨识模型,你就把一堆图片丢进去,然后看看它会输出什么,线上的 Service 就算是它不会告诉你Network 的参数,你总是可以丢东西进去,看它输出什麼嘛,再把输入输出的成对资料,拿去训练一个模型,你就有可能可以训练出一个类似的模型,当做 Proxy Network 进行攻击。
那这种黑箱攻击容易成功吗? 不过实际上黑箱攻击是在Non-Targeted Attack 的时候比较容易成功啦,在Targeted Attack 就不太容易成功。
其实也很好理解啦,你想让一张狗的图片变成兔子,你攻击了狗的图片后,输入到线上系统,你怎么知道系统就一定给你输出一张兔子啊,有没有可能输出一个老虎,所以你根本没有成对儿的训练资料,就很难成功。
防御
有攻击肯定就有防御了呗,防御也是很好玩的。
- 被动防御
被动防御就是,你的模型是不动,训练好模型就训练好了,就放在那边 不要再去动它。但我们在模型前面加一个盾牌。
在图片进入网络时,为了削弱攻击的影响,加一个滤波器。 Attack 的 Signal通过这个 Filter 以后,它就会失去威力。有人会问加什么样的滤波器比较好呢,其实就将图片变得模糊一点就行了。因为模糊化以后,原先那个攻击成功的讯号就改变了,那它就失去攻击的威力
其实像这样子的被动防御的方法,还有很多类似的做法,除了做模糊化以外,还有其他更精细的做法,举例来说,有一系列的做法是,直接对影像做压缩,再解压缩,这就是AutoEncoder了呗;或者采用Generator ,把输入的图片,用 Generator 重新画过,重新生成一遍。
尽管被动防御中模糊化非常有效,但是模糊化这一种方法,一旦被别人知道你会做这件事情,它马上就失去效用(有许多算法可以去模糊化嘛)。,你可以完全把模糊化这件事情,想成是 Network 的第一层,所以模糊化这件事,等于就是在 Network 前面多加了一层啊,所以假设别人知道你的 Network 前面,多加这一层,把多加这一层放到攻击的过程中,它就可以产生一个 Signal,是可以躲过模糊化这种防御方式的。
还有一种再更强化被动防御的方法,就是加上随机性。你怎么样做才不会被别人猜中你的下一招,就是你自己都不知道自己的下一招是什么,这个就是欲欺敌先瞒内的概念。 - 主动防御
说白了就是 Data Augmention ,数据增强的方法。我在训练的时候,就故意找一些被攻击的图片,然后强行将被攻击过的图片标注成正确的类别,这样就可以在训练阶段提高模型的防御力,也叫作主动防御。但是这样太耗时耗力了,并且增加了训练时间。
此外,除了耗时耗力,它还不见得挡得住新的攻击的方式。假设我们今天在找 X 的时候,你用的是 Algorithm ABCD,但有人在实际攻击的时候,他发明了一个 Algorithm F 去攻击你的模型,那你的防御机制大概率会失败。
Adversarial Attack的粗略总结相关推荐
- Pig变飞机?AI为什么这么蠢 | Adversarial Attack
整理 | Jane 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) [编者按]这篇文章的起意有两点:一是由刚刚过去的 315 打假日,智能语音机器人在过去一年拨出的超 ...
- 【李宏毅2020 ML/DL】P43-44 More about Adversarial Attack | Images Audio
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【机器学习】李宏毅——Adversarial Attack(对抗攻击)
研究这个方向的动机,是因为在将神经网络模型应用于实际场景时,它仅仅拥有较高的正确率是不够的,例如在异常检测中.垃圾邮件分类等等场景,那些负类样本也会想尽办法来"欺骗"模型,使模型无 ...
- Adversarial Attack on Attackers: Post-Process to Mitigate Black-Box Score-Based Query Attacks
提出背景: 基于分数的查询攻击只能使用模型的输出分数,在数十个查询中制造对抗性扰动,对神经网络构成了实际威胁并且输出的损失趋势容易受到轻微干扰,从而变的不那么有效 本文提出了对攻击者进行对抗攻击的方法 ...
- 面向自然语言处理的对抗攻防与鲁棒性分析综述 Survey of Adversarial Attack, Defense and Robustness Analysis for Natural Lang
6.面向自然语言处理的对抗攻防与鲁棒性分析综述 Survey of Adversarial Attack, Defense and Robustness Analysis for Natural La ...
- 对抗样本(论文解读八):Towards More Robust Adversarial Attack Against Real World Object Detectors
准备写一个论文学习专栏,先以对抗样本相关为主,后期可能会涉及到目标检测相关领域. 内容不是纯翻译,包括自己的一些注解和总结,论文的结构.组织及相关描述,以及一些英语句子和相关工作的摘抄(可以用于相关领 ...
- 【学习】adversarial attack、evasion attacks
adversarial attack 动机 一.adversarial attack 防御 二.evasion attacks 三.搜索方法 贪婪搜索 单词重要性排序的贪婪搜索(WIR) 遗传算法 t ...
- 对抗攻击与防御(2022年顶会顶刊AAAI、ACM、 ECCV、NIPS、ICLR、CVPR)adversarial attack and defense汇总
文章目录 AAAI' 2022 论文汇总 CVPR'2022论文汇总 ACM'2022论文汇总 ECCV'2022论文汇总 ICLR'2022论文汇总 NIPS'2022论文汇总 后续 AAAI' 2 ...
- 学习笔记:【VALSE短教程】《Adversarial Attack and Defense》
学习笔记:[VALSE短教程]<Adversarial Attack and Defense> 视频地址 1.White-box attacks Direction I 论文地址: EXP ...
- 李宏毅机器学习作业10——Adversarial Attack,FGSM,IFGSM
理论部分参见李宏毅机器学习--对抗攻击Adversarial Attack_iwill323的博客-CSDN博客 目录 目标和方法 评价方法 导包 Global Settings Data tran ...
最新文章
- jsp网站访问次数统计
- 分布式文件系统KFS源码阅读与分析(四):RPC实现机制(KfsClient端)
- 基于html5制作3D拳击游戏源码下载
- Masm for Windows集成开发环境编写汇编程序
- 微信浏览器内打开App Store链接
- axios 全局配置
- oracle坏块修复
- .Net/C# 实现真正的只读的 Hashtable 类型的属性 (ReadOnly Hashtable Property)
- C# 进程间通信(共享内存)
- 在Jupyter Notebook中运行R (附一系列疑难解答)
- 读书节第四日丨技术书单随心Pick,学院好课0元学
- 【android自定义控件】LinearLayout定义ActionBar样式
- Open Inventor与Coin3D开发环境配置/Vs2017+Qt+coin3D配置方法,实测可用
- 自组织映射神经网络(SOM)
- 今日头条推荐算法原理全文详解之五
- 客户说发货慢怎么回复_物流走件慢回复话术
- Syclover-Web题解
- Unity3D_3dsMax-Vray材质导入
- 请问投稿中要求上传的author_投稿要求
- 面试AI算法岗,你被要求复现顶会论文了嘛?