Apprentissage automatique contradictoire : comment attaquer et défendre les modèles de ML
Publié: 2022-03-11De nos jours, les modèles d'apprentissage automatique en vision par ordinateur sont utilisés dans de nombreuses applications du monde réel, comme les voitures autonomes, la reconnaissance faciale, le diagnostic du cancer, ou même dans les magasins de nouvelle génération afin de suivre les produits que les clients retirent du rayon afin que leur crédit la carte peut être débitée en partant.
La précision croissante de ces systèmes d'apprentissage automatique est assez impressionnante, elle a donc naturellement conduit à un véritable flot d'applications les utilisant. Bien que les fondements mathématiques sous-jacents aient déjà été étudiés il y a quelques décennies, l'avènement relativement récent de puissants GPU a donné aux chercheurs la puissance de calcul nécessaire pour expérimenter et construire des systèmes complexes d'apprentissage automatique. Aujourd'hui, les modèles de pointe pour la vision par ordinateur sont basés sur des réseaux de neurones profonds avec jusqu'à plusieurs millions de paramètres, et ils s'appuient sur du matériel qui n'était pas disponible il y a à peine dix ans.
En 2012, Alex Krizhevsky et altri sont devenus les premiers à montrer comment implémenter un réseau convolutif profond, qui est devenu à l'époque le modèle de pointe en matière de classification d'objets. Depuis lors, de nombreuses améliorations de leur modèle d'origine ont été publiées, chacune d'elles apportant une amélioration de la précision (VGG, ResNet, Inception, etc.). Dernièrement, les modèles d'apprentissage automatique ont réussi à atteindre une précision humaine et même supérieure à l'humain dans de nombreuses tâches de vision par ordinateur.
Il y a quelques années, obtenir de mauvaises prédictions à partir d'un modèle d'apprentissage automatique était la norme. De nos jours, cela est devenu l'exception et nous nous attendons à ce qu'ils fonctionnent parfaitement, en particulier lorsqu'ils sont déployés dans des applications du monde réel.
Jusqu'à récemment, les modèles d'apprentissage automatique étaient généralement formés et testés dans un environnement de laboratoire , tel que des compétitions d'apprentissage automatique et des articles universitaires. De nos jours, à mesure qu'ils sont déployés dans des scénarios réels, les vulnérabilités de sécurité provenant d'erreurs de modèle sont devenues une réelle préoccupation.
L'idée de cet article est d'expliquer et de démontrer comment les réseaux de neurones profonds de pointe utilisés dans la reconnaissance d'images peuvent être facilement trompés par un acteur malveillant et donc amenés à produire de fausses prédictions. Une fois familiarisés avec les stratégies d'attaque habituelles, nous verrons comment défendre nos modèles contre elles.
Exemples d'apprentissage automatique contradictoires
Commençons par une question de base : que sont les exemples de machine learning contradictoires ?
Les exemples contradictoires sont des entrées malveillantes conçues à dessein pour tromper un modèle d'apprentissage automatique.
Dans cet article, nous allons limiter notre attention aux modèles d'apprentissage automatique qui effectuent la classification des images. Par conséquent, les exemples contradictoires seront des images d'entrée créées par un attaquant que le modèle n'est pas en mesure de classer correctement.
À titre d'exemple, prenons un GoogLeNet formé sur ImageNet pour effectuer la classification des images en tant que modèle d'apprentissage automatique. Ci-dessous, vous avez deux images d'un panda qui sont indiscernables à l'œil humain. L'image de gauche est l'une des images propres du jeu de données ImageNet, utilisée pour former le modèle GoogLeNet. Celui de droite est une légère modification du premier, créé en ajoutant le vecteur de bruit dans l'image centrale. La première image est prédite par le modèle comme étant un panda, comme prévu. Le second, à la place, est prédit (avec une très grande confiance) comme étant un gibbon.
Le bruit ajouté à la première image n'est pas aléatoire mais le résultat d'une optimisation minutieuse par l'attaquant.
Comme deuxième exemple, nous pouvons voir comment synthétiser des exemples contradictoires 3D à l'aide d'une imprimante 3D. L'image ci-dessous montre différentes vues d'une tortue 3D imprimées par les auteurs et les erreurs de classification par le modèle Google Inception v3.
Comment des modèles de pointe, qui ont une précision de classification supérieure à l'humain, peuvent-ils faire des erreurs apparemment stupides ?
Avant de nous plonger dans les faiblesses que les modèles de réseaux neuronaux ont tendance à avoir, rappelons-nous que nous, les humains, avons notre propre ensemble d'exemples contradictoires. Regardez l'image ci-dessous. Que vois-tu? Une spirale ou une série de cercles concentriques ?
Ce que ces différents exemples révèlent également, c'est que les modèles d'apprentissage automatique et la vision humaine doivent utiliser des représentations internes assez différentes pour comprendre ce qu'il y a dans une image.
Dans la section suivante, nous allons explorer des stratégies pour générer des exemples contradictoires.
Comment générer des exemples contradictoires
Commençons par une question simple : qu'est-ce qu'un exemple contradictoire ?
Des exemples contradictoires sont générés en prenant une image propre que le modèle classe correctement et en trouvant une petite perturbation qui entraîne une mauvaise classification de la nouvelle image par le modèle ML.
Supposons qu'un attaquant dispose d'informations complètes sur le modèle qu'il souhaite attaquer. Cela signifie essentiellement que l'attaquant peut calculer la fonction de perte du modèle $J(\theta, X, y)$ où $X$ est l'image d'entrée, $y$ est la classe de sortie et $\theta$ est la classe interne. paramètres du modèle. Cette fonction de perte est généralement la probabilité de perte négative pour les méthodes de classification.
Dans ce scénario de boîte blanche, il existe plusieurs stratégies d'attaque, chacune représentant différents compromis entre le coût de calcul pour les produire et leur taux de réussite. Toutes ces méthodes essaient essentiellement de maximiser le changement dans la fonction de perte du modèle tout en gardant la perturbation de l'image d'entrée faible. Plus la dimension de l'espace d'image d'entrée est élevée, plus il est facile de générer des exemples contradictoires qui ne se distinguent pas des images nettes par l'œil humain.
Méthode L-BFGS
Nous avons trouvé le ${x}'$ de l'exemple contradictoire en résolvant le problème d'optimisation suivant :
où $c > 0$ est un paramètre qui doit également être résolu. Intuitivement, on recherche des images contradictoires ${x}'$ telles que la somme pondérée de la distorsion par rapport à l'image propre ( $\left | x - {x}' \right |$ ) et de la perte par rapport à mauvaise classe est le minimum possible.
Pour les modèles complexes comme les réseaux de neurones profonds, le problème d'optimisation n'a pas de solution de forme fermée et des méthodes numériques itératives doivent donc être utilisées. De ce fait, cette méthode L-BFGS est lente. Cependant, son taux de réussite est élevé.
Signe de gradient rapide (FGS)
Avec la méthode du signe de gradient rapide (FGS), nous faisons une approximation linéaire de la fonction de perte autour du point initial, donnée par le vecteur image propre $X$ et la vraie classe $y$ .
Sous cette hypothèse, le gradient de la fonction de perte indique la direction dans laquelle nous devons changer le vecteur d'entrée pour produire un changement maximal de la perte. Afin de garder la taille de la perturbation petite, nous extrayons uniquement le signe du gradient, pas sa norme réelle, et le mettons à l'échelle par un petit facteur epsilon.
De cette façon, nous nous assurons que la différence pixel par pixel entre l'image initiale et l'image modifiée est toujours inférieure à epsilon (cette différence est la norme L_infinity).
Le gradient peut être calculé efficacement en utilisant la rétropropagation. Cette méthode est l'une des plus rapides et des moins coûteuses à mettre en œuvre. Cependant, son taux de réussite est inférieur à celui des méthodes plus coûteuses telles que L-BFGS.
Les auteurs de Adversarial Machine Learning at Scale ont déclaré qu'il avait entre 63% et 69% de taux de réussite sur la prédiction top-1 pour l'ensemble de données ImageNet, avec epsilon entre 2 et 32. Pour les modèles linéaires, comme la régression logistique, la méthode du signe de gradient rapide est exacte. Dans ce cas, les auteurs d'un autre article de recherche sur des exemples contradictoires rapportent un taux de réussite de 99 %.

Signe de dégradé rapide itératif
Une extension évidente de la méthode précédente consiste à l'appliquer plusieurs fois avec une taille de pas alpha plus petite et à couper la longueur totale du pas pour s'assurer que la distorsion entre les images propres et contradictoires est inférieure à epsilon.
D'autres techniques, comme celles proposées dans l'article de Nicholas Carlini, sont des améliorations par rapport au L-BFGS. Ils sont également coûteux à calculer, mais ont un taux de réussite élevé.
Cependant, dans la plupart des situations réelles, l'attaquant ne connaît pas la fonction de perte du modèle ciblé. Dans ce cas, l'attaquant doit employer une stratégie de boîte noire.
Attaque de la boîte noire
Les chercheurs ont observé à plusieurs reprises que les exemples contradictoires se transféraient assez bien entre les modèles, ce qui signifie qu'ils peuvent être conçus pour un modèle cible A, mais finissent par être efficaces contre tout autre modèle formé sur un ensemble de données similaire.
Il s'agit de la propriété dite de transférabilité des exemples contradictoires, que les attaquants peuvent utiliser à leur avantage lorsqu'ils n'ont pas accès à des informations complètes sur le modèle. L'attaquant peut générer des exemples contradictoires en suivant ces étapes :
- Interrogez le modèle ciblé avec les entrées $X_i$ pour $i=1…n$ et stockez les sorties $y_i$ .
- Avec les données d'apprentissage $(X_i, y_i)$ , construisez un autre modèle, appelé modèle de substitution.
- Utilisez l'un des algorithmes de boîte blanche présentés ci-dessus pour générer des exemples contradictoires pour le modèle de substitution. Beaucoup d'entre eux vont être transférés avec succès et devenir également des exemples contradictoires pour le modèle cible.
Une application réussie de cette stratégie par rapport à un modèle commercial d'apprentissage automatique est présentée dans cet article de la Computer Vision Foundation.
Défenses contre les exemples contradictoires
L'attaquant élabore l'attaque en exploitant toutes les informations dont il dispose sur le modèle. De toute évidence, moins le modèle produit d'informations au moment de la prédiction, plus il est difficile pour un attaquant de concevoir une attaque réussie.
Une première mesure simple pour protéger votre modèle de classification dans un environnement de production consiste à éviter d'afficher des scores de confiance pour chaque classe prédite. Au lieu de cela, le modèle ne devrait fournir que les meilleures classes $N$ (par exemple, 5) les plus probables. Lorsque des scores de confiance sont fournis à l'utilisateur final, un attaquant malveillant peut les utiliser pour estimer numériquement le gradient de la fonction de perte. De cette façon, les attaquants peuvent concevoir des attaques en boîte blanche en utilisant, par exemple, la méthode de signe de gradient rapide. Dans l'article de la Computer Vision Foundation que nous avons cité précédemment, les auteurs montrent comment procéder par rapport à un modèle d'apprentissage automatique commercial.
Examinons deux défenses qui ont été proposées dans la littérature.
Distillation défensive
Cette méthode essaie de générer un nouveau modèle dont les gradients sont beaucoup plus petits que le modèle original non défendu. Si les gradients sont très faibles, des techniques comme FGS ou Iterative FGS ne sont plus utiles, car l'attaquant aurait besoin de grandes distorsions de l'image d'entrée pour obtenir un changement suffisant dans la fonction de perte.
La distillation défensive introduit un nouveau paramètre $T$ , appelé température, à la dernière couche softmax du réseau :
Notez que, pour T=1, nous avons la fonction softmax habituelle. Plus la valeur de $T$ est élevée, plus le gradient de la perte par rapport aux images d'entrée est petit.
La distillation défensive se déroule comme suit :
- Former un réseau, appelé réseau maître, avec une température $T » 1$ .
- Utilisez le réseau d'enseignants formés pour générer des étiquettes souples pour chaque image de l'ensemble de formation. Une étiquette logicielle pour une image est l'ensemble de probabilités que le modèle attribue à chaque classe. Par exemple, si l'image de sortie est un perroquet, le modèle de l'enseignant peut générer des étiquettes souples telles que (90 % perroquet, 10 % papagayo).
- Former un second réseau, le réseau distillé , sur les soft-labels, en utilisant à nouveau la température $T$ . La formation avec des étiquettes souples est une technique qui réduit le surajustement et améliore la précision hors échantillon du réseau distillé.
- Enfin, au moment de la prédiction, exécutez le réseau distillé avec la température $T=1$ .
La distillation défensive protège avec succès le réseau contre l'ensemble d'attaques tentées dans Distillation en tant que défense contre les perturbations contradictoires contre les réseaux de neurones profonds .
Malheureusement, un article ultérieur de l'Université de Californie, des chercheurs de Berkeley a présenté un nouvel ensemble de méthodes d'attaque qui déjouent la distillation défensive. Ces attaques sont des améliorations par rapport à la méthode L-BFGS qui prouvent que la distillation défensive n'est pas une solution générale contre les exemples contradictoires.
Formation contradictoire
De nos jours, l'entraînement contradictoire est la stratégie de défense la plus efficace. Des exemples contradictoires sont générés et utilisés lors de la formation du modèle. Intuitivement, si le modèle voit des exemples contradictoires lors de la formation, ses performances au moment de la prédiction seront meilleures pour les exemples contradictoires générés de la même manière.
Idéalement, nous aimerions utiliser n'importe quelle méthode d'attaque connue pour générer des exemples contradictoires pendant la formation. Cependant, pour un grand ensemble de données à haute dimensionnalité (comme ImageNet), les méthodes d'attaque robustes telles que L-BFGS et les améliorations décrites dans l'article de Berkeley sont trop coûteuses en calcul. En pratique, nous ne pouvons nous permettre d'utiliser qu'une méthode rapide comme FGS ou FGS itératif peut être employé.
La formation contradictoire utilise une fonction de perte modifiée qui est une somme pondérée de la fonction de perte habituelle sur des exemples propres et d'une fonction de perte à partir d'exemples contradictoires.
Pendant la formation, pour chaque lot de $m$ images propres, nous générons $k$ images contradictoires en utilisant l'état actuel du réseau. Nous propageons le réseau à la fois pour les exemples propres et contradictoires et calculons la perte avec la formule ci-dessus.
Une amélioration de cet algorithme présentée dans ce document de conférence est appelée entraînement contradictoire d'ensemble. Au lieu d'utiliser le réseau actuel pour générer des exemples contradictoires, plusieurs modèles pré-formés sont utilisés pour générer des exemples contradictoires. Sur ImageNet, cette méthode augmente la robustesse du réseau aux attaques de type boîte noire. Cette défense a remporté le 1er tour du concours NIPS 2017 sur les défenses contre les attaques adverses .
Conclusions et prochaines étapes
À ce jour, attaquer un modèle d'apprentissage automatique est plus facile que de le défendre. Les modèles de pointe déployés dans des applications du monde réel sont facilement trompés par des exemples contradictoires si aucune stratégie de défense n'est utilisée, ouvrant la porte à des problèmes de sécurité potentiellement critiques. La stratégie de défense la plus fiable est la formation contradictoire, où des exemples contradictoires sont générés et ajoutés aux exemples propres au moment de la formation.
Si vous souhaitez évaluer la robustesse de vos modèles de classification d'images à différentes attaques, je vous recommande d'utiliser la bibliothèque Python open-source intelligenthans. De nombreuses méthodes d'attaque peuvent être testées sur votre modèle, y compris celles mentionnées dans cet article. Vous pouvez également utiliser cette bibliothèque pour effectuer une formation contradictoire de votre modèle et augmenter sa robustesse aux exemples contradictoires.
Trouver de nouvelles attaques et de meilleures stratégies de défense est un domaine de recherche actif. Des travaux plus théoriques et empiriques sont nécessaires pour rendre les modèles d'apprentissage automatique plus robustes et plus sûrs dans les applications du monde réel.
J'encourage le lecteur à expérimenter ces techniques et à publier de nouveaux résultats intéressants. De plus, tout commentaire concernant le présent article est le bienvenu par l'auteur.
- Modèles Sound Logic et Monotonic AI
- Les nombreuses applications de la descente de gradient dans TensorFlow