概
本文提出一种distillation model, 能够免疫大部分的adversarial attacks, 具有良好的鲁棒性, 同时容易训练.
主要内容
在这里插入图片描述符号 | 说明 |
---|---|
神经网络, 且. | |
样本 | |
样本对应的标签 | |
distilled network | |
temperature |
注: 这里的;
注: 与网络结构一样;
算法
Input: ,训练数据.
- 在训练数据上训练得到;
- 得到新的训练数据;
- 利用训练;
- 修改的最后一层.
Output: .
为什么这个算法是有效的呢?
- 训练用的标签是概率向量, 拿数字举例, 如果写的草一点和是很相近的, 但如果训练的标签是的话反而不符合实际, 会导致不稳定;
- 当比较大的时候(训练):
会比较小, 其中. - 在测试的时候, 我们令, 假设在原先情况下最大, 次大, 则
则
其中为在处的负梯度.
一些有趣的指标
鲁棒性定义
其中为样本的分布
可采用下式来实际估计
合格的抗干扰机制
- 对原有结构有较少的影响;
- 网络对干净数据因具有相当的正确率;
- 较好的训练速度;
- 对较小的情况能够免疫干扰.
原文还有一个理论分析, 但我认为不重要, 略过.
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)
网友评论