Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

文章目录

    • 主要内容
      • 算法
      • 一些有趣的指标
        • 鲁棒性定义
        • 合格的抗干扰机制
    • 代码

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, 具有良好的鲁棒性, 同时容易训练.

主要内容

Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks_第1张图片

符号 说明
F ( ⋅ ) F(\cdot) F() 神经网络, 且 F ( X ) = s o f t m a x ∗ ( Z ( X ) ) F(X)=\mathrm{softmax^*}(Z(X)) F(X)=softmax(Z(X)).
X ∈ X X \in \mathcal{X} XX 样本
Y Y Y 样本对应的标签
F d F^d Fd distilled network
T T T temperature

注: 这里的 s o f t m a x ∗ ( z ) i : = e z i / T ∑ j e e j / T , i = 0 , … , N − 1 \mathrm{softmax}^*(z)_i:=\frac{e^{z_i/T}}{\sum_j e^{e_j/T}}, i= 0,\ldots, N-1 softmax(z)i:=jeej/Tezi/T,i=0,,N1;
注: F d F^d Fd F F F网络结构一样;

算法

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

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

Output: F d F^d Fd.

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

  1. 训练 F d F^d Fd用的标签是概率向量 F ( X ) F(X) F(X), 拿数字举例, 如果写的草一点 7 7 7 1 1 1是很相近的, 但如果训练的标签是 ( 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ) (0,0,0,0,0,0,1,0,0,0) (0,0,0,0,0,0,1,0,0,0)的话反而不符合实际, 会导致不稳定;
  2. T T T比较大的时候(训练):
    ∂ F i ( X ) ∂ X j ∣ T = 1 T e z i / T g 2 ( X ) ( ∑ l = 1 N ( ∂ z i ∂ X j − ∂ z l ∂ X j ) e z l / 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), XjFi(X)T=T1g2(X)ezi/T(l=1N(XjziXjzl)ezl/T),
    会比较小, 其中 g ( X ) = ∑ l = 0 N − 1 e z l ( X ) / T g(X)=\sum_{l=0}^{N-1} e^{z_l(X)/T} g(X)=l=0N1ezl(X)/T.
  3. 在测试的时候, 我们令 T = 1 T=1 T=1, 假设 X X X在原先情况下 z 1 / T z_1/T z1/T最大, z 2 / T z_2/T z2/T次大, 则
    ϵ = z 2 / T − z 1 / T = 0 + T r ( G T δ X ) + o ( δ x ) , \epsilon=z_2/T-z_1/T= 0 + \mathbf{Tr}(\mathcal{G}^T \delta X) + o(\delta x), ϵ=z2/Tz1/T=0+Tr(GTδX)+o(δx),

    T ϵ = z 2 − z 1 = 0 + T ⋅ T r ( G T δ X ) + o ( δ x ) , T\epsilon=z_2-z_1= 0 + T \cdot \mathbf{Tr}(\mathcal{G}^T \delta X) + o(\delta x), Tϵ=z2z1=0+TTr(GTδX)+o(δx),
    其中 G \mathcal{G} G z 2 − z 1 z_2-z_1 z2z1 X X X处的负梯度.

一些有趣的指标

鲁棒性定义

ρ a d v ( F ) = E μ [ Δ a d v ( X , F ) ] , \rho_{adv}(F)= E_{\mu}[\Delta_{adv}(X,F)], ρadv(F)=Eμ[Δadv(X,F)],
其中 μ \mu μ为样本的分布
Δ a d v ( X , F ) = arg ⁡ min ⁡ δ X { ∥ δ X ∥ : F ( X + δ X ) ≠ F ( X ) } . \Delta_{adv}(X,F) = \arg \min_{\delta X} \{ \| \delta X\| : F(X+\delta X) \not = F(X) \}. Δadv(X,F)=argδXmin{δX:F(X+δX)=F(X)}.
可采用下式来实际估计
ρ a d v ( F ) ≈ 1 ∣ X ∣ ∑ X ∈ X min ⁡ δ X ∥ δ X ∥ . \rho_{adv}(F) \approx \frac{1}{|\mathcal{X}|} \sum_{X \in \mathcal{X}} \min _{\delta X} \|\delta X\|. ρadv(F)X1XXδXminδX.

合格的抗干扰机制

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

你可能感兴趣的:(neural,networks)