Nicolas Papernot, Patrick McDaniel, Xi Wu, Somesh Jha, Ananthram Swami, Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks.
概
本文提出一种distillation model, 能够免疫大部分的adversarial attacks, 具有良好的鲁棒性, 同时容易训练.
主要内容
符号 |
说明 |
F(⋅) |
神经网络, 且F(X)=softmax∗(Z(X)). |
X∈X |
样本 |
Y |
样本对应的标签 |
Fd |
distilled network |
T |
temperature |
注: 这里的softmax∗(z)i:=∑jeej/Tezi/T,i=0,…,N−1;
注: Fd与F网络结构一样;
算法
Input: T,训练数据(X,Y).
- 在训练数据(X,Y)上训练得到F;
- 得到新的训练数据(X,F(X));
- 利用(X,F(X))训练Fd;
- 修改Fd的最后一层T=1.
Output: Fd.
为什么这个算法是有效的呢?
- 训练Fd用的标签是概率向量F(X), 拿数字举例, 如果写的草一点7和1是很相近的, 但如果训练的标签是(0,0,0,0,0,0,1,0,0,0)的话反而不符合实际, 会导致不稳定;
- 当T比较大的时候(训练):
∂Xj∂Fi(X)∣T=T1g2(X)ezi/T(l=1N∑(∂Xj∂zi−∂Xj∂zl)ezl/T),
会比较小, 其中g(X)=∑l=0N−1ezl(X)/T.
- 在测试的时候, 我们令T=1, 假设X在原先情况下z1/T最大, z2/T次大, 则
ϵ=z2/T−z1/T=0+Tr(GTδX)+o(δx),
则
Tϵ=z2−z1=0+T⋅Tr(GTδX)+o(δx),
其中G为z2−z1在X处的负梯度.
一些有趣的指标
鲁棒性定义
ρadv(F)=Eμ[Δadv(X,F)],
其中μ为样本的分布
Δadv(X,F)=argδXmin{∥δX∥:F(X+δX)=F(X)}.
可采用下式来实际估计
ρadv(F)≈∣X∣1X∈X∑δXmin∥δX∥.
合格的抗干扰机制
- 对原有结构有较少的影响;
- 网络对干净数据因具有相当的正确率;
- 较好的训练速度;
- 对∥δX∥较小的情况能够免疫干扰.
原文还有一个理论分析, 但我认为不重要, 略过.
代码
import torch.nn as nn
class Tsoftmax(nn.Module):
def __init__(self, T=100):
super(Tsoftmax, self).__init__()
self.T = T
def forward(self, x):
if self.train():
return nn.functional.softmax(x / self.T)
else:
return nn.functional.softmax(x)