研究这个方向的动机,是因为在将神经网络模型应用于实际场景时,它仅仅拥有较高的正确率是不够的,例如在异常检测中、垃圾邮件分类等等场景,那些负类样本也会想尽办法来“欺骗”模型,使模型无法辨别出它为负类。因此我们希望我们的模型能够拥有应对这种攻击的能力。

How to Attack

通过影像辨识的例子来解释如何进行攻击。

假设我们已经训练了一个图像的分类器,对于我们下图中输入的图片它能够分辨出来是一只猫;那么我们现在对原始的输入进行一定的扰动,加入干扰项再输入到模型中看看它是否会辨别成其中的东西(图中这种扰动太大了,一般加入的扰动项是人眼无法辨别的):

那么这种攻击又划分为两类:

  • Non-targeted:这一类的攻击只要求能够让模型无法辨认出来是猫就行
  • targeted:这一类的模型是有目的性的,除了让模型无法辨别出来是猫之外,还希望让模型辨别出来是特定的物品

这里有一个很神奇的现象,假设我们加入的杂讯比较大,我们人眼能够直接观察得到:

可以发现机器还是大部分能够发现这是一只猫,只不过可能品种不同而已。但如果加入的杂讯是我们特别准备的,并且肉眼看不出来的:

可以看到不仅分类错误了,连信心分数都激增,并且事实上我们可以调整我们的杂讯让机器把这张看起来像一只猫的图片分辨成任何东西,因此这也是我们需要机器能够对抗攻击的原因之一。

那么接下来我们就来认识一下是怎么做到这种攻击的。

对于我们当前拥有的分类器,输入一张猫的图片\(x^0\)它输出为一个向量,是每一个类别的信心分数,其中最高的为猫。

  • 对于无目标的攻击来说,我们在原始图像更换成一张图片\(x\),它也经过分类器的处理后输出一个向量,那希望是这个向量能够和猫这个类别对应的One-hat-vector之间的距离越远越好
  • 对于有目标的攻击来说,我们在原始图像更换成一张图片\(x\),它也经过分类器的处理后输出一个向量,那不仅希望是这个向量能够和猫这个类别对应的One-hat-vector之间的距离越远越好,还希望这个向量与目标类别的One-hat-vector之间的差距越小越好

而对于向量之间的差距我们可以用交叉熵来表示,因此得到:

那么对于无目标的攻击,可以设定其损失函数为:

\[L(x)=-e(y,\hat{y})
\]

对于有目标的攻击可以设定其损失函数为:

\[L(x)=-e(y,\hat{y})+e(y,y^{target})
\]

因此优化目标为:

\[x^*=argmin_{d(x^0,x)<\varepsilon}~ L(x)
\]

其中\(d(x^0,x)<\varepsilon\)代表我们希望加入的图像和原始的图像比较接近,这样肉眼才看不出来。而这个距离的计算方式下面举两个例子:

  • L2-norm:\(d(x^0,x)=\lVert \Delta \vec{x}\rVert =\sum_{i=1}(\Delta x_i)^2\)
  • L-infinity:\(d(x^0,x)=\lVert \Delta \vec{x} \rVert=max\{\Delta x_i\}\)

那么这两种距离计算方法的区别在于人眼的观感程度,这也许听起来很抽象但可以通过下面的例子解释:

上方和下方的图它们与原始的图的L2-norm距离相同,只不过上方的图距离都分散的每一个像素,下方的图集中在右下角的像素,因此下方的图我们能够明显感受出差别。

而这两张图的L-infinity差距是不同的,第一张图显然比第二张图小。那么为了要让我们人眼无法辨认,我们需要对这个L-infinity进行限制,才可以让我们无法看出来,因此一般是选择L-infinity。

那么下面的问题就是我们如何求解这个优化问题

\[x^*=argmin_{d(x^0,x)<\varepsilon}~ L(x)
\]

对于此问题,跟之前我们训练模型时调整参数是一样的,只不过调整的参数变成了输入而已,同样也可以采用梯度下降来求解,只不过要加上一定的限制而已:

进行梯度更新的时候,我们要时刻检查更新之后其距离是否会超过限制的范围,如果超过了就要及时地将其修正回来

有一个应用上述思想的简单算法为FGSM,其特点在于:

  • 它只迭代一次
  • 它的学习率设为我们限制的距离大小
  • 它的梯度计算出来后会对每一个分量加上一个Sign函数,使其成为正负1

那么可以看到,这样更新一次是绝对不会超过范围的,因此这样找到的或许是可行的。

White Box v.s. Black Bos

在前面介绍的攻击方法中我们需要计算梯度,而计算梯度则要求我们知道该模型内部的参数,因此这一种攻击称为White Box(白箱攻击),这一种攻击对于一些未知模型来说可能是无法进行的。但这不代表着不让别人知道模型参数就是安全的,因为还有Black Bos(黑箱攻击),这一类攻击不需要知道模型内部的参数就可以发动攻击。

对于黑箱攻击来说,一种简单的情况是我们知道这个未知的模型是由哪些训练资料训练出来的,那么我们就可以用一个具有类似网络结构的模型也对这些训练资料进行训练,得到我们自己模型的参数,那么再在这个模型上计算如何攻击,最终将得到的攻击应用到目标模型中就可能会成功,如下图:

那么复杂一点的情况就是我们也不知道训练集,那么可能可行的做法为用一大堆我们自己的资料放进去这个模型,相应会得到一大堆输出,那么将这些输入和输出来作为训练集,就可以类比上面的做法进行训练

在实际上,黑箱攻击和白箱攻击都是很容易成功的,并且在一个模型上攻击成功的x,用在另外的模型上也非常容易攻击成功,那么这就让人有了研究的空间,但目前仍然没有明确的答案,值得让人信服的解释是实际上攻击是否成功主要取决于你的训练资料而不是取决于你的模型,相同的训练资料所训练出来的不同模型在被攻击时很可能呈现相同的结果,也就是说攻击可以认为是“具有特征性的”,也许你得到的这个攻击向量看起来真的很像是杂讯, 但这可能就是机器从训练资料中学习到的特征

这里补充一个小知识点,因为我们之前说到的攻击都说客制化的,即对于每一张图片单独计算它的攻击向量,那么假设影响场景为某个摄像头,我们想要让这个摄像头对于输入都辨认错误的话则要对每张图片都计算,那么运算量很大;那么有没有可能能够有一个通用的攻击向量,如果将它加入摄像头摄取的每一个图片的时候,都能够使该图片被辨认错误,那么这样的攻击称为Universal Adversarial Attack。这种是可能可以做到的。

其他攻击类型综述

Adversarial Reprogramming

这一个类别的攻击在于直接攻击模型,它像是寄生虫一样寄生于别的模型之上,然后让其他已经训练好的模型来做我们想做的任务

"Backdoor" in Model

这种开后门的方法是在训练阶段就已经攻击了,例如在训练阶段加入特定的图片,让训练完成后的模型看到某一张特定图片的鱼是会分辨成狗。但是这种训练要保证我们加进去的特殊图片它是人眼无法检查出来的,不能说加入一大堆鱼的图片然后标准改成狗,这是不行的。

Defense

前面都是在讲如何进行攻击,那么接下来进行介绍我们如何进行防御

Passive Defense

这类防御,训练完模型之后就不改变模型,而是在将样本输入到模型之前,增加一个filter环节,如下:

那么这个Filter的作用可以认为是削减这个攻击信号的威力,使我们的模型仍然能够正常的进行辨认。那么这个Filter也不一定特别复杂,有时候例如进行模糊化就可以达到我们想要的效果,但要注意模糊化也有负作用,就是让机器的信心分数降低:

类似于这种方法还有很多,例如将影像进行压缩和解压缩,可能就可以让攻击信号失去威力,或者通过AE自编码器来重新生成,也可能可以过滤掉杂讯等等。而这种被动防御一般来说如果被攻击方明确你采用的防御方法,那么就非常容易被破解。

那么可能的改进是加入随机化,即在对图像处理处理的时候随机选择可选的处理策略,不过还是得保护住你随机的分布才可以保持防御的有效性。

Proactive Defense

这种思想是在训练时就训练一个不容易被攻击的模型。具体的做法是我们自己创造攻击类型的向量来进行攻击训练,即对原始的样本修改为攻击的样本,不过我们要加上它原来正确的标签,将这些作为训练资料来对模型进行训练。

但这个问题主要是能够抵挡你训练过的那些攻击的方法,对于未见过的攻击算法很可能挡不住。

【机器学习】李宏毅——Adversarial Attack(对抗攻击)的更多相关文章

  1. KDD 2018 | 最佳论文:首个面向Facebook、arXiv网络图类的对抗攻击研究

    8 月 19 日至 23 日,数据挖掘顶会 KDD 2018 在英国伦敦举行,昨日大会公布了最佳论文等奖项.最佳论文来自慕尼黑工业大学的研究者,他们提出了针对图深度学习模型的对抗攻击方法,是首个在属性 ...

  2. SNN对抗攻击笔记

    SNN对抗攻击笔记: 1. 解决SNN对抗攻击中脉冲与梯度数据格式不兼容性以及梯度消失问题: G2S Converter.Gradient Trigger[1] 2. 基于梯度的对抗攻击方式: FGS ...

  3. Exploring Adversarial Attack in Spiking Neural Networks with Spike-Compatible Gradient

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:2001.01587v1 [cs.NE] 1 Jan 2020 Abstract 脉冲神经网络(SNN)被广泛应用于神经形态设 ...

  4. Adversarial Attack Type I: Cheat Classifiers by Significant Changes

    出于实现目的,翻译原文(侵删) Published in: IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI ...

  5. 对抗攻击(一) FGSM

    引言 在对抗样本综述(二)中,我们知道了几种著名的对抗攻击和对抗防御的方法.下面具体来看下几种对抗攻击是如何工作的.这篇文章介绍FGSM(Fast Gradient Sign Method). 预备知 ...

  6. XML External Entity attack/XXE攻击

    XML External Entity attack/XXE攻击   1.相关背景介绍 可扩展标记语言(eXtensible Markup Language,XML)是一种标记语言,被设计用来传输和存 ...

  7. QA 中的对抗攻击和防御

    攻击 supporting facts 的修改:字符调换,替换词(用空格embedding或近同义词,变形词等) 还有针对question的攻击. 梯度下降,在embediing上做攻击,如何deco ...

  8. Replay attack 回放攻击

    w http://baike.baidu.com/item/重放攻击 重放攻击(Replay Attacks)又称重播攻击.回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一 ...

  9. 【笔记】机器学习 - 李宏毅 - 10 - Tips for Training DNN

    神经网络的表现 在Training Set上表现不好 ----> 可能陷入局部最优 在Testing Set上表现不好 -----> Overfitting 过拟合 虽然在机器学习中,很容 ...

  10. 【笔记】机器学习 - 李宏毅 - 5 - Classification

    Classification: Probabilistic Generative Model 分类:概率生成模型 如果说对于分类问题用回归的方法硬解,也就是说,将其连续化.比如 \(Class 1\) ...

随机推荐

  1. PAT (Basic Level) Practice 1023 组个最小数 分数 20

    给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...

  2. python-函数-统计函数

    #(1)amax(),amin() 作用:计算数组中的元素沿指定轴的最大值,最小值 import numpy as np x = np.random.randint(1,11,9).reshape(( ...

  3. 适用于移动端、PC 端 Vue.js 图片预览插件

    1.安装:npm install --save vue-picture-preview 2.使用: (1)入口文件中main.js中全局引入: import Vue from 'vue' import ...

  4. JavaWeb505错误,IDEA版问题解决

    问题描述: 在学习JavaWeb的过程中,使用JSP文件转至servlet文件的过程中,发现无论如何都无法打开文件 JSP文件代码 <%@page contentType="text/ ...

  5. 220722 T2 序列(ST表+分治)

    题目描述 小 B 喜欢玩游戏. 有一天,小 B 在玩一个序列上的游戏,他得到了正整数序列{ai}以及一个常数c . 游戏规则是,玩家可以对于每一个ai 分别加上一个非负整数x ,代价为 x2,完成所有 ...

  6. POJ3041 小行星 (二分图匹配模板)

    学了这么久连模板都没有写过,我来补个坑...... 将行看成集合X,列看成Y,障碍看成是X到Y的一条边. 消除次数最少,等价于最小点覆盖问题,最小点覆盖=最大匹配数,跑一遍匈牙利就行了 #includ ...

  7. 后端框架学习-----mybatis(使用mybatis框架遇到的问题)

    1.配置文件没有注册(解决:在核心配置文件中注册mapper,注册有三种形式.资源路径用斜杆,包和类用点) <mappers> <!--每一个mapper.xml文件都需要在myba ...

  8. C++ Undefined Behavior 详细列表

    Undefined Behavior,即未定义的行为,指程序不可预测的执行效果,一般由错误的代码实现引起.出于效率.兼容性等多方面原因,语言标准不便于定义错误程序的明确行为,而是将其统称为" ...

  9. 【ps下载与安装】Adobe Photoshop 2022 for Mac v23.5 中文永久版下载 Ps图像编辑软件

    Adobe Photoshop 2022 mac破解版,是一款Ps图像编辑软件,同时支持M1/M2芯片和Intel芯片安装,此主要的更新包括多个新增和改进的功能,例如改进的对象选择工具,其悬停功能可预 ...

  10. 累加和为 K 的子数组问题

    累加和为 K 的子数组问题 作者:Grey 原文地址: 博客园:累加和为 K 的子数组问题 CSDN:累加和为 K 的子数组问题 题目说明 数组全为正数,且每个数各不相同,求累加和为K的子数组组合有哪 ...