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(\cdot)\) 神经网络, 且\(F(X)=\mathrm{softmax^*}(Z(X))\).
\(X \in \mathcal{X}\) 样本
\(Y\) 样本对应的标签
\(F^d\) distilled network
\(T\) temperature

注: 这里的\(\mathrm{softmax}^*(z)_i:=\frac{e^{z_i/T}}{\sum_j e^{e_j/T}}, i= 0,\ldots, N-1\);

注: \(F^d\)与\(F\)网络结构一样;

算法

Input: \(T\),训练数据\((X,Y)\).

  • 在训练数据\((X, Y)\)上训练得到\(F\);
  • 得到新的训练数据\((X, F(X))\);
  • 利用\((X, F(X))\)训练\(F^d\);
  • 修改\(F^d\)的最后一层\(T=1\).

Output: \(F^d\).

为什么这个算法是有效的呢?

  1. 训练\(F^d\)用的标签是概率向量\(F(X)\), 拿数字举例, 如果写的草一点\(7\)和\(1\)是很相近的, 但如果训练的标签是\((0,0,0,0,0,0,1,0,0,0)\)的话反而不符合实际, 会导致不稳定;
  2. 当\(T\)比较大的时候(训练):
\[\frac{\partial F_i(X)}{\partial X_j}|_T = \frac{1}{T}\frac{e^{z_i / T}}{g^2(X)}\big( \sum_{l=1^N}(\frac{\partial z_i}{\partial X_j}-\frac{\partial z_l}{\partial X_j})e^{z_l /T}\big),
\]

会比较小, 其中\(g(X)=\sum_{l=0}^{N-1} e^{z_l(X)/T}\).

3. 在测试的时候, 我们令\(T=1\), 假设\(X\)在原先情况下\(z_1/T\)最大, \(z_2/T\)次大, 则

\[\epsilon=z_2/T-z_1/T= 0 + \mathbf{Tr}(\mathcal{G}^T \delta X) + o(\delta x),
\]

\[T\epsilon=z_2-z_1= 0 + T \cdot \mathbf{Tr}(\mathcal{G}^T \delta X) + o(\delta x),
\]

其中\(\mathcal{G}\)为\(z_2-z_1\)在\(X\)处的负梯度.

一些有趣的指标

鲁棒性定义

\[\rho_{adv}(F)= E_{\mu}[\Delta_{adv}(X,F)],
\]

其中\(\mu\)为样本的分布

\[\Delta_{adv}(X,F) = \arg \min_{\delta X} \{ \| \delta X\| : F(X+\delta X) \not = F(X) \}.
\]

可采用下式来实际估计

\[\rho_{adv}(F) \approx \frac{1}{|\mathcal{X}|} \sum_{X \in \mathcal{X}} \min _{\delta X} \|\delta X\|.
\]

合格的抗干扰机制

  1. 对原有结构有较少的影响;
  2. 网络对干净数据因具有相当的正确率;
  3. 较好的训练速度;
  4. 对\(\| \delta 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)

最新文章

  1. c++多线程の死锁与防止死锁
  2. python 取两数的百分比
  3. Rest接口测试,巧用firebug插件
  4. Android View的加载过程
  5. 新浪微博数据抓取(java实现)
  6. VS2010 MSDN配置
  7. .Net 将一个DataTable分解成多个DataTable
  8. 【转】iOS开发--一步步教你彻底学会『iOS应用间相互跳转』
  9. cocos2dx对于强大的RichText控制
  10. cc2530 -----SampleApp.c解析
  11. CALayer --> UIView
  12. mysql记录执行的SQL语句
  13. Mybatis学习总结(七)——调用存储过程
  14. SoftWater——SDN+UnderWater系列论文一
  15. oracle密码过期的修改
  16. _ZNote_Qt_定时器的总结
  17. 20190313 org.apache.commons.lang3.builder.EqualsBuilder的两种典型用法
  18. 一个相对通用的JSON响应结构,其中包含两部分:元数据与返回值
  19. 网站钓鱼的方法 和 xss
  20. systemctl命令完全指南

热门文章

  1. A Child's History of England.35
  2. sql技巧(增册改查)
  3. Linux 易错小结
  4. intelliJ破解及JavaEE搭建
  5. Nginx LOCATOIN块配置
  6. MISC常见题型整理
  7. Go语言核心36讲(Go语言实战与应用二十六)--学习笔记
  8. GDAL重投影重采样像元配准对齐
  9. odoo14 继承改写原生模块的视图优先级问题
  10. LuoguP7189 [COCI2007-2008#6] PARKING 题解