Adversarial Attacks
Les attaques adversariales créent de petites modifications, souvent invisibles, des entrées qui font échouer les modèles d’IA avec une forte confiance. Fonctionnement de FGSM, types d’attaques et défenses.
Les attaques adverses sont des manipulations délibérées de l’entrée d’un modèle d’apprentissage automatique (ML) qui le font produire une sortie erronée, généralement avec une confiance élevée. En vision par ordinateur, l’entrée manipulée, appelée exemple adverse, peut différer de l’original par des changements trop subtils pour être remarqués par une personne ; pourtant, un classificateur qui reconnaissait un panda annonce maintenant un gibbon. Des chercheurs ont décrit ce phénomène dans les réseaux neuronaux profonds dans l’article de 2013 « Intriguing Properties of Neural Networks », et la même vulnérabilité existe en reconnaissance vocale, en détection de logiciels malveillants et dans les grands modèles de langage (LLMs). Les attaques adverses sont particulièrement préoccupantes lorsqu’une décision du modèle déclenche une action, comme freiner une voiture, déverrouiller une porte ou approuver une transaction.
Fonctionnement des exemples adverses#
La fonction de perte d’un modèle entraîné mesure son degré d’erreur sur une entrée. La rétropropagation calcule normalement les gradients de cette perte par rapport aux poids ; un attaquant les calcule plutôt par rapport aux pixels d’entrée, puis modifie les pixels dans la direction qui augmente la perte. Dans « Explaining and Harnessing Adversarial Examples » (2014), Ian Goodfellow et ses collègues ont avancé que le phénomène s’explique par le comportement largement linéaire des réseaux neuronaux en grande dimension : un changement d’une fraction de niveau de gris par pixel, cumulé sur des centaines de milliers de pixels, entraîne une forte variation de la sortie. La méthode Fast Gradient Sign Method (FGSM) effectue une seule étape de taille fixe selon le signe du gradient de l’entrée, et une étape de 0.007 a transformé une prédiction « panda » de 57.7 % en une prédiction « gibbon » de 99.3 %. La descente de gradient projetée (PGD) répète des étapes plus petites tout en maintenant la variation totale sous une limite définie, ce qui en fait une attaque plus puissante.
Une attaque FGSM contre un classificateur ResNet-18 de TorchVision ne nécessite qu’une seule propagation arrière :
import torch
import torch.nn.functional as F
from torchvision.io import decode_image
from torchvision.models import ResNet18_Weights, resnet18
from torchvision.transforms import v2
weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights).eval()
torch.hub.download_url_to_file("https://ultralytics.com/images/bus.jpg", "bus.jpg")
# Keep pixels in [0, 1] and normalize inside each forward pass, so the attack edits real pixel values
image = v2.Compose([v2.Resize(256), v2.CenterCrop(224), v2.ToDtype(torch.float32, scale=True)])(decode_image("bus.jpg"))
normalize = v2.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
x = image.unsqueeze(0).requires_grad_(True)
logits = model(normalize(x))
# FGSM: move every pixel by one intensity level (1/255) in the direction that increases the loss
F.cross_entropy(logits, logits.argmax(1)).backward()
x_adv = (x + x.grad.sign() / 255).clamp(0, 1)
for name, batch in [("clean", x), ("adversarial", x_adv)]:
probs = model(normalize(batch)).softmax(1)
print(f"{name}: {weights.meta['categories'][probs.argmax()]} ({probs.max():.2f})")L’image non altérée est classée comme minibus (0.83) et l’image attaquée comme police van (0.94) : modifier chaque pixel d’au plus un niveau d’intensité sur 255 rend le modèle plus sûr d’une nouvelle étiquette erronée qu’il ne l’était de son étiquette initiale.
Types d’attaques#
Les attaques sont classées selon le moment où l’attaquant intervient, ce qu’il sait du modèle et son objectif. Une attaque non ciblée cherche à obtenir n’importe quelle sortie erronée, tandis qu’une attaque ciblée force une sortie précise, par exemple en faisant passer un panneau stop pour un panneau de limitation de vitesse. Les attaques numériques modifient directement les données d’entrée, tandis que les attaques physiques altèrent des objets réels à l’aide d’autocollants, de patchs ou de motifs imprimés qui résistent aux changements d’angle de vue, de distance et d’éclairage. La taxonomie de l’apprentissage automatique adversaire du NIST classe les attaques selon l’étape du cycle de vie du ML qu’elles ciblent :
Les attaques par transfert fonctionnent parce que les exemples adversariaux conçus pour tromper un modèle en trompent souvent d'autres entraînés pour la même tâche. Un attaquant peut donc entraîner un modèle de substitution, l'attaquer en boîte blanche, puis utiliser le résultat contre un système qu'il ne peut pas inspecter.
Risques réels#
- Véhicules autonomes : Dans « Robust Physical-World Attacks on Deep Learning Models », des autocollants noirs et blancs placés sur un vrai panneau stop ont provoqué une mauvaise classification ciblée dans 100 % des images de laboratoire et dans 84,8 % des images vidéo capturées depuis une voiture en mouvement.
- Détection de personnes : Un patch imprimé d'environ 40 cm de côté, tenu devant le corps, a considérablement réduit la précision du détecteur de personnes YOLOv2 contre lequel il avait été optimisé. De tels patchs menacent les alarmes qui se déclenchent lorsqu'elles détectent des personnes, comme le système d'alarme de sécurité Ultralytics, qui envoie une alerte par e-mail lorsque YOLO26 détecte un nombre donné d'objets dans une image ; un patch qui supprime la détection de personnes supprime aussi l'alerte.
- Reconnaissance faciale : Des chercheurs ont imprimé des montures de lunettes ornées de motifs adversariaux qui permettaient aux personnes qui les portaient d'échapper à un système de reconnaissance faciale ou d'être identifiées comme une autre personne précise.
- Modèles de langage : Des suffixes adversariaux optimisés automatiquement — des suites de jetons ajoutées à une requête — ont amené des chatbots alignés à répondre à des demandes malveillantes, et les suffixes optimisés sur des modèles ouverts ont également fonctionné sur des modèles commerciaux. Les attaques contre les LLM rédigées à la main sont mieux connues sous les noms de jailbreaking et d'injection de prompt.
Attaques adversariales et notions connexes#
- Empoisonnement des données : Corrompt les données d'entraînement afin que le modèle entraîné se comporte mal, souvent uniquement avec les entrées contenant un déclencheur caché. Au sens strict, les exemples adversariaux ne modifient pas le modèle et manipulent les entrées au moment de l'inférence.
- Attaques par inférence d'appartenance : Visent à extraire une information — notamment à savoir si un enregistrement figurait dans le jeu d'entraînement — plutôt qu'à provoquer une sortie erronée.
- Réseaux antagonistes génératifs (GANs) : Le terme « adversarial » désigne ici deux réseaux entraînés l'un contre l'autre, une méthode d'entraînement qui ne fait intervenir aucun attaquant.
- Équipe rouge IA : Pratique consistant à attaquer son propre système avant sa mise en production, qui fait notamment appel aux attaques adversariales.
Défenses#
L'entraînement adversarial, formalisé avec PGD dans « Towards Deep Learning Models Resistant to Adversarial Attacks », génère des attaques pendant l'entraînement et ajuste le modèle pour qu'il les classe correctement ; il reste la défense empirique la plus fiable, mais nécessite plusieurs fois plus de calcul qu'un entraînement classique et réduit la précision sur les entrées non altérées. Les défenses certifiées, comme le lissage aléatoire, prouvent qu'aucune perturbation située dans un rayon donné ne peut modifier une prédiction, mais uniquement pour de petits rayons. Les défenses qui prétraitent les entrées ou masquent les gradients ont un bilan médiocre : « Obfuscated Gradients Give a False Sense of Security » a examiné neuf défenses publiées à ICLR 2018, a constaté que sept reposaient sur des gradients masqués, et en a entièrement contourné six et partiellement une septième.










