美文网首页对抗攻击
神经网络中的对抗攻击与对抗样本

神经网络中的对抗攻击与对抗样本

作者: 路过的飞碟 | 来源:发表于2020-11-15 15:58 被阅读0次

对抗攻击

对抗攻击论文参考:
《Intriguing properties of neural networks》
《神经网络有趣的特性》

《Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey》,以下简称『Survey』。

图片做适当修改后能欺骗深度学习模型的可能性

1.举例理解:

左边是一张能够被GoogLeNet正常分类为熊猫的图片,在添加一定的噪音后变成右图,在人的肉眼看来,它还是熊猫,但GoogLeNet会判定为长臂猿。这种被修改后人类无法明显察觉,却被机器识别错误的数据即为对抗样本,而这整个过程就可以理解为对抗攻击

2.数学理解:
神经网络中每层神经元的输入 a = g(Wx+b),其中 g 为激活函数,W 为权重参数,x 为上一层的样本数据,b 为偏置参数,那么从拓扑学角度来看,在一个二维平面上,这个过程相当于哪几个步骤呢?
(1)一次使用权重参数矩阵 W 的线性变换
(2)一次使用偏执向量 b 的移动
(3)一次应用非线性激活函数 g 的变换

二维平面,其实是将整个平面进行了旋转、移动和拉伸三步。

分类问题

简单分类问题:通过较少几次变换将问题转换为一条直线可分割的空间。
既是一层神经网络就可以完成分类,通过变换空间布局,最终通过一条直线完成分类。

举例:

简单转换ing........

转换结果看下图

复杂分类问题:通过多几次的转换完成将问题转换为一条直线可分割的空间。
就是多层神经网络完成分类,通过变换空间布局,最终通过一条直线完成分类。

举例:

动态多步转换

以上是从低维度理解神经网络的训练,其中也有难以拉伸的例外,下图所示的圆套圆的情况,就是难以在二维空间将其拉伸到理想的位置的例子。

但,增加神经元,可以在三维空间中轻松将其分离。

看!

归纳同样对于复杂问题可以通过,增加神经元在高维度通过更长且复杂的方式解决。

但是例如两个相互套起来的环,按照推测需要在四维空间中才能完全分开,然而我们难以想象四维空间,在现实世界的数据集中,这种死结或者缠绕问题可能会更复杂。

对于神经网络来,可以选择将打成死结的数据尽可能拉伸开,而不是完全解开,如下图,对于分类问题来说,已经具有较高的准确率和召回率。

部分情况下,为了更精确地分类,较宽的神经网络可能相对深度来说更重要。

综上所述
1.神经网络中包含语义信息的不在每个独立的神经单元,而是整个空间。神经网络在最后一层能将样本中诸多变化的因子理清楚并理解其语义,并不是因为某个独立神经元中包含了什么特定的语义,而是对整个空间进行变换后从最终的表征层中学到的,经过学习,神经网络会放大某些相关因子,同时缩小某些无关因子

2.神经网络学习到的输入到输出的映射在很大程度上是不连续的。就像上面图中为了解开一个死结所做的拉伸结果一样,在人看来,在拉伸距离较大的地方我们可以认为这种映射是连续的,然而对于仍然缠绕在一起的部分,之前可以用来划分界限的直线或者超平面已经无法连续
通过仔细观察可以区分出来,但是上文只是一个简单的例子,现实世界中的真实数据较为复杂,对于肉眼来说可能很难分清楚缠绕在一起的部分。对于神经网络来说,对抗样本已经严重的跨过了用于分类的界限,而对于肉眼其实还看不出来它有移动。

()线性特性的攻击行为()和()高效制造对抗样本的方法()

参考论文:
《Explaining and harnessing adversarial examples》
《对抗性例子的解读和掌握》

深度神经网络在高纬空间中的线性特性已经足以产生这种攻击行为,并提出了一种更高效生成对抗样本的方法,接下来我们就简单分析一下这一理论和方法。

目前神经网络为了提高训练效率所使用的激活函数在局部都过于线性。
例如:

类比先前举出的拓扑学例子,在最后的表征层都是通过直线或超平面完成的分类,在线性的假设下,暂且不通过二维或三维空间来理解,先从一个简单的数学公式角度开始。

数学解释

公式内容解释:
w 是训练好的参数向量
x 表示真实样本数据向量
η 表示给图像加入的噪音向量
x ~表示加入噪音后新生成的样本

当加入足够小的 η 时,肉眼无法区分出 x 的变化,直观感觉上左边的式子可能也不会变化很大。
事实上,然而 η 当的方向与 w 完全一致的时候,即使很小,也会使整个激活值变化很大。
假设证明:
如果 w 是一个 n 维向量,而其权值的平均大小为 m,那么激活值将会增加 nm。可见,在一个肉眼几乎无法差觉的扰动干扰下,对神经网络最终激活层的计算会产生巨大的干扰,从而迷惑神经网络训练出来的模型。

寻找正确方向
当 η 与 w 的方向一致时会使激活值最大,那么,如何找到这个正确的方向呢?

结论,那就是损失函数在待构造样本上的梯度方向,即下面的式子。
ε 是一个调节系数
sign() 是一个符号函数,代表的意思也很简单,就是取一个值的符号
(当值大于 0 时取 1,当值等于 0 时取 0,当值小于 0 时取 -1)
▽ 表示求 x 的梯度,可以理解为偏导,
J 是训练模型的损失函数。

结论的由来
在正常的神经网络模型训练过程中,有一个过程叫反向传播,就是对参数求偏导,然后将参数更新,我们结合下面这张图看一下。

假设图中的函数即为损失函数,为了使损失函数降到最低,我们会根据当前值的梯度去调整。
当梯度小于 0 的时候我们可以看出,当前值需要右移。
而当梯度大于 0 的时候,当前值需要左移。
这个过程实际上就是用 θ 减去 θ。扩展到损失函数 J(θ, x, y) 中,θ 即为我们要调整的参数,因此在样本 x 和 y 不改变的情况下,我们会**不断去调整参数 θ **以寻求局部最优解,即 θ = θ - θ 。

生成对抗样本,也可以采用类似的方法,那就是固定参数 θ,调整 x 同时使损失函数增大,而不是变小,此时就应该让 x 往相反的方向走,即 x = x + x ,这样是不是很容易可以理解上面 η 的定义呢?在实践中,我们还需要通过 ε 这个参数来调节噪音的大小,这种方法相比之前提到的优化方法非常高效,基本只需要一次计算就可以找到对抗样本,因此作者将这种方法叫做快速梯度符号法(Fast Gradient Sign Method,FGSM)。总结一下FGSM,这种方法通过替换目标值 y 就可以让攻击样本朝着指定的分类目标走,即,可以做任意目标的欺骗。

将线性假设简化到二维空间,我们要求的 η 其方向正好就接近于参数 w 的方向,不再展开说明,有兴趣的读者可以自行画一画。

建立在一个高维空间线性的假设或猜测前提下,需要实验支撑,根据下列图片分析展开。

图片解释

这张图是对数据集CIFAR-10的分类器的决策边界示意图。
其中每个小格子代表的是不同的CIFAR-10样本,
每个小格子中:
横向从左往右代表的是FGSM算法中的梯度方向,
纵向代表的是FGSM梯度方向的正交方向,
白色表示模型能分类正确的情况
彩色代表预测出错的情况
不同的颜色代表不同的错误预测分类。
可以看出,在出错的区域都程线性分布,另外,如果横轴的方向走的不够远,即便再往其他方向走都无法使模型出错,而一单进入这个区域,就会出现大量的对抗样本。而在随机找到的对抗样本中,这种分布也是很随机的,甚至很难找到,见下图。

从实验结果表明
高维空间中的线性假设也是合理的

举例
一匹叫做 Clever Hans 的马,刚出现的时候人们认为这匹马会做算术,但实际上它只是会阅读人的表情,当它点马蹄的次数接近正确答案时,人们的表情会更兴奋,它就知道该这个时候停止了。

隐喻神经网络,一个测试效果良好的分类器,其实并不像人类一样学习到了所分类样本的真正底层概念,只不过刚好构建了一个在训练数据上运行相当良好的模型,所以,你以为你以为的就是你以为的吗?

分类器能够在训练集的不同子集上训练时获得大致相同的分类权重,因为机器学习算法能够泛化, 基础分类权重的稳定性反过来又会导致对抗性样本的稳定性。因此,对抗攻击可以认为是存在于任何神经网络模型。

以上是论文二的线性特性的攻击行为

高效制造对抗样本的方法

目前来看还没有能够完全抵抗这种攻击的方法,其实结合攻击的原理也不难看出,即便分类器做得再好,总能使一个样本用最小的干扰走到错误的分类区域,我们能做的更多是如何构造鲁棒性更强的模型,同时也保持对这个领域的关注。『Survey』(注意第一篇论文的引用有注释)中总结的目前抵御攻击的办法可以分为三大类:

1.修改训练样本 ———— 通过添加更多的对抗样本到训练集中可以有效避免一部分攻击,但这更像是一种无奈的做法,当扩大样本集的时候,其实分类边界有可能也在随之扩大

2.修改训练网络,这类方法会对训练网络做出一定调整,其中有一种方式是模拟生物学在最后一层使用更加非线性的激活函数,但这种方式又会导致训练效率和效果下降。修改训练网络的方法分为完全抵抗仅检测两种方式,完全抵抗其实就是让模型能将对抗样本识别为正确的分类,而仅检测是为了发现这种攻击样本,从而拒绝服务。

3.附加网络,这种方式是在不改变原有模型的情况下使用额外的网络进行辅助,这样可以使原有网络保持不变,其中最有效的一种方式是生成式对抗网络——GAN。同样的,这种方式也分为完全抵抗仅检测两种方式。

总结一下
定义:
对抗样本:是指在数据集中通过故意添加细微的干扰所形成的输入样本,会导致模型以高置信度给出一个错误的输出。
原因分析:
对抗样本出现的主要原因之一是过度线性, 神经网络主要是基于线性块构建的,实现的整体函数被证明是高度线性的,如果一个线性函数具有许多输入,那么它的值可以非常迅速地改变。

参考:

  1. Akhtar, N., & Mian, A. (2018). Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey. IEEE Access, 1–1. http://doi.org/10.1109/ACCESS.2018.2807385
  2. Szegedy, C., Zaremba, W., Sutskever, I., Bruna, J., Erhan, D., Goodfellow, I., & Fergus, R. (2013, December 21). Intriguing properties of neural networks. https://arxiv.org/abs/1312.6199
  3. Goodfellow, I. J., Shlens, J., & Szegedy, C. (2014, December 20). Explaining and Harnessing Adversarial Examples. https://arxiv.org/abs/1412.6572
  4. Adversarial Examples and Adversarial Training. CS231(youtube视频)
  5. Neural Networks, Manifolds, and Topology
  6. cleverhans blog
  7. How Adversarial Attacks Work
  8. Adversarial Attacks and Defences for Convolutional Neural Networks
  9. Adversarial Training-Fast gradient sign method
  10. Adversarial examples in deep learning
  11. 对抗样本与对抗训练
  12. 忽悠神经网络指南:教你如何把深度学习模型骗得七荤八素
    13.https://blog.csdn.net/u010420283/article/details/83655206?utm_source=app
    14.百度百科

相关文章

网友评论

    本文标题:神经网络中的对抗攻击与对抗样本

    本文链接:https://www.haomeiwen.com/subject/kbakvktx.html