CS231n2017 Lecture16 对抗样本与对抗训练笔记
对抗性(Adversarial):
指深度学习模型,对输入数据中极其微小、人眼难以察觉的特定扰动高度敏感的特性,这种扰动被称为对抗性扰动
原理:
模型在高维数据空间中学习到的决策边界非常复杂且不robust,在远离决策边界的大部分区域,模型表现良好,但在靠近边界的一些“平坦”或“狭窄”的区域,一个微小的扰动(方向正确)就能把样本推到边界的另一边,导致模型作出完全错误的预测
对抗样本(Adversarial Examples):
是经过精心设计的输入样本,它在原始样本上添加了人无法观察的微小扰动,目的是故意欺骗深度学习模型,使之产生高置信度的错误输出
关键特征:
1.微小性:
扰动幅度很小,比如图像中每个像素值的变化小于
2.针对性:
扰动是特意计算出来的,不是随机噪声,其方向是利用模型梯度等信息,朝着最大化模型预测错误的方向修改(如对错误的标签使用Gradient Ascent)
3.高欺骗性:
对抗样本能导致模型以极高的置信度输出完全错误的类别
生成方法:
快速梯度符号法:
利用模型loss相对于输入数据的梯度来确定扰动方向
投影梯度下降:
迭代地在梯度方向上添加扰动,并将结果投影到允许的扰动范围内
基于优化的方法:
直接优化扰动,最小化扰动幅度的同时最大化模型的预测错误
对抗训练(Adversarial Training):
是一种提高模型鲁棒性(robust),抵抗对抗样本攻击的能力的主要技术,核心思想是在训练过程中主动将对抗样本纳入训练集
原理:
1.动态生成对抗样本:
在训练的每个Batch(或每隔几步),使用当前模型为训练数据生成对抗样本
2.混合训练:
将这些生成的对抗样本加入到训练数据中
3.最小化对抗风险:
模型被要求在对抗样本上也要作出正确预测,其loss通常包含两部分:原始样本上的loss和对抗样本上的loss