之前有人提出蒸馏网络,说是可以为目标网络模型提供很强的鲁棒性,能够把已出现的攻击的成功率从95%锐减到0.5%。作者提出了新的攻击方法,成功攻击了蒸馏网络。(c&w)
文章简介:
- 证明defensive distillation不能显著地提高模型的鲁棒性
- 介绍了3种新的攻击算法,可以在distilled和undistilled神经网络达到100%的攻击成功率
- 本文的攻击相比于以前的攻击通常会更有效
- 本文的对抗性例子可以从不安全的网络模型迁移到distilled(安全)的网络模型去
- 数据集:MNIST、CIFAR-10、ImageNet
- 本文主要研究Targeted Attacks
- 由于defensive distillation并不能真正地避免对抗样本的出现,作者认为原因可能是对抗样本的存在原因在于神经网络局部线性的性质
蒸馏网络
本质是一种模型压缩
我们可以有一个复杂而强大的Teacher Model(简称Net-T),以及另一个简单而弱小的Student Model(简称Net-S),由Net-T完整地学习,然后再由Net-S同时学习Net-T的soft-target(软标签”指的是大网络在每一层卷积后输出的feature map)和hard-target,最终Net-S作为应用模型,而Net-T并不进行部署上线
所以呢~知识蒸馏是一种"伪"压缩,或者广义的压缩方法
为什么要学习soft-target?
比如说:我们有一个手写字体识别分类任务,0~9的数字中,7和1写起来很像,但是7和5就很不像,hard-target只告诉了我们,这个图片是7,但是logit还告诉了我们:这个图片大概率是7,小概率是1,几乎不太像其他数字。这其中携带了的信息量,也就是我们后面希望Net-S蒸馏学到的知识!!!ヾ(๑╹◡╹)ノ"
这个softmax-T是啥?
上公式~我们都知道softmax是啥,这个softmax-T的T意思是Temperature,就是一个在softmax操作前需要统一除以的小参数,这个小参数有这样的属性:
-
如果将T取1,这个公式就是softmax,根据logit输出各个类别的概率;
-
如果T接近于0,则最大的值会越近1,其它值会接近0,近似于onehot编码
-
如果T越大,则输出的结果的分布越平缓,相当于平滑的一个作用,起到保留相似信息的作用
那没事加这个参数做什么呢?原因是这样的:
如果我们使用原始的softmax,我们都明白它的属性,它会使得那个最大值的类别,在经过自然指数操作后,在概率上显得"更大"。举例来说,如果0-9的手写字体识别中,7-1-5这三个数值的预测,在softmax转化前,是[7,2,1],在经过了softmax转化后,基本也就变成和[1,0,0]无差异的一个结果了,这并不是我们想要学习logit的初衷啊(๑ó﹏ò๑)…
步骤
-
根据(N1,N2,…,Nt)设计一个简单网络N0。
-
收集简单模型训练数据,此处的训练数据可以是训练原始网络的有标签数据,也可以是额外的无标签数据。
-
将2中收集到的样本输入原始模型(M1,M2,…,Mt),修改原始模型softmax层中温度参数T为一个较大值如T=20。每一个样本在每个原始模型可以得到其最终的分类概率向量,选取其中概率至最大即为该模型对于当前样本的判定结果。对于t个原始模型就可以t概率向量。然后对t概率向量求取均值作为当前样本最后的概率输出向量,记为soft_target,保存。
-
标签融合2中收集到的数据定义为hard_target,有标签数据的hard_target取值为其标签值1,无标签数据hard_taret取值为0。Target =ahard_target + bsoft_target(a+b=1)。Target最终作为训练数据的标签去训练精简模型。参数a,b是用于控制标签融合权重的,推荐经验值为(a=0.1 b=0.9)
-
设置精简模型softmax层温度参数与原始复杂模型产生Soft-target时所采用的温度,按照常规模型训练精简网络模型。
-
部署时将精简模型中的softmax温度参数重置为1,即采用最原始的softmax