En 2014, les réseaux de neurones de pointe présentaient une défaillance connue mais inexpliquée : modifier une image par une perturbation minuscule, délibérément choisie comme la pire possible — souvent trop petite pour être perçue par l'œil humain — et le réseau la classe de manière erronée avec une forte confiance. La même image modifiée tendait à tromper de nombreuses architectures différentes entraînées sur des données différentes, ce qui suggérait que le défaut résidait dans la recette d'entraînement elle-même plutôt que dans un réseau particulier.

Les premières explications incriminaient la prétendue non-linéarité extrême des réseaux profonds, ainsi que le surapprentissage, mais les correctifs standards tels que le dropout, le pré-entraînement et la moyenne de modèles n'éliminaient pas la vulnérabilité. Goodfellow, Shlens et Szegedy ont testé l'hypothèse inverse : les architectures qui s'entraînent bien (ReLU, maxout, LSTM) sont délibérément presque linéaires, et dans un espace d'entrée de haute dimension, la linéarité seule suffit. Avec des centaines de milliers de pixels, chacun décalé de moins d'un bit de précision d'image, les petits termes d'un produit scalaire s'additionnent pour produire un changement important de l'activation du réseau.

Cette vision a permis une attaque rapide : linéariser le coût autour de l'entrée et la perturber selon le signe du gradient, ce qui ne coûte qu'une seule passe de rétropropagation. Sur MNIST, la méthode a poussé un modèle softmax peu profond à 99,9 % d'erreur et un réseau maxout à 89,4 % de mauvaise classification, tous deux avec une forte confiance ; sur ImageNet, une perturbation de seulement 0,007 par pixel a transformé un panda en gibbon. La génération peu coûteuse a également modifié la défense : l'entraînement adversarial sur de tels exemples a apporté une régularisation au-delà du dropout seul et réduit l'erreur sur l'ensemble de test.

Le travail a aussi démystifié la défaillance pour les ingénieurs en exercice. Fin décembre 2015, Codewords du Recurse Center a publié le parcours illustré de Julia Evans reproduisant l'attaque sur GoogLeNet à partir d'un notebook dockerisé — une image noire est devenue une serviette en papier et un panda est devenu un vautour — et le fil Hacker News a recueilli 268 points et 66 commentaires, les lecteurs notant que l'article s'appliquait encore aux vagues ultérieures de réseaux de neurones.

Supposer la linéarité : perturber selon le signe du gradient, puis s'entraîner sur ces attaques

Les tentatives antérieures incriminaient la non-linéarité et le surapprentissage ; supposer l'inverse a rendu les exemples adversariaux prévisibles au lieu de mystérieux

Le mécanisme croît avec la dimension : des perturbations inférieures à la précision d'un capteur s'additionnent néanmoins sur des centaines de milliers de pixels pour produire un changement décisif de la sortie

Une seule passe de rétropropagation par attaque a rendu l'entraînement adversarial pratique, convertissant un mode de défaillance en un régularisateur qui surpassait le dropout seul

Cela expliquait le transfert : tout modèle qui se comporte linéairement en haute dimension partage l'angle mort, si bien qu'un seul exemple trompe de nombreuses architectures et ensembles d'entraînement

Lorsqu'un modèle échoue d'une manière qui semble mystérieuse, testez d'abord l'explication la moins coûteuse — si vous pouvez générer la défaillance à faible coût, vous pouvez aussi vous entraîner contre elle à faible coût.

La première version est parue sur arXiv le 20 décembre 2014 et a été révisée en mars 2015 ; son image de panda devenu gibbon à une perturbation de 0,007 est devenue l'illustration canonique d'un exemple adversarial. Un an plus tard, le parcours Codewords de Julia Evans permettait aux lecteurs de reproduire l'astuce sur un ordinateur portable sans GPU — un panda devenait un vautour, un écran noir une serviette en papier — et a recueilli 268 points et 66 commentaires sur Hacker News, où un lecteur jugeait l'article encore largement applicable aux vagues ultérieures de réseaux de neurones.

VÉRIFIEZ LES SOURCES

Les sources

  1. Explaining and Harnessing Adversarial Examples (arXiv:1412.6572) arXiv · arxiv.org ·
  2. How to trick a neural network into thinking a panda is a vulture Codewords (Recurse Center) · codewords.recurse.com
  3. How to trick a neural network into thinking a panda is a vulture — Hacker News discussion Hacker News · news.ycombinator.com ·