Adversarial Machine Learning 斯坦福大学课程讲义
Adversarial Machine Learning
这一篇是斯坦福大学的课程讲义:Lecture 16 | Adversarial Examples and Adversarial Training
比较粗糙,自用,想了解可以直接看视频。
Overview
What are adversarial examples?
Why do they happen?
How can they be used to compromise machine learning systems?
What are the defenses?
How to use adversarial examples to improve machine learning, even when there is no adversary?
首先讲了很多机器学习的应用,其强大的功能已经能够媲美人类。于是诞生了一个方向,专门研究机器什么时候会出现问题。
下面是一个对抗攻击的例子,给大熊猫加了“噪声干扰”后,导致机器误判为长臂猿,并且概率高达99.9%

这很有意思,因为我们肉眼观察两张图片几乎不存在任何区别,加了“干扰”之后的图片里的大熊猫并没有变得与长臂猿更像,但是机器却认为这就是一只长臂猿。
下面是一个针对线性模型的攻击的例子

使用MNIST数据集里的一张表示9的图片,第一行试图让模型误判为0,第二行为1,以此类推。
发现几乎每种情况都能在几乎不改变图片原貌的情况下成功“欺骗”模型,使其误判。
过拟合产生对抗样本
给定这样的数据集训练一个分类模型,数据集中有两种点,一种是蓝色的X,一种是绿色的O,如果模型参数过多导致过拟合,那么就会出现以下情形。
给模型一个红色的X和O让模型进行分类,模型会误判。
欠拟合产生对抗样本

在超平面附近取反例会使模型误判,原因是模型过于简单,学习到的数据特征信息较少。

这张图是在说明现代模型很多都是分段线性的。输入和输出实际上是高度线性相关的,但是模型的参数和输出并不是线性相关的,所以训练模型优化模型参数是困难的,但是根据输出优化输入却是相对简单的。

为了验证上面的结论,采用卷积神经网络,跟踪其输入空间的一个一维的路径,在该路径的方向上乘上一个系数\epsilon,其取值从-30到30变化。左侧图片中,上面是\epsilon为正的图片,下面是负的。黄色框标出的是正确分类为汽车的样本。
右侧的图像中可以看到每个种类的概率随\epsilon变化,其曲线非常简单,几乎就是由两段线性函数构成的。其中frog类别的曲线变化尤为明显,说明这个方向与frog类别的特征相关度较高。

上图说明类间的距离(差异)其实很小。

上面的算法能够实现对抗样本生成,如果用上面的方法对一个没有采取防御措施的网络进行攻击的话,我们将会得到超过99%的攻击成功率。

右侧是cifar-10的样本,白色表示正确分类,别的颜色表示其他类别,可以看到每张图片几乎都被线性分开了。
可以看到对抗样本或多或少都是分布在线性子空间中。
这意味着不需要找到某个特定的坐标,只需要找到一个方向,使用FGSM算法就能够实现“欺骗”模型。

值得注意的是,对抗样本并不是噪声。在对抗样本中添加噪声不会影响它的对抗性,正如在“干净”的样本中添加噪声其仍然是“干净”的

上图是正交攻击方向的概率密度图,如果大多数方向都具有对抗性,那么如果取随机方向就能够实现对抗样本。
另外,不同的模型通常会误判同一个对抗样本。如果一个模型拥有较大的子空间,那么很有可能其会与另一个模型的子空间重叠。
强化学习的对抗样本,有点没听懂,相关视频找不到

针对Logistic Model

线性模型很糟糕,但是二次的模型的抗干扰能力很强。
迁移攻击

当你想要攻击一个未知模型时,可以训练一个代理模型,通过代理模型生成对抗性样本,从而对未知模型进行攻击。


使用对抗样本进行训练可以有效减少模型错误分类的概率

Conclusion
Attacking is easy
Defending is difficult
Adversarial training provides regularization and semi-supervised learning
The out-of-domain input problem is a bottleneck for model-based optimization generally
不能对神经网络最后一层进行攻击从而优化模型,因为最后一层完全没有抵抗能力,这会导致模型失效。
