在语义层面构建的对抗样本SemanticAdv: Generating Adversarial Examples via Attribute-conditioned Image Editing

对抗样本是黑盒水印里面一个经典的手段了,今天这篇SemanticAdv: Generating Adversarial Examples
via Attribute-conditioned Image Editing,构建了在语义层面的对抗样本。

对抗样本对模型的危害是很大的,我们甚至可以通过对抗样本得到任意的输出,另一方面,对抗样本加入模型的训练,可以很好的提高模型的准确率和鲁棒性。经典的方式构建对抗样本一般是在输出的images上加入随机噪声或者扰动(Lp bounded perturbations),保证修改后的图片在人眼识别的范围是不能被检测出来的,却能够很好的误导机器的预测输出。但是在像素空间上的修改,可能会有一定程度上的让图片失真(违背了对抗样本最基础的要求)。

所以本文提出了一种在语义层面上有意义的扰动(semantically meaningful perturbations),它可以被观察到却并不会让人眼认为是没有意义的,比如在人脸识别模型上,原始图片是黑发女郎,但是修改成金发,这样的视觉属性的修改(如图)。

在语义层面构建的对抗样本SemanticAdv: Generating Adversarial Examples via Attribute-conditioned Image Editing_第1张图片

话不多说,看看怎么做的吧。
如上图(右)feature map interpolation,以encoder-decoder模型为基础训练,encoder(enc)讲输入的图片编码成feature map,而decoder(dec)讲enc输出的feature map重新伪造成一张图片。由上图可以看见,将原始的图片(黑发),改变成金发之后,将两张图片同时输入enc,这时候输出的feature map上的一部分就会分别代表了这两种属性(黑发,金发)。将两张feature map融合:
在语义层面构建的对抗样本SemanticAdv: Generating Adversarial Examples via Attribute-conditioned Image Editing_第2张图片
其中,
在这里插入图片描述
是中间层的feature map,这几个维度分别是高,宽还有通道数。\beta 是一个张量,
在这里插入图片描述
每一个元素值都是在0-1之间。对比于Attribute-space interpolation.:
在这里插入图片描述
其中,x是原始图片,x^*是修改后图片,\alpha 是插值参数,c代表了属性向量。他这个意思应该就是直接在图片上进行修改,属性可以直接看成是图片的像素值之类(对于识别模型)。

显然文章中介绍的这种方法是更加灵活的,属性空间的插值基本上只用了一个变量\alpha,但是我认为稍微有点有失偏颇,\alpha 自己本身也可以是个矩阵,未必非要是常数,用这个说feature更加灵活感觉差点意思。缺点应该在很难直接人为确定\alpha,在像素上修改是一件很难检测的事,\alpha就算是个矩阵也很难确定每一个元素的值,至少得再过一遍某个网络,检测图片属性,再进行修改。那这个意思其实就是文章中介绍的这个feature map插值了。

最后就是训练,训练的loss 如下:
在语义层面构建的对抗样本SemanticAdv: Generating Adversarial Examples via Attribute-conditioned Image Editing_第3张图片
其中x是各种图片,\mathcal{M}是模型,y^tgt 是目标输出(比如人脸识别是人的名字)。 loss 的第一项是adversarial metric,当这一项最小时就得到了想要的对抗样本了。第二项是smooth项,因为生成的feature map他是一块地方代表了一个特征,融合之后某一块地方可能会和周围差的比较大,所以做个smooth。

一切到了这里都还算很好理解,loss的第一项让更新的图片的输出尽量接近y^tgt就可以了。
作者在后面提出了几个不同的任务上面的loss,比如

  1. identity veri cation task
    在这里插入图片描述
    \Phi是距离函数,k是个假正率界限(false positive rate (FPR) threshold)。这里尽量使得得到的图片x和目标图片x^tgt的距离近,假正率在这里应该是希望这样距离下的x能够有这个比例输出的标签也相同。

2.structured prediction tasks
这里用了houdini,
在这里插入图片描述
houdini loss function是对组合loss提出来的一个代理loss,这里的\Phi是一个评分方程,l(\cdot)是task loss。比较难解释清楚,大家可以去看看原文,原文提出的这个方法真的挺不错的,就是稍微会有点费劲。

最后就是smooth了,一个比较常见的用于降噪的方法:
在这里插入图片描述

你可能感兴趣的:(人工智能,深度学习,机器学习,网络安全)