PyTorch 1.0 中文官方教程:对抗性示例生成
译者: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 中文官方教程:对抗性示例生成相关推荐
- PyTorch 1.0 中文官方教程:使用 Amazon AWS 进行分布式训练
译者:yportne13 作者: Nathan Inkawhich 编辑: Teng Li 在这篇教程中我们会展示如何使用 Amazon AWS 的两个多路GPU节点来设置,编写和运行 PyTorch ...
- PyTorch 1.0 中文官方教程:使用PyTorch编写分布式应用程序
译者:firdameng 作者:Soumith Chintala 在这个简短的教程中,我们将讨论PyTorch的分布式软件包. 我们将看到如何设置分布式设置,使用不同的通信策略,并查看包的内部部分. ...
- PyTorch 1.0 中文官方教程:torch.nn 到底是什么?
译者:lhc741 作者:Jeremy Howard,fast.ai.感谢Rachel Thomas和Francisco Ingham的帮助和支持. 我们推荐使用notebook来运行这个教程,而不是 ...
- PyTorch 1.0 中文官方教程:使用 PyTorch C++ 前端
译者:solerji PyTorch C++ 前端 是PyTorch机器学习框架的一个纯C++接口.PyTorch的主接口是Python,Python API位于一个基础的C++代码库之上,提供了基本 ...
- PyTorch 1.0 中文官方教程:混合前端的 seq2seq 模型部署
译者:cangyunye 作者: Matthew Inkawhich 本教程将介绍如何是seq2seq模型转换为PyTorch可用的前端混合Torch脚本. 我们要转换的模型是来自于聊天机器人教程 C ...
- PyTorch 1.0 中文官方教程:在 C++ 中加载 PYTORCH 模型
译者:talengu PyTorch的主要接口为Python.虽然Python有动态编程和易于迭代的优势,但在很多情况下,正是Python的这些属性会带来不利.我们经常遇到的生产环境,要满足低延迟和严 ...
- PyTorch 1.0 中文官方教程:用例子学习 PyTorch
译者:bat67 最新版会在译者仓库首先同步. 作者:Justin Johnson 这个教程通过自洽的示例介绍了PyTorch的基本概念. PyTorch主要是提供了两个核心的功能特性: 一个类似于n ...
- PyTorch 1.0 中文官方教程:可选:数据并行处理
译者:bat67 最新版会在译者仓库首先同步. 在这个教程里,我们将学习如何使用数据并行(DataParallel)来使用多GPU. PyTorch非常容易的就可以使用GPU,可以用如下方式把一个模型 ...
- PyTorch 1.0 中文官方教程:ONNX 现场演示教程
译者:冯宝宝 本教程将向您展示如何使用ONNX将已从PyTorch导出的神经模型传输模型转换为Apple CoreML格式.这将允许您在Apple设备上轻松运行深度学习模型,在这种情况下,可以从摄像机 ...
最新文章
- 一文看懂 AI 训练集、验证集、测试集(附:分割方法+交叉验证)
- python之syslog模块
- java返回json ajax_Spring MVC 中 AJAX请求并返回JSON的示例
- ie8 script445: 对象不支持此操作_经验总结:上海增值税认证勾选安装和操作步骤...
- oracle输出查询返回多行,ORA-01427:单行子查询返回多行
- 在计算机网络中使用modem时它的功能是,在计算机网络中使用MODEM时,它的功能是____。...
- MySQL 5.7 免安装版配置
- 飞利浦医疗收购Direct Radiology,加强远程放射学服务能力
- Vlfeat (Matlab安装)
- win7怎么看计算机Mac地址,win7如何查看mac地址?win7系统查看mac地址两种方法
- 软件调试书籍资料汇总
- 小米笔记本电脑设置u盘启动的方法教程
- 爬虫python技术分享_Python技术分享:爬虫
- 利用Python实现词云舞蹈视频
- 【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)
- Neo4j使用记录--APOC和GDS的安装【实践】
- 阿里云云计算:1. 云计算的概念
- sct分散加载文件格式与应用
- MySQL连接工具(SQLyog、Navicat)下载安装
- 官方盘点 .NET 7 新功能
热门文章
- (82)FPGA面试题-FPGA浮点数的定点化(二)
- (89)FPGA三分频设计,面试必问(十三)(第18天)
- QCostomPlot 示例注解 3
- sqlite3学习笔记-方法介绍和测试代码
- mysql锁在粒度上分为_mysql锁的简单理解
- 基于modelsim的十个Verilog入门试验程序(5)(数字秒表+自助售票机)—程序+测试代码+波形+结果分析
- 学历史能学计算机吗,历史专业学计算机好吗
- Netfilter框架
- 【STM32】HAL库 STM32CubeMX教程十四---SPI
- ubuntu14.04+ROS indigo+kinectV1 骨骼点检测