译者:cangyunye

作者: Nathan Inkawhich

如果你正在阅读这篇文章,希望你能理解一些机器学习模型是多么有效。现在的研究正在不断推动ML模型变得更快、更准确和更高效。然而,在设计和训练模型中经常会忽视的是安全性和健壮性方面,特别是在面对欺骗模型的对手时。

本教程将提高您对ML模型安全漏洞的认识,并将深入探讨对抗性机器学习这一热门话题。您可能会惊讶地发现,在图像中添加细微的干扰会导致模型性能的巨大差异。鉴于这是一个教程,我们将通过一个图像分类器上的示例来探索这个主题。具体来说,我们将使用第一个也是最流行的攻击方法之一,快速梯度符号攻击Fast Gradient Sign Attack(FGSM),以欺骗一个MNIST分类器。

威胁模型

就上下文而言,有许多类型的对抗性攻击,每一类攻击都有不同的目标和对攻击者知识的假设。然而,总的目标是在输入数据中添加最少的扰动,以导致所需的错误分类。攻击者的知识有几种假设,其中两种是:白盒黑盒。白盒攻击假定攻击者具有对模型的全部知识和访问权,包括体系结构、输入、输出和权重。黑盒攻击假设攻击者只访问模型的输入和输出,对底层架构或权重一无所知。目标也有几种类型,包括错误分类源/目标错误分类。错误分类的目标意味着对手只希望输出分类是错误的,而不关心新的分类是什么。源/目标错误分类意味着对手想要更改原来属于特定源类的图像,以便将其分类为特定的目标类。

在这种情况下,FGSM攻击是一种以错误分类为目标的白盒攻击。有了这些背景信息,我们现在可以详细讨论攻击。

快速梯度符号攻击

到目前为止,最早也是最流行的对抗性攻击之一被称为快速梯度符号攻击(FGSM),由Goodfellow等人在解释和利用对抗性示例( Explaining and Harnessing Adversarial Examples)时介绍到。这种攻击非常强大,而且直观。它被设计用来攻击神经网络,利用他们学习的方式,梯度gradients。这个想法很简单,比起根据后向传播梯度来调整权重使损失最小化,这种攻击是根据相同的反向传播梯度调整输入数据来最大化损失。换句话说,攻击使用了输入数据相关的梯度损失方式,通过调整输入数据,使损失最大化。

在我们深入代码之前,让我们看看著名的FGSM panda示例并提取一些符号。

从图像中看,\(\mathbf{x}\) 是一个正确分类为“熊猫”(panda)的原始输入图像, \(y\) 是对\(\mathbf{x}\)的真实表征标签ground truth label, \(\mathbf{\theta}\) 表示模型参数, 而 \(J(\mathbf{\theta}, \mathbf{x}, y)\) 是用来训练网络的损失函数。 这种攻击将梯度后向传播到输入数据来计算 \(\nabla_{x} J(\mathbf{\theta}, \mathbf{x}, y)\)。然后将输入数据通过一小步(\(\epsilon\) 或 如图中的\(0.007\) ) 在(i.e. \(sign(\nabla_{x} J(\mathbf{\theta}, \mathbf{x}, y))\)) 方向上调整,使损失最大化。结果将得到受到干扰的图像, \(x'\),尽管图片还是“熊猫”,但它一杯目标网络错误分类为“长臂猿”(gibbon)了

希望看到现在的你,已经明确了解了本教程的动机,那么,让我们开始实现它吧。

阅读全文/改进本文

PyTorch 1.0 中文官方教程:对抗性示例生成相关推荐

  1. PyTorch 1.0 中文官方教程:使用 Amazon AWS 进行分布式训练

    译者:yportne13 作者: Nathan Inkawhich 编辑: Teng Li 在这篇教程中我们会展示如何使用 Amazon AWS 的两个多路GPU节点来设置,编写和运行 PyTorch ...

  2. PyTorch 1.0 中文官方教程:使用PyTorch编写分布式应用程序

    译者:firdameng 作者:Soumith Chintala 在这个简短的教程中,我们将讨论PyTorch的分布式软件包. 我们将看到如何设置分布式设置,使用不同的通信策略,并查看包的内部部分. ...

  3. PyTorch 1.0 中文官方教程:torch.nn 到底是什么?

    译者:lhc741 作者:Jeremy Howard,fast.ai.感谢Rachel Thomas和Francisco Ingham的帮助和支持. 我们推荐使用notebook来运行这个教程,而不是 ...

  4. PyTorch 1.0 中文官方教程:使用 PyTorch C++ 前端

    译者:solerji PyTorch C++ 前端 是PyTorch机器学习框架的一个纯C++接口.PyTorch的主接口是Python,Python API位于一个基础的C++代码库之上,提供了基本 ...

  5. PyTorch 1.0 中文官方教程:混合前端的 seq2seq 模型部署

    译者:cangyunye 作者: Matthew Inkawhich 本教程将介绍如何是seq2seq模型转换为PyTorch可用的前端混合Torch脚本. 我们要转换的模型是来自于聊天机器人教程 C ...

  6. PyTorch 1.0 中文官方教程:在 C++ 中加载 PYTORCH 模型

    译者:talengu PyTorch的主要接口为Python.虽然Python有动态编程和易于迭代的优势,但在很多情况下,正是Python的这些属性会带来不利.我们经常遇到的生产环境,要满足低延迟和严 ...

  7. PyTorch 1.0 中文官方教程:用例子学习 PyTorch

    译者:bat67 最新版会在译者仓库首先同步. 作者:Justin Johnson 这个教程通过自洽的示例介绍了PyTorch的基本概念. PyTorch主要是提供了两个核心的功能特性: 一个类似于n ...

  8. PyTorch 1.0 中文官方教程:可选:数据并行处理

    译者:bat67 最新版会在译者仓库首先同步. 在这个教程里,我们将学习如何使用数据并行(DataParallel)来使用多GPU. PyTorch非常容易的就可以使用GPU,可以用如下方式把一个模型 ...

  9. PyTorch 1.0 中文官方教程:ONNX 现场演示教程

    译者:冯宝宝 本教程将向您展示如何使用ONNX将已从PyTorch导出的神经模型传输模型转换为Apple CoreML格式.这将允许您在Apple设备上轻松运行深度学习模型,在这种情况下,可以从摄像机 ...

最新文章

  1. 一文看懂 AI 训练集、验证集、测试集(附:分割方法+交叉验证)
  2. python之syslog模块
  3. java返回json ajax_Spring MVC 中 AJAX请求并返回JSON的示例
  4. ie8 script445: 对象不支持此操作_经验总结:上海增值税认证勾选安装和操作步骤...
  5. oracle输出查询返回多行,ORA-01427:单行子查询返回多行
  6. 在计算机网络中使用modem时它的功能是,在计算机网络中使用MODEM时,它的功能是____。...
  7. MySQL 5.7 免安装版配置
  8. 飞利浦医疗收购Direct Radiology,加强远程放射学服务能力
  9. Vlfeat (Matlab安装)
  10. win7怎么看计算机Mac地址,win7如何查看mac地址?win7系统查看mac地址两种方法
  11. 软件调试书籍资料汇总
  12. 小米笔记本电脑设置u盘启动的方法教程
  13. 爬虫python技术分享_Python技术分享:爬虫
  14. 利用Python实现词云舞蹈视频
  15. 【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)
  16. Neo4j使用记录--APOC和GDS的安装【实践】
  17. 阿里云云计算:1. 云计算的概念
  18. sct分散加载文件格式与应用
  19. MySQL连接工具(SQLyog、Navicat)下载安装
  20. 官方盘点 .NET 7 新功能

热门文章

  1. (82)FPGA面试题-FPGA浮点数的定点化(二)
  2. (89)FPGA三分频设计,面试必问(十三)(第18天)
  3. QCostomPlot 示例注解 3
  4. sqlite3学习笔记-方法介绍和测试代码
  5. mysql锁在粒度上分为_mysql锁的简单理解
  6. 基于modelsim的十个Verilog入门试验程序(5)(数字秒表+自助售票机)—程序+测试代码+波形+结果分析
  7. 学历史能学计算机吗,历史专业学计算机好吗
  8. Netfilter框架
  9. 【STM32】HAL库 STM32CubeMX教程十四---SPI
  10. ubuntu14.04+ROS indigo+kinectV1 骨骼点检测