# Distillation des connaissances

La distillation des connaissances ou distillation de modèles est, dans le domaine de l'apprentissage automatique, le processus de transfert des connaissances d'un grand modèle, dit « modèle enseignant », vers un modèle plus petit, dit « modèle étudiant », plus facile à manipuler et à évaluer.

## Enjeux

Les grands modèles (tels que les réseaux neuronaux très profonds ou les ensembles de nombreux modèles) ont une capacité de connaissance plus élevée que les petits modèles, mais elle ne peut être pleinement utilisée car énergivore en termes de calcul pour leur évaluation, même si le modèle n'utilise qu'une faible partie de sa capacité de connaissances. La distillation des connaissances transfère les connaissances d'un grand modèle vers un modèle plus petit sans perte de validité. Ces modèles plus petits étant bien moins coûteux à évaluer, ils peuvent être déployés sur du matériel moins puissant (comme un appareil mobile).
La distillation des connaissances a été utilisée avec succès dans plusieurs applications de l'apprentissage automatique telles que la détection d'objet, les modèles acoustiques et le traitement du langage naturel. Récemment, des réseaux neuronaux graphiques applicables aux données non-grilles ont également été introduits. Et la distillation semble pouvoir aussi contribuer à réduire l'hallucination dans les modèles d'intelligence artificielle.

## Concept

Le transfert des connaissances d'un grand modèle vers un petit modèle doit d'une manière ou d'une autre être enseigné à ce dernier sans perte de validité.
Théoriquement, si ces deux modèles sont formés sur les mêmes données, le petit modèle peut avoir une capacité insuffisante pour apprendre une représentation concise des connaissances étant donné les mêmes ressources de calcul et les mêmes données que le grand modèle. Mais certaines informations sur une représentation concise des connaissances sont codées dans les pseudo-vraisemblances attribuées à sa sortie : lorsqu'un modèle prédit correctement une classe, il attribue une grande valeur à la variable de sortie correspondant à cette classe, et des valeurs plus petites aux autres variables de sortie. La distribution des valeurs parmi les sorties d'un enregistrement fournit des informations sur la manière dont le grand modèle représente les connaissances. Par conséquent, l'objectif d'un déploiement économique d'un modèle valide peut être atteint en entraînant uniquement le grand modèle sur les données, en exploitant sa meilleure capacité à apprendre des représentations de connaissances concises, puis en distillant ces connaissances dans le plus petit modèle, qui ne serait pas capable de les apprendre par lui-même, en l'entraînant à apprendre la sortie logicielle du grand modèle.
Une méthodologie connexe était la compression ou l'élagage du modèle, où un réseau formé est réduit en taille, via deux techniques dites de Biased Weight Decay et Optimal Brain Damage.
L'idée d'utiliser la sortie d'un réseau neuronal pour former un autre réseau neuronal a été proposée et testée dans la configuration d'un réseau enseignant-élève. En 1992, plusieurs articles ont étudié la mécanique statistique de la configuration du réseau enseignant-élève, où les deux réseaux sont des machines de comité$^,$ ou les deux sont des machines de parité.
La distillation de réseau a aussi été testée en 1992, dans le domaine des réseaux neuronaux récurrents (RNN), en cherchant à prédire des séquences, un problème dans ce cas résolu par deux RNN. L'un d'eux (« atomiseur ») prédisait la séquence, et l'autre (chunker) prédisait les erreurs de l'atomiseur. Simultanément, l'atomiseur a prédit les états internes du chunker. Une fois que l'atomiseur parvient à bien prédire les états internes du chunker, il commence à corriger les erreurs, et bientôt le chunker devient obsolète, ne laissant qu'un seul RNN à la fin.
En 2006, une méthode connexe de compression des connaissances de plusieurs modèles en un seul réseau neuronal, dite « compression de modèle » a été obtenue en entraînant un modèle plus petit sur de grandes quantités de pseudo-données étiquetées par un ensemble plus performant, en optimisant pour faire correspondre le logit du modèle compressé au logit de l'ensemble.
La distillation des connaissances est une généralisation de cette approche, introduite par Geoffrey Hinton et ses collaborateurs en 2015 (dans une prépublication qui formulait le concept et montrait certains résultats obtenus dans la tâche de classification d'images).
La distillation des connaissances est également liée au concept de clonage comportemental discuté par Faraz Torabi et ses collaborateurs.

## Formulation

Étant donné un grand modèle en fonction de la variable vectorielle $\mathbf {x}$, formé pour une tâche de classification spécifique, généralement la couche finale du réseau est un softmax sous la forme
    $y_{i}(\mathbf {x} |t)={\frac {e^{\frac {z_{i}(\mathbf {x} )}{t}}}{\sum _{j}e^{\frac {z_{j}(\mathbf {x} )}{t}}}}$
… où $t$ est un paramètre appelé température, qui pour un softmax standard est normalement défini sur 1. L'opérateur softmax convertit les valeurs logit $z_{i}(\mathbf {x} )$ aux pseudo-probabilités, et des valeurs de température plus élevées ont pour effet de générer une distribution plus douce des pseudo-probabilités parmi les classes de sortie. La distillation des connaissances consiste à former un réseau plus petit, appelé modèle distillé, sur un ensemble de données appelé ensemble de transfert (différent de l'ensemble de données utilisé pour former le grand modèle) en utilisant l'entropie croisée comme fonction de perte entre la sortie du modèle distillé $\mathbf {y} (\mathbf {x} |t)$ et la sortie ${\hat {\mathbf {y} }}(\mathbf {x} |t)$ produit par le grand modèle sur le même enregistrement (ou la moyenne des sorties individuelles, si le grand modèle est un ensemble), en utilisant une valeur élevée de température softmax $t$ pour les deux modèles.
    $E(\mathbf {x} |t)=-\sum _{i}{\hat {y}}_{i}(\mathbf {x} |t)\log y_{i}(\mathbf {x} |t).$
Dans ce contexte, une température élevée augmente l'entropie de la sortie et fournit donc plus d'informations à apprendre pour le modèle distillé par rapport aux cibles dures, réduisant en même temps la variance du gradient entre différents enregistrements et permettant donc des taux d'apprentissage plus élevés.
Si la vérité fondamentale est disponible pour l'ensemble de transfert, le processus peut être renforcé en ajoutant à la perte l'entropie croisée entre la sortie du modèle distillé (calculé avec $t=1$ ) et l'étiquette connue ${\bar {y}}$
    $E(\mathbf {x} |t)=-t^{2}\sum _{i}{\hat {y}}_{i}(\mathbf {x} |t)\log y_{i}(\mathbf {x} |t)-\sum _{i}{\bar {y}}_{i}\log {\hat {y}}_{i}(\mathbf {x} |1)$
… où la composante de la perte par rapport au grand modèle est pondérée par un facteur de $t^{2}$ puisque, à mesure que la température augmente, le gradient de la perte par rapport aux poids du modèle varie d'un facteur de ${\frac {1}{t^{2}}}$.

## Relation avec la compression du modèle

En supposant que les logits ont une moyenne nulle, il est possible de montrer que la compression de modèle est un cas particulier de distillation des connaissances. Le gradient de la perte de distillation des connaissances $E$ par rapport au logit du modèle distillé $z_{i}$ est donné par
    ${\begin{aligned}{\frac {\partial }{\partial z_{i}}}E&=-{\frac {\partial }{\partial z_{i}}}\sum _{j}{\hat {y}}_{j}\log y_{j}\\&=-{\frac {\partial }{\partial z_{i}}}{\hat {y}}_{i}\log y_{i}+\left(-{\frac {\partial }{\partial z_{i}}}\sum _{k\neq i}{\hat {y}}_{k}\log y_{k}\right)\\&=-{\hat {y}}_{i}{\frac {1}{y_{i}}}{\frac {\partial }{\partial z_{i}}}y_{i}+\sum _{k\neq i}\left(-{\hat {y}}_{k}\cdot {\frac {1}{y_{k}}}\cdot e^{\frac {z_{k}}{t}}\cdot \left(-{\frac {1}{\left(\sum _{j}e^{\frac {z_{j}}{t}}\right)^{2}}}\right)\cdot e^{\frac {z_{i}}{t}}\cdot {\frac {1}{t}}\right)\\&=-{\hat {y}}_{i}{\frac {1}{y_{i}}}{\frac {\partial }{\partial z_{i}}}{\frac {e^{\frac {z_{i}}{t}}}{\sum _{j}e^{\frac {z_{j}}{t}}}}+\sum _{k\neq i}\left({\hat {y}}_{k}\cdot {\frac {1}{y_{k}}}\cdot y_{k}\cdot y_{i}\cdot {\frac {1}{t}}\right)\\&=-{\hat {y}}_{i}{\frac {1}{y_{i}}}\left({\frac {{\frac {1}{t}}e^{\frac {z_{i}}{t}}\sum _{j}e^{\frac {z_{j}}{t}}-{\frac {1}{t}}\left(e^{\frac {z_{i}}{t}}\right)^{2}}{\left(\sum _{j}e^{\frac {z_{j}}{t}}\right)^{2}}}\right)+{\frac {y_{i}\sum _{k\neq i}{\hat {y}}_{k}}{t}}\\&=-{\hat {y}}_{i}{\frac {1}{y_{i}}}\left({\frac {y_{i}}{t}}-{\frac {y_{i}^{2}}{t}}\right)+{\frac {y_{i}(1-{\hat {y}}_{i})}{t}}\\&={\frac {1}{t}}\left(y_{i}-{\hat {y}}_{i}\right)\\&={\frac {1}{t}}\left({\frac {e^{\frac {z_{i}}{t}}}{\sum _{j}e^{\frac {z_{j}}{t}}}}-{\frac {e^{\frac {{\hat {z}}_{i}}{t}}}{\sum _{j}e^{\frac {{\hat {z}}_{j}}{t}}}}\right)\\\end{aligned}}$
où ${\hat {z}}_{i}$ sont les logits du grand modèle. Pour les grandes valeurs de $t$ ceci peut être approximé comme
    ${\frac {1}{t}}\left({\frac {1+{\frac {z_{i}}{t}}}{N+\sum _{j}{\frac {z_{j}}{t}}}}-{\frac {1+{\frac {{\hat {z}}_{i}}{t}}}{N+\sum _{j}{\frac {{\hat {z}}_{j}}{t}}}}\right)$
et sous l'hypothèse de moyenne nulle $\sum _{j}z_{j}=\sum _{j}{\hat {z}}_{j}=0$ ça devient ${\frac {z_{i}-{\hat {z}}_{i}}{NT^{2}}}$, qui est la dérivée de ${\frac {1}{2}}\left(z_{i}-{\hat {z}}_{i}\right)^{2}$, c'est-à-dire que la perte équivaut à faire correspondre les logits des deux modèles, comme cela est fait dans la compression du modèle.