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

Posted wizardforcel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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{ heta}) 表示模型参数, 而 (J(mathbf{ heta}, mathbf{x}, y)) 是用来训练网络的损失函数。 这种攻击将梯度后向传播到输入数据来计算 ( abla_{x} J(mathbf{ heta}, mathbf{x}, y))。然后将输入数据通过一小步((epsilon) 或 如图中的(0.007) ) 在(i.e. (sign( abla_{x} J(mathbf{ heta}, mathbf{x}, y)))) 方向上调整,使损失最大化。结果将得到受到干扰的图像, (x‘),尽管图片还是“熊猫”,但它一杯目标网络错误分类为“长臂猿”(gibbon)了

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

阅读全文/改进本文

以上是关于PyTorch 1.0 中文官方教程:对抗性示例生成的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch 1.0 中文官方教程:空间变换器网络教程

PyTorch 1.0 中文官方教程:使用ONNX将模型从PyTorch传输到Caffe2和移动端

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

PyTorch 1.0 中文官方教程:序列模型和LSTM网络

PyTorch-13 生成对抗网络(DCGAN)教程

学习(PyTorch教程+代码)50行代码实现对抗生成网络(GAN)