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
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é?
- 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é;
- Lorsque \ (T \) est relativement importante lorsque (formation):
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,
ensuite
Dans lequel \ (\ mathcal {G} \ ) de \ (Z_2-z_1 \) dans \ (X- \) gradient négatif à.
Quelques indicateurs intéressants
Robustesse est défini
Où \ (\ mu \) pour la distribution d'échantillons
Il peut être utilisé pour estimer réellement la formule
mécanisme d'immunité qualifiée
- Ont moins d'impact sur la structure d'origine;
- Propre réseau de données en raison d'une grande précision;
- Une meilleure vitesse de formation;
- 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)