Hackers vs Neural networks: Game on! Part 1/3

Adversarial Attacks on Deep Learning models

Mithuran Gajendran
Meetech - We Love Tech
9 min readAug 28, 2020

--

Durant mes études en tant que Data Scientist, j’ai cherché à améliorer les performances de mes modèles en utilisant des métriques tels que l’accuracy, la F1-score ou la vitesse d’exécution et j’avais l’impression que les CNNs étaient le but ultime de l’Intelligence Artificielle (IA): l’état de l’art c’était les CNNs.

En effectuant mon stage de fin d’étude au Machine Learning Data Lab de Wavestone (MLDL), je découvre que la performance n’est qu’un élément de la sainte trinité : l’impact, la performance et la robustesse des modèles.

C’est ce dernier point qui m’intéresse dans cet article. En discutant et lisant les articles de recherches des experts du MLDL, j’apprend que les CNNs ne sont pas infaillibles. Ils peuvent être trompés par des ‘illusions optiques’ pour machine : des attaques ‘adversarial’.

Sommaire

Pour faciliter la lecture, le sujet est divisé en trois articles :

Le Deep Learning, une tendance inscrite sur le long terme

Le Deep Learning est une technologie omniprésente et actuellement omnipotente. Il s’inscrit dans tous les domaines. Sans m’en rendre compte, je l’utilise tout les jours que ça soit pour demander à Siri la météo, traduire des mots sur DeepL, demander des informations via des chatbots ou tout simplement me faire suggérer des recommandations Netflix.

Les applications sont vraiment variées et touchent différents secteurs:

  • Les transports, avec les voitures autonomes, la maintenance prédictive
  • La santé, avec la classification des tumeurs dans les scanners
  • La finance, avec des modèles quantitatifs plus complexes et moins risqués
  • L’industrie en général et encore plein d’autres …

Si le recours à l’IA, et plus particulièrement le Deep Learning, est autant adopté, c’est parce qu’il fait preuve d’une efficacité redoutable pour « apprendre » n’importe quel type de tâche avec des résultats toujours plus proches de la perfection, surpassant l’Homme sur déjà bien des aspects.

Mais alors, comment fonctionne un modèle de Deep Learning ?

Représentation simpliste

De manière imagée, je dirai que c’est une boite noire dans laquelle j’envoie une entrée, et après une série de calculs, elle me retourne une sortie. Le véritable intérêt est que je n’ai pas à préciser la série de calculs, le modèle les apprend de lui-même. Il est capable de trouver des relations complexes dans les données d’entrées en fonction du résultat désiré.(Bien-sûr, je ne me limite qu’à l’apprentissage supervisé)

Mais comment il apprend alors ?

f représente la série de calculs que le modèle détermine

Prenons un exemple, je veux que mon modèle m’indique si l’image que je lui présente est un chat ou un chien. Afin qu’il puisse effectuer sa tâche, il doit “apprendre” à différencier les deux classes.

Les paramètres du modèle sont initialisés aléatoirement, il attribue chien et chat au hasard. Ces paramètres sont modifiés petit à petit jusqu’à ce qu’il classifie correctement les animaux.

Ce processus est itératif et se fait de la manière suivante :

  • Je présente une image à mon modèle
  • Il applique une série de calculs et me retourne sa prédiction
  • Une fonction de coût (loss function) va calculer l’erreur qui est la différence entre sa prédiction et la vraie classe de l’image
  • Le modèle va chercher à minimiser ce coût en ajustant ses paramètres (notamment via le gradient descent)
  • Il va ensuite propager cette correction à ces paramètres (via backpropagation)
  • Je lui présente une nouvelle image et il recommence !

En cherchant à réduire ses erreurs, le modèle va apprendre la meilleure série de calculs afin qu’il puisse classifier correctement le chat ou le chien.

Les attaques « Adversariales »

Eh ! Je croyais que nous allions hacker des réseaux de neurones !

Reste avec moi ! J’ai besoin d’expliquer quelques concepts avant. Si tu es pressé, passe à la deuxième partie, tu apprendras comment faire passer un chat pour une banane :)

C’est en 2013 pour la première fois que la notion de sécurité des modèles de Deep Learning est abordée. Une équipe de chercheurs publie un article démontrant l’existence de failles de sécurité dans les modèles de Deep Learning. Ils montrent qu’il est possible de tromper ces modèles volontairement afin de modifier leur sortie.

Le problème soulevé est d’autant plus important à résoudre que cette technologie est utilisée dans des domaines critiques. Il est nécessaire de créer des modèles sécurisés si l’on veut pouvoir généraliser l’usage du Deep Learning.

Imaginez ! Le modèle prédirait guacamole au lieu de chat

Qu’est-ce qu’une attaque « adversarial » ?

Pour tromper le modèle, il faut réaliser une attaque ‘adversarial’, par définition c’est :

L’ajout d’une petite perturbation au signal d’entré d’un modèle de Deep Learning, imperceptible à l’œil humain, permettant la modification de son signal en sortie.

Dans le cas d’une classification d’image, une telle attaque consiste à modifier les pixels de l’image d’entrée, de façon imperceptible pour l’Homme, afin de fausser la catégorie prédite.

Là où l’intelligence humaine nous permet de faire abstraction de ces perturbations, un réseau de neurones les prend en compte et modifie complètement sa prédiction.

Une image spécialement modifiée par l’ajout d’une très petite perturbation, afin de tromper un modèle , est appelée « exemple adversarial ».

Figure 2 : (à gauche) l’image original classifiée “panda” par un modèle de Machine Learning, (au centre) l’ajout d’une très p
Un panda qui se transforme en singe après l’ajout d’une très petite perturbation (coefficient 0.007)

Pourquoi les modèles de Deep Learning sont-ils sensibles à de telles attaques ?

Aujourd’hui les spécialistes s’accordent à dire que c’est le comportement linéaire des modèles de Deep Learning qui les rend faibles face à ces attaques. En fonctionnant de manière linéaire, une modification en entrée du modèle induit directement une modification à sa sortie. Il est alors possible de trouver une petite modification qui induit une grosse variation en sortie. Il est même possible d’appliquer une perturbation précise permettant de choisir avec certitude la sortie générée par le modèle.

Les différents scénarios d’attaques : “Targeted” vs “Untargeted”, « White-box » vs « Black-box »

Ah ! Donc, si j’ai un classifieur d’animaux, je peux choisir de prédire une tortue au lieu d’un chat ?

C’est exact ! C’est une attaque dite “targeted”. À l’opposé, il y a les attaques “untargeted”, plus simples à mettre en place, qui consistent à tromper le modèle peu importe la sortie retournée du moment qu’elle diffère de celle attendue.

Une attaque “untargeted” fera seulement en sorte qu’un classifieur classe une photo de chat comme étant un autre animal. Une attaque targeted fera en sorte que la photo de chat soit classifiée comme étant celle d’un alligator, et rien d’autre.

C’est bien beau, mais pour attaquer je dois connaître la structure du modèle ?

Oui et non ! Si l’attaquant a accès aux informations du modèle (architecture, paramètres …), il va les utiliser afin de créer une attaque “White-box”. À l’inverse, s’il n’a pas accès aux informations, c’est une attaque “Black-box”. Il va considérer le modèle telle une boîte noire et construire son attaque à l’aveugle.

La transférabilité des attaques

À l’aveugle vraiment ?

En pratique, un exemple ‘adversarial’ construit pour tromper un modèle peut être utilisé pour tromper d’autres modèles possédant des architectures et des jeux d’entraînement différents. C’est cette propriété que l’on appelle la transférabilité d’une attaque.

L’explication la plus plausible de cette transférabilité repose sur la généralisation des modèles de Deep Learning. Le principe fondamental d’un modèle est d’approximer une fonction mathématique. Or, étant donné que l’entraînement et l’architecture d’un modèle pour effectuer une même tâche sont similaires, différents modèles pour effectuer la même tâche auront tendance à approximer la même fonction mathématique. Ils partageront donc globalement les mêmes défauts et seront sensibles aux mêmes attaques.

Principes d’une attaque ‘adversarial’

Récapitulons et combinons les informations précédentes, afin de comprendre le principe de l’attaque :

  • Une attaque ‘adversarial’ consiste à créer une petite perturbation ajoutée à une entrée afin de modifier la sortie d’un modèle : x_adv = x+η
  • Cette attaque doit être indétectable. Cela correspond mathématiquement à garder la norme entre l’image de référence et l’image modifiée très petite : ||η|| < ε, avec ε le seuil maximal à ne pas dépasser.
  • La fonction qui permet de mesurer l’erreur entre la sortie d’un modèle et la sortie attendue s’appelle la fonction de coût. Elle doit être la plus petite possible afin que le modèle prédise correctement.
  • Ces modèles possèdent un fonctionnement linéaire. Une variation en entrée entraîne une variation en sortie.

En assemblant ces quatre informations il est très facile de comprendre le principe mathématique derrière les attaques ‘adversarial’. Créer une attaque consiste à résoudre un problème d’optimisation sous contrainte : augmenter l’erreur du modèle sous contrainte d’une petite norme.

En d’autre termes, grâce au comportement linéaire du modèle, il s’agit de trouver une perturbation assez petite pour ne pas être détectée et assez efficace pour augmenter la valeur de la fonction de coût au point d’induire une modification de la sortie du modèle.

Pour ce faire, il y a deux approches connues.

  • L’attaque basée sur la minimisation de la perturbation

L’attaque de minimisation de la perturbation consiste à contraindre la valeur de la fonction de coût L( f ( x+η ) , y ) au-dessus d’un seuil minimal c assez grand pour garantir une modification de la sortie du modèle. Elle cherche ensuite, sous cette contrainte, à minimiser la perturbation, et donc la distance entre les deux images. Mathématiquement cela correspond à calculer :

La méthode faisant office d’état de l’art à l’heure actuelle est l’attaque de Carlini [A1] ou C&W (pour Carlini et Wagner).

Remarque ! En contraignant la fonction de coût, cette méthode assure l’obtention d’un exemple ‘adversarial’. En revanche il n’est pas garanti que la modification soit imperceptible à l’œil nu dans le cas où la minimisation de l’erreur serait insuffisante.

  • L’attaque basée sur la maximisation de la fonction de coût

L’attaque de maximisation de la fonction de coût consiste cette fois ci à contraindre la valeur de la perturbation en dessous d’un seuil minimal ε, assez petit pour être indétectable par l’œil humain. Elle cherche ensuite, sous cette contrainte, à maximiser la fonction de coût afin de modifier la sortie du modèle. Mathématiquement cela correspond à calculer :

La méthode faisant office d’état de l’art à l’heure actuelle est l’attaque de Projected Gradient Descent (PGD).

Remarque ! Contrairement à la première méthode, celle-ci ne garantit pas l’obtention d’un exemple ‘adversarial’ si la fonction de coût n’est pas suffisamment maximisée pour induire un changement de classification. En revanche, dans le cas où un exemple ‘adversarial’ est trouvé, il est garanti que la perturbation est imperceptible à l’œil nu puisque la perturbation est faible.

Retenez que différentes techniques d’attaques ‘adversarial’ existent et qu’elles sont plus ou moins efficaces selon la norme utilisée. Différentes normes induisent différentes techniques d’attaques ‘adversarial’, et apportent de la complexité pour se protéger de ces attaques.

Psst ! Après la théorie, le réconfort !

Je vous ai fait un notebook pour jouer avec le dernier type d’attaque ! Allez-y, vous apprendrez à faire passer un chat pour une banane ! Ou créer des oeuvres d’art psychédéliques :D

C’est par ici ! La partie 2 !

Aucun des deux n’est un chat ! C’est une banane ! Merci Yann Ouhib

Trivial ?

Cet article est écrit en collaboration avec Mickael Gadoud sur la base des travaux d’Alexandre Araujo, doctorant chez Wavestone. Mon but est de simplifier l’aspect technique pour partager les concepts et les enjeux des attaques ‘adversarial’.

Si les concepts vous sont triviaux, allez jeter un oeil sur les travaux d’Alexandre sur son site. Ils sont géniaux, voici mes favoris :

🌱 Merci !

Coucou ! Merci encore, j’espère que c’est assez clair. Mon but est de mettre en avant les attaques ‘adversarial’, c’est une problèmatique assez souvent oubliée lors du développement d’un modèle.

Cette série d’article a pour vocation d’être légère et plaisante à lire.

  • Commentez ! Clappez ! Donnez-moi vos retours :)
  • Contactez moi sur mon Linkedin ou mon Github !

Bonne journée 🔥

--

--

Mithuran Gajendran
Meetech - We Love Tech

Data Scientist with financial engineering background | Enjoy cookies & milk | Currently working on a self driving car | Wanting to make an impact