text: 如何看待机器视觉的“对抗样本”问题，其原理是什么？ 
  NIPS 2017对抗样本攻防赛冠军廖方舟的算法分享
  【主讲人：廖方舟】
  清华大学化学生物学学士，清华大学生医系在读博士。
  研究兴趣：计算神经学、机器学习、计算机视觉。
  参加过多次Kaggle比赛，曾获2017年“数据科学碗”第一名，Data Science Bowl第一名，NIPS 2017对抗样本攻防比赛第一名。
  对抗样本是一类被恶意设计来攻击机器学习模型的样本。它们与真实样本的区别几乎无法用肉眼分辨，但是却会导致模型进行错误的判断。对抗样本的存在会使得深度学习在安全敏感性领域的应用收到威胁，如何对其进行有效的防御是重要的研究课题。我们提出了动量迭代快速符号化梯度法和高层引导去躁算法，分别应用于对抗样本的攻击和防御，取得了NIPS 2017对抗样本比赛的冠军。
  1.背景知识篇
  什么是对抗样本？如下图所示，通过在自然图片上加入一些人工噪声来“欺骗”神经网络，使得神经网络输出错误的预测结果。
  再看下图的第一行，它表示的是识别不同鸟类的网络，高亮的部分是网络中神经元有响应的部位，可以看出响应基本集中在鸟的头部，即网络通过识别鸟的头部特征来给出预测的鸟类结果。
  下图第二行是一些对抗样本在该网络上的表现，可以看到网络在这些图像的响应部位与鸟的头部非常相似，此时网络会以较高的概率将这些图像错误地识别成某些鸟类。
  从上面可以看出，对抗样本可以用来欺骗网络，那么我们如何生成这些对抗样本来攻击网络呢？
  一种最简单的攻击方法叫做快速梯度法（见下图），给定一张图像，输入给神经网络，得到预测结果，然后用梯度下降法修改一下原图使得预测结果变差。
  一个推广的方法叫做迭代梯度法，就是对刚才的过程进行多次重复。这种攻击称作白盒攻击，因为假设攻击者已经知道了要被攻击的模型的所有细节。而与之相对的就是黑盒攻击，顾名思义，攻击者事先不知道要攻击网络的模型和具体细节。
  了解完背景知识后，下面我们正式进入NIPS攻防赛的实战。
  比赛共分为三个项目，第一项是targeted attack，给定类别和图像库，目标是使得库中的图像都被错分到给定类别上。第二项是non-target attack，即事先不知道需要攻击的网络细节，也不指定预测的类别，生成对抗样本来欺骗防守方的网络。最后一项是defense，抵御前两个项目的攻击，即需要将前两个项目生成的对抗样本分类到正确的类别上。具体的攻防对抗流程和评分标准见下图：
  2.攻击篇
  首先来试一下使用上面提到的FGSM方法进行白盒和黑盒攻击的效果（见下图）：
  其中纵轴表示使用FGSM在这些网络上生成对抗样本，给定1000张图片，每张原始图片生成一张对抗样本，即每个网络生成了1000张对抗抗本。
  将纵轴对应的网络生成的对抗样本应用在横轴对应的网络上，得到正确分类的图像数目。可以看出红色的部分（对角线），在不使用对抗样本训练时，准确率非常低，但是其推广性不强，即用自己生成的对抗样本攻击自己是有效果的，但是攻击别的网络效果不是很好。
  接着，我们使用迭代的FGSM方式来生成对抗样本增加了白盒攻击的成功率，但是却降低了黑盒攻击的成功率。
  那么如何同时保证白盒攻击成功率和黑盒攻击成功率呢？我们发现了一个解决方法，即通过在FGSM迭代过程中加入Momentum。公式如下所示：
  使用上述动量迭代法后，白盒和黑盒攻击成功率均有了明显的上升。最终，促使我们在NIPS攻防赛的targeted attack和non-targeted attack项目中得分遥遥领先，成功夺冠。
  3.防守篇
  刚才我们一直在说如何生成对抗样本，下面我们来讨论如何防御这些对抗样本。
  实际上，对抗样本是在原始自然图像中加入了一些特定的噪声生成的，这些噪声并不是人眼不可辨的，我们把图像局部放大还是能够明显看出来存在非常大的差别的。
  很自然想到的一个方法来抵御这些对抗样本--图像去噪。目前比较常见的两种图像去噪方法：一种是传统的图像抗噪方法，如中值滤波或者BM3D去噪。另一种是使用神经网络的方法。
  首先我们尝试了传统去噪法，但是效果不佳，于是我们来试试用神经网络进行去噪的方法。我们使用了存在跨层连接的U-Net结构，并通过上面提到的FGSM方法来生成了大量的对抗样本作为该网络的训练样本。网络结构如下所示：
  结果：使用U-Net进行图像去噪，虽然图像上的绝大部分噪声被消除了，但是并没有增加分类准确率。也就是说，使用该方法将图像去噪后并不能有效抵御攻击。
  如果我们研究一下噪声对于深层神经网络表示的影响。如下图所示，其中PGD（Pixel Guided Denoiser）指的就是上述图像去噪方法，我们将对抗样本和去噪后的图像输入到网络中，计算网络每一层的特征的距离。可以发现如果只是普通的噪声，比如高斯噪声，这些噪声的影响会随着网络的加深而逐渐变小；但是对于对抗样本的噪声，这些噪声的影响会随着网络的加深而逐渐变大。这一趋势在图像经过基本的去噪后仍然存在。
  既然直接在输入图像上来消除噪声（PGD）并不能减少对抗样本中噪声带来的影响，那么我们直接将损失函数直接加在网络高层的特征层上（HGD）是不是可以抑制误差的放大。
  其中，根据损失函数的添加位置和类型，我们提出了三种HGD：FGD、LGD和CGD。其中FGD和LGD不需要样本的标签信息，只需要将原图和对抗图像同时输入网络后拿到对应层的特征就好，属于非监督学习；而CGD和普通的分类网络训练一样需要类别标签，让网络对于对抗样本也能分到原图的类别上，属于监督学习。
  从下图表可以看出，相比于PGD，使用了HGD后各层的误差都减少了很多。三种HGD均表现出了不俗的抗噪性能。
  另外，HGD具有可迁移性。将在一个网络上训练好的抗噪器借给另一个完全不同的网络用，也会起到不错的抗噪效果，但是值得注意的是将多个抗噪器放在一起组合使用不如单独使用效果好。
  使用了HGD策略，我们最终在NIPS攻防赛的防守项目中大比分领先其他队伍，斩获桂冠。
  最后总结一下HGD的好处和不足：
  好处： 可以获得更高的抗噪性能；需要更少的训练样本和训练时间；具有可迁移性。
  不足： 前提假设是对抗样本噪声是可检测到的；不能完全解决样本对抗问题；仍然容易遭受白盒攻击。
  论文及PPT下载链接：https://pan.baidu.com/s/1i5Qszx7，密码：2qc9
  原文链接：
  ------------------------------------------------
  知乎机构号：Momenta，打造自动驾驶大脑。
  基于深度学习的环境感知、高精度地图、驾驶决策技术，让无人驾驶成为可能。