这部分挺有意思,建议了解。不过知乎说这个方向有点坑,不建议深入学习。

  要把 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的粗略总结相关推荐

  1. Pig变飞机?AI为什么这么蠢 | Adversarial Attack

    整理 | Jane 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) [编者按]这篇文章的起意有两点:一是由刚刚过去的 315 打假日,智能语音机器人在过去一年拨出的超 ...

  2. 【李宏毅2020 ML/DL】P43-44 More about Adversarial Attack | Images Audio

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  3. 【机器学习】李宏毅——Adversarial Attack(对抗攻击)

    研究这个方向的动机,是因为在将神经网络模型应用于实际场景时,它仅仅拥有较高的正确率是不够的,例如在异常检测中.垃圾邮件分类等等场景,那些负类样本也会想尽办法来"欺骗"模型,使模型无 ...

  4. Adversarial Attack on Attackers: Post-Process to Mitigate Black-Box Score-Based Query Attacks

    提出背景: 基于分数的查询攻击只能使用模型的输出分数,在数十个查询中制造对抗性扰动,对神经网络构成了实际威胁并且输出的损失趋势容易受到轻微干扰,从而变的不那么有效 本文提出了对攻击者进行对抗攻击的方法 ...

  5. 面向自然语言处理的对抗攻防与鲁棒性分析综述 Survey of Adversarial Attack, Defense and Robustness Analysis for Natural Lang

    6.面向自然语言处理的对抗攻防与鲁棒性分析综述 Survey of Adversarial Attack, Defense and Robustness Analysis for Natural La ...

  6. 对抗样本(论文解读八):Towards More Robust Adversarial Attack Against Real World Object Detectors

    准备写一个论文学习专栏,先以对抗样本相关为主,后期可能会涉及到目标检测相关领域. 内容不是纯翻译,包括自己的一些注解和总结,论文的结构.组织及相关描述,以及一些英语句子和相关工作的摘抄(可以用于相关领 ...

  7. 【学习】adversarial attack、evasion attacks

    adversarial attack 动机 一.adversarial attack 防御 二.evasion attacks 三.搜索方法 贪婪搜索 单词重要性排序的贪婪搜索(WIR) 遗传算法 t ...

  8. 对抗攻击与防御(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 ...

  9. 学习笔记:【VALSE短教程】《Adversarial Attack and Defense》

    学习笔记:[VALSE短教程]<Adversarial Attack and Defense> 视频地址 1.White-box attacks Direction I 论文地址: EXP ...

  10. 李宏毅机器学习作业10——Adversarial Attack,FGSM,IFGSM

    理论部分参见​李宏毅机器学习--对抗攻击Adversarial Attack_iwill323的博客-CSDN博客 目录 目标和方法 评价方法 导包 Global Settings Data tran ...

最新文章

  1. jsp网站访问次数统计
  2. 分布式文件系统KFS源码阅读与分析(四):RPC实现机制(KfsClient端)
  3. 基于html5制作3D拳击游戏源码下载
  4. Masm for Windows集成开发环境编写汇编程序
  5. 微信浏览器内打开App Store链接
  6. axios 全局配置
  7. oracle坏块修复
  8. .Net/C# 实现真正的只读的 Hashtable 类型的属性 (ReadOnly Hashtable Property)
  9. C# 进程间通信(共享内存)
  10. 在Jupyter Notebook中运行R (附一系列疑难解答)
  11. 读书节第四日丨技术书单随心Pick,学院好课0元学
  12. 【android自定义控件】LinearLayout定义ActionBar样式
  13. Open Inventor与Coin3D开发环境配置/Vs2017+Qt+coin3D配置方法,实测可用
  14. 自组织映射神经网络(SOM)
  15. 今日头条推荐算法原理全文详解之五
  16. 客户说发货慢怎么回复_物流走件慢回复话术
  17. Syclover-Web题解
  18. Unity3D_3dsMax-Vray材质导入
  19. 请问投稿中要求上传的author_投稿要求
  20. 面试AI算法岗,你被要求复现顶会论文了嘛?

热门文章

  1. Python自动化完成tb喵币任务
  2. 厦门大学计算机科学非全,厦门大学:2017年非全日制硕士招生全部为专业学位...
  3. 企业微信api调用报50001错误
  4. linux shell 统计词频,shell之词频统计
  5. poco http使用
  6. LVM 扩容---LVM扩展系统的根分区
  7. PHP TP模板下的微博登录(wap)
  8. Windows server 2008 r2 基于LLS的Web和FTP服务搭建(基本)
  9. [maya学习笔记(18)] 粒子系统 - 落叶纷飞
  10. 移动端车牌识别,交警助力