Distillation comme Défense accusatoires contre les réseaux profonds Perturbations Neural

Nicolas Papernot, Patrick McDaniel, Xi Wu, Somesh Jha, Ananthram Swami, Distillation comme Défense accusatoires contre Perturbations profondes Neural Networks.

général

Cet article présente un modèle de distillation, à l'abri de la plupart des attaques adverses, a une bonne robustesse, et facile à former.

contenu principal

Insérer ici l'image Description

symbole explication
\ (F (\ cdot) \) Le réseau de neurones, et \ (F (X) = \ mathrm {*} ^ SoftMax (Z (X)) \) .
\ (X \ in \ mathcal {X} \) échantillon
\ (Y \) Correspondant à l'étiquette échantillon
\ (F ^ d \) réseau distillé
\ (T \) Température

Note: Ici \ (\ mathrm {} softmax ^ * (z) _i: = \ frac {e ^ {Z_I / T}} {\ sum_j e ^ {e_j / T}}, i = 0, \ ldots, N -1 \) ;
NOTE: \ (D ^ F \) et \ (F. \) que la structure de réseau;

algorithme

La INPUT: \ (T \) , les données d'apprentissage \ ((le X-, Y- la) \) .

  • La formation de données \ ((X, Y) \ ) sur le formés \ (F. \) ;
  • Obtenez de nouvelles données de formation \ ((le X-, F (le X-)) \) ;
  • Utilisation \ ((X, F (X )) \) Formation \ (^ D F. \) ;
  • Modifier \ (F ^ d \) de la couche finale \ (T = 1. \) .

Sortie: \ (F ^ d \) .

Pourquoi cet algorithme est l'efficacité?

  1. Formation \ (F ^ d \) avec l'étiquette est le vecteur de probabilité \ (F (le X-) \) , prenez numérique Par exemple, si vous écrivez l'herbe un peu \ (7 \) et \ (1 \) est très similaire, mais si tag formation est \ ((0,0,0,0,0,0,1,0,0,0) \) alors , mais pas réaliste, cela conduira à l' instabilité;
  2. Lorsque \ (T \) est relativement importante lorsque (formation):

\ [\ Frac {\ partial f_i (X)} {\ x_j partielle} | _T = \ frac {1} {T} \ frac {e ^ {Z_I / T}} {g ^ 2 (X)} \ big ( \ sum_ {l = 1 ^ N} (\ frac {\ Z_I partielle} {\ x_j partielle} - \ frac {\ z_l partielle} {\ x_j partielle}) e ^ {z_l / T} \ big), \]

Sera relativement faible, où \ (G (X) = \ sum_ {L} = 0. 1} ^ {N-E ^ {z_l (X-) / T} \) .
3. Lors de l'essai, nous allons \ (T 1 = \) , en supposant \ (X- \) dans le cas où l'original \ (z_1 / T \) maximale, \ (Z_2 / T \) fois grand,

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

ensuite

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

Dans lequel \ (\ mathcal {G} \ ) de \ (Z_2-z_1 \) dans \ (X- \) gradient négatif à.

Quelques indicateurs intéressants

Robustesse est défini

\ [\ Rho_ {adv} (F) = E _ {\ mu} [\ Delta_ {adv} (X, F)], \]

\ (\ mu \) pour la distribution d'échantillons

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

Il peut être utilisé pour estimer réellement la formule

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

mécanisme d'immunité qualifiée

  1. Ont moins d'impact sur la structure d'origine;
  2. Propre réseau de données en raison d'une grande précision;
  3. Une meilleure vitesse de formation;
  4. Pour \ (\ | \ delta X \ | \) moins à l' abri de la situation d'interférence.

Il y a aussi une analyse théorique de l'original, mais je pense qu'il est pas important, sauter.

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)

Je suppose que tu aimes

Origine www.cnblogs.com/MTandHJ/p/12660961.html
conseillé
Classement