主要内容

为图像分类生成没有针对性和有针对性的对抗的例子

这个例子展示了如何使用快速梯度信号方法(FGSM)和基本迭代法(BIM) pretrained神经网络产生敌对的例子。

神经网络可以容易的现象称为敌对的例子[1],很小的更改输入分类错误是会导致输入。这些变化通常是人类察觉不到的。

在这个例子中,您将创建两种类型的敌对的例子:

  • 没有针对性,修改一个图像,并被错误地归类为任何不正确的类。

  • 目标——修改图像,并被错误地归类为一个特定的类。

负载网络和图像

负载的网络一直在训练ImageNet[2]数据集,将它转换成一个dlnetwork

网=squeezenet;lgraph = layerGraph(净);lgraph = removeLayers (lgraph lgraph.Layers(结束). name);dlnet = dlnetwork (lgraph);

提取类标签。

类=类别(net.Layers(结束). class);

加载图像用于生成一个敌对的例子。图像是一个金毛猎犬的照片。

img = imread (“sherlock.jpg”);T =“金毛猎犬”;

调整图像大小来匹配输入的网络。

inputSize = dlnet.Layers (1) .InputSize;img = imresize (img inputSize (1:2));图imshow (img)标题(“地面实况:“+ T)

准备将它转换为图像dlarray

X = dlarray(单(img),“SSCB”);

准备一个炎热的编码的标签。

T = onehotencode (T, 1“类名”、类);T = dlarray(单(T)“CB”);

没有针对性快速梯度信号方法

创建一个敌对的例子使用的诸多FGSM [3]。该方法计算梯度 X l ( X , T ) 的损失函数 l 关于图像 X 你想找一个敌对的例子,和类标签 T 。这个梯度描述“推”图像的方向增加分类错误的机会。然后,您可以添加或减去一个小错误每个像素提高图像分类错误的可能性。

敌对的例子是计算如下:

X 阿德 = X + ϵ 标志 ( X l ( X , T ) )

参数 ϵ 控件的大小。一个更大的 ϵ 值生成一个图像分类错误的可能性增加,但使图像的变化更明显。该方法没有针对性,目的是使图像,因为不管哪个类。

计算图像的梯度对金毛猎犬类。

梯度= dlfeval (@untargetedGradients dlnet X T);

ε1和产生敌对的例子。

ε= 1;XAdv = X +ε*标志(梯度);

预测的类原始图像和敌对的形象。

YPred =预测(dlnet X);YPred = onehotdecode(挤压(YPred)类,1)
YPred =分类金毛猎犬
YPredAdv =预测(dlnet XAdv);YPredAdv = onehotdecode(挤压(YPredAdv)类,1)
YPredAdv =分类拉布拉多寻回犬

显示原始图像,扰动添加到图像和对抗的形象。如果ε值是足够大的,对抗性的图像从原始图像有不同的类标签。

showAdversarialImage (X, YPred XAdv YPredAdv,ε);

网络的正确分类的金毛猎犬的形象。然而,由于扰动,网络分类敌对的拉布拉多寻回犬的形象。一旦添加到图像,扰动是听不清,展示如何对抗的例子可以利用在一个网络的鲁棒性问题。

有针对性的对抗的例子

一个简单的改进FGSM是执行多个迭代。这种方法被称为基本迭代法(BIM)[4]或投影梯度下降[5]。荡妇,扰动的大小由参数控制 α 代表每个迭代的步长。这是随着BIM通常需要很多,小,FGSM步骤的方向梯度。每一次迭代后,剪辑扰动,确保不超过级 ϵ 。这种方法可以产生敌对的例子不如FGSM失真。

当你使用没有针对性FGSM,预测的标签的对抗性的例子非常类似于原始图像的标签。例如,狗可能会被误诊为一种不同的狗。然而,您可以很容易地修改这些方法来分类一个图像作为一个特定的类。而不是最大化熵损失,可以减少网络的输出之间的均方误差和期望的目标输出。

生成一个目标对抗的例子使用BIM和大白鲨目标类。

targetClass =“大白鲨”;targetClass = onehotencode (targetClass 1“类名”、类);

增加了ε值5,设置步长α25至0.2,并执行迭代。请注意,您可能需要调整这些设置为其他网络。

ε= 5;α= 0.2;numIterations = 25;

跟踪扰动和剪辑超过任何值ε

δ= 0(大小(X),“喜欢”,X);i = 1: numIterations梯度= dlfeval (@targetedGradients dlnet X +δ,targetClass);δ=δ-α*标志(梯度);三角洲(三角洲>ε)=ε;三角洲(三角洲< -ε)= -ε;结束XAdvTarget = X +δ;

预测目标的阶级对抗的例子。

YPredAdvTarget =预测(dlnet XAdvTarget);YPredAdvTarget = onehotdecode(挤压(YPredAdvTarget)类,1)
YPredAdvTarget =分类大白鲨

显示原始图像,扰动添加到图像和目标对抗的形象。

showAdversarialImage (X, YPred XAdvTarget YPredAdvTarget,ε);

因为听不清微扰,网络分类敌对的大白鲨的形象。

对敌对的例子使网络更加健壮,可以使用对抗训练。为一个例子,演示如何训练一个网络健壮的敌对的例子,看看训练图像分类网络健壮的敌对的例子

万博1manbetx支持功能

没有针对性输入梯度函数

计算梯度用来创建一个没有针对性敌对的例子。这个梯度的梯度叉损失。

函数梯度= untargetedGradients (dlnet X,目标)Y =预测(dlnet X);Y = stripdims(挤压(Y));损失= crossentropy (Y,目标,“DataFormat”,“CB”);梯度= dlgradient(损失,X);结束

目标输入梯度函数

计算梯度用来创建一个目标对抗的例子。这个梯度的梯度均方误差。

函数梯度= targetedGradients (dlnet X,目标)Y =预测(dlnet X);Y = stripdims(挤压(Y));损失= mse (Y,目标,“DataFormat”,“CB”);梯度= dlgradient(损失,X);结束

显示敌对的形象

显示一个图像,对应的敌对的形象,两者的区别(扰动)。

函数showAdversarialImage(图片,标签,imageAdv labelAdv,ε)图次要情节(1、3、1)imgTrue = uint8 (extractdata(图片);imshow (imgTrue)标题(的“原始图像”+换行符+”类:“+字符串(标签)次要情节(1、3、2)扰动= uint8 (extractdata (imageAdv-image + 127.5));imshow(扰动)标题(“微扰”次要情节(1,3,3)advImg = uint8 (extractdata (imageAdv));imshow (advImg)标题(“敌对的形象(ε= "字符串(ε)+ +“)”+换行符+”类:“+字符串(labelAdv))结束

引用

[1]格拉汉姆·古德费勒,伊恩·J。,Jonathon Shlens, and Christian Szegedy. “Explaining and Harnessing Adversarial Examples.” Preprint, submitted March 20, 2015. https://arxiv.org/abs/1412.6572.

[2]ImageNet。http://www.image-net.org。

[3]Szegedy,基督徒,Wojciech伦巴,Ilya Sutskever,琼·布鲁纳Dumitru Erhan,伊恩·格拉汉姆·古德费勒和罗伯·费格斯。“有趣的神经网络的性质。“预印本,提交2014年2月19日。https://arxiv.org/abs/1312.6199。

[4]Kurakin阿列克谢,伊恩·格拉汉姆·古德费勒和萨米Bengio。“敌对的例子在现实世界。“预印本,提交2017年2月10日。https://arxiv.org/abs/1607.02533。

[5]Madry,亚历山大,亚历山大Makelov,路德维希·施密特,Dimitris齐和Adrian Vladu。“向深度学习模型对对手的攻击。“预印本,提交2019年9月4日。https://arxiv.org/abs/1706.06083。

另请参阅

|||||||

相关的话题