Machine Learning et sécurité: les exemples contradictoires

L’intelligence artificielle ouvre d’incroyables perspectives pour l’avenir. Nombreux sont les projets qui ne cessent de nous éblouir: AlphaGo, les voitures autonomes ou encore la reconnaissance faciale ou vocale. Tous ces projets sont également la source d’inquiétude, notamment en terme de sécurité.

Ainsi des chercheurs ont récemment démontré qu’il était possible de tromper les algorithmes d’intelligence artificielle (ou Machine Learning), en ayant recours à des adversarial examples que nous pouvons traduire en français par exemples contradictoires. Le tout sans même avoir connaissance de ce qu’il y a à l’intérieur de l’intelligence artificielle ni connaître les données avec lesquelles cette intelligence a été créée !

Le plus inquiétant dans cette histoire, c’est qu’il n’existe actuellement aucune technique qui permet annihiler les attaques d’exemples contradictoires. Au mieux il est possible de réduire un peu la vulnérabilité des algorithmes d’IA, mais il demeure assez aisé de les tromper.

Cet article a pour but de vulgariser, en français, le travail réalisé par Nicolas Papernot, Patrick McDaniel, Z. Berkay Celik (PSU), Somesh Jha (UofW), Anantrham Swami (USARL) et Ian Goodfellow (Google et désormais OpenAI). Vous pouvez trouver le résultat de leurs travaux (en anglais) ici: https://arxiv.org/pdf/1602.02697.pdf

Nous tenterons donc de comprendre le concept d’exemple contradictoire. Par souci de clarté, je tâcherai de ne pas rentrer dans les détails techniques, afin de rendre le sujet accessible à tous.

Ce qu’est un exemple contradictoire

Prenons un exemple pour illustrer ce qu’est un exemple contradictoire: imaginez-vous dans quelques années, assis dans votre voiture autonome qui roule tranquillement. A l’approche d’une intersection et à la vue d’un panneau STOP, votre voiture va normalement détecter la présence de ce dernier, l’identifier comme étant un panneau STOP, et s’arrêter avant de s’engager. Mais là, c’est tout le contraire qui se produit ! Votre voiture a continué à avancer, adoptant donc un comportement dangereux pouvant avoir des conséquences graves.

En fait, vous avez été victime d’un exemple contradictoire: le système d’intelligence artificielle embarqué dans votre voiture autonome a été trompé. Il n’y a pas eu d’erreur à proprement parler du logiciel de votre voiture; l’algorithme a parfaitement fonctionné. Il n’y a pas eu de bug, l’algorithme a simplement identifié le panneau STOP comme un panneau différent, par exemple un panneau de priorité.

Comment est-ce possible ? En effet, vous retournez vérifier à l’endroit où se trouve le panneau, afin de voir si vous n’avez pas rêvé et, c’est bien un panneau STOP qui se trouve là, votre voiture aurait dû s’arrêter.

Maintenant, regardez les deux images ci-dessous:

source: https://arxiv.org/pdf/1602.02697.pdf

En tant qu’être humain, vous voyez deux panneaux STOP identiques. Vous êtes capables de les identifier en tant que tel car vous possédez la vision et êtes capables de créer dans votre esprit des concepts. Un algorithme d’IA ne perçoit pas ces deux images comme nous; elle les voit en fait comme une suite de nombres. Et tenez-vous bien: les deux images ci-dessus ne sont pas identiques ! l’image de droite a été très légèrement modifiée, elle a subi des modifications imperceptibles pour nos yeux humains. Mais l’algorithme d’IA qui lit ces deux images comme une suite de nombres obtient donc deux suites de nombres différents qui la conduisent à considérer les deux panneaux comme différents !

C’est ça, les exemples contradictoires: des objets ont été modifiés pour produire des sorties de modèles erronées, tout en apparaissant comme non modifiés pour des observateurs humains. On peut penser dans notre exemple que le panneau STOP (oui, le panneau lui-même) a subi de très petites modifications avec de la peinture ou des autocollants de la part d’une personne malveillante.

L’exemple ci-dessous est un peu plus parlant:

source: https://arxiv.org/pdf/1602.02697.pdf

Sur les deux images ci-dessus, on parvient à percevoir au moins une des modifications: l’extrémité basse du 3 a été légèrement rallongée, trompant l’algorithme qui identifie alors l’image comme étant un 8. Bien entendu, le but des pirates est de générer des exemples contradictoires ayant des modifications si petites (sur de simples pixels) qu’elles empêcheront n’importe quel être humain de percevoir ces modifications. C’est tout à fait possible, comme le démontre notre image de panneau STOP. Leur but est donc de trouver l’altération minimale d’un objet qui poussera l’algorithme à se tromper.

Vous pensez probablement: mais comment est-ce que des modifications si minimes et qui ne modifient pas l’aspect général de l’objet peuvent-elles induire en erreur l’algorithme ? Comme dit plus haut, l’IA ne perçoit pas les images comme nous, humains. Elle lit ces images comme des suites de nombres. Lorsque l’on crée (i.e. entraîne) un modèle d’IA, on lui apprend à reconnaître des objets de la façon suivante: on lui montre des images (en fait, des millions d’images) et elle identifie chacune d’entre elles. A l’issu de cette première identification, on compare ses résultats et lui indiquons à quel point il s’est trompé. Dès lors, l’algorithme prend en compte ses erreurs et modifie de lui-même ses réglages, sans que l’humain n’intervienne (c’est ce qu’on appelle une phase d’apprentissage en Machine Learning). L’algorithme d’IA répète cette étape et ajuste ses réglages tout seul jusqu’à ce que l’on juge les résultats comme optimaux.

Nous ne savons pas quels sont les critères que prend en compte l’IA pour reconnaître le panneau STOP: est-ce la quantité de rouge sur le panneau ? Est-ce la circonférence du panneau ? En fait, ce sont des millions de petits détails qui n’ont pas de sens pour nous, êtres humains. Et on s’en moque un peu, l’algorithme choisi les détails qu’il veut, tant qu’il nous donne la bonne réponse, c’est à dire tant qu’il sait reconnaître un panneau STOP comme tel. Mais du coup, si certains de ces (très) petits détails sont modifiés, ça peut tout changer pour notre algorithme, et c’est ça qui l’amène à se tromper.

Pour finir, voici d’autres exemples contradictoires montrés dans l’étude. La première ligne est celle des images originales, et la seconde celle des images modifiées. En dessous de chaque image, le résultat donné par le modèle d’IA:

source: https://arxiv.org/pdf/1602.02697.pdf

Les black-box attacks

Nous venons donc de voir ce qu’est un exemple contradictoire: trouver le nombre de détails minimums qu’il faut modifier sur un objet pour tromper un modèle d’IA et lui faire croire que c’est un autre objet. Ces modifications sont si minimes qu’elles sont invisibles pour un œil humain.

Nous allons maintenant parler des black-box attacks: ce sont ces attaques qui permettent de générer des exemples contradictoires et de s’en servir contre des modèles d’IA.

Avant cette publication, on pensait que ce type d’attaque n’était possible que si le pirate connaissait à minima le système interne qui constituait l’intelligence artificielle attaquée, ou bien les données qui ont servi à créer (ou plutôt entraîner, comme on dit dans le milieu de la Data Science) cette IA. Le danger était donc plutôt faible a priori, car il fallait que le pirate s’infiltre dans les systèmes de l’entreprise qui utilise l’algorithme. Tant que l’entreprise se protège bien, on est à l’abri.

Mais la vraie nouveauté de ce travail est qu’un pirate peu attaquer n’importe quelle IA sans même avoir accès aux systèmes de l’entreprise ! Ici on parle de black-box attack (attaque de boîte noire en Français) car aucun des deux prérequis évoqués plus haut n’est nécessaire: Il suffit de connaître ce que l’on appelle les labels, c’est-à-dire les résultats possibles de l’algorithme. Dans notre exemple de voiture autonome, il faut simplement connaître tous les panneaux que l’IA de la voiture est capable d’identifier pour générer un modèle qui permettra de perpétrer une black-box attack sur notre voiture.

L’idée est donc d’entraîner un modèle de substitution à partir de données synthétiques et qui va faire le même travail que le modèle cible. Dans notre exemple de voiture autonome, ici on crée un modèle de substitution qui, comme l’IA de notre voiture, va avoir pour travail de reconnaître les panneaux de signalisation (pour les connaisseurs, on crée ici un réseau de neurones de Deep Learning).

Grâce au modèle de substitution que nous avons créé, nous identifions quels sont les (tout petits) facteurs d’une image qui poussent le modèle à identifier un panneau de priorité comme tel, pour ensuite les incorporer dans notre panneau STOP. Nous testons l’image du panneau STOP modifié dans notre algorithme de substitution et si ce dernier identifie notre panneau STOP comme un panneau de priorité, alors nous avons réussi: nous avons créé notre exemple contradictoire.

Rappelez-vous maintenant que nous ne savons pas de quoi est fait l’IA de la voiture autonome que nous voulons attaquer. Ainsi l’IA que nous avons créé pour réaliser notre exemple contradictoire est probablement différent; mais peu importe, l’important est que les deux modèles aient la même mission: reconnaître les panneaux de signalisation. Ainsi, les chercheurs qui ont travaillé sur les exemples contradictoires ont constaté que lorsqu’ils parvenaient à tromper le modèle de substitution sur une image, alors le modèle cible était également trompé !

Pour revenir à notre exemple, voici ce qui est arrivé à votre voiture autonome: un pirate a listé tous les panneaux de signalisation qui existent, a créé un modèle similaire à celui de votre voiture (sans même avoir jeté un coup d’œil à votre voiture) pour qu’il reconnaisse les panneaux de signalisation. Puis il a identifié les minuscules détails qui permettent à l’algorithme de reconnaître un panneau de priorité, et est allé repeindre le panneau STOP pour y incorporer ces détails. Votre voiture, en arrivant devant le panneau STOP, l’a identifié comme un panneau de priorité et a donc avancé sans s’arrêter.

Validation empirique

Les chercheurs ont expérimenté leur théorie en “attaquant” (sans danger, soyez rassurés) des IA hébergées chez MetaMind, Amazon et Google. Les attaques ont fonctionné respectivement 84,24%, 96,19% et 88,94% du temps !

Bien entendu, ce type d’attaque nécessite d’excellentes connaissances en Data Science, et demeure difficile à perpétrer, même pour les plus érudits sur le sujet. Mais si des chercheurs ont réussi, il est tout à fait possible que d’autres réussissent à leur tour. Il suffit de peu de pirates qui maîtrisent ces technologies pour perpétrer des black-box attacks lourdes de conséquences.

Dans un article publié ici: https://blog.openai.com/adversarial-example-research/ l’équipe d’Open AI explique qu’il existe des méthodes permettant de renforcer la protection face aux black-box attacks, sans pour autant les empêcher complètement. En effet, on peut d’abord entraîner notre IA à reconnaître les exemples contradictoires, mais le problème est que, pour se protéger à 100% d’une éventuelle attaque, il faudrait être capable de montrer à notre IA tous les exemples contradictoires possibles et imaginable. Or il semble impossible de tous les obtenir. La seconde méthode pourrait être appelée distillation défensive: au lieu d’exiger de notre modèle qu’il reconnaisse un panneau STOP comme tel, on exigerait de lui qu’il donne plusieurs possibilités par exemple: “ce panneau pourrait être un panneau STOP, ou bien un panneau sens interdit, ou encore un panneau de cédez le passage…” Cela permettrait de brouiller un peu les pistes pour les pirates, mais cette technique semble également avoir ses limites.

Pour résumer, il est possible d’utiliser l’intelligence artificielle à mauvais escient, en créant des modèles capables de tromper ces dernières (on génère les fameux exemples contradictoires) puis de les attaquer, le tout sans avoir besoin de se faufiler dans un système informatique (contrairement aux attaques que nous connaissons aujourd’hui sur le web), d’où le nom de ces attaques: les black-box attacks. La théorie a même été validée empiriquement !

Pour aller plus loin

Le travail des chercheurs ayant développé les concepts d’exemples contradictoires et de black-box attacks nous montre bien que l’intelligence artificielle est porteuse de grands espoirs mais pose aussi de grandes questions de sécurité. Ainsi l’initiative d’Open AI, une association de recherche à but non lucratif créée par Elon Musk et Sam Altman rassemble certains des meilleurs chercheurs en intelligence artificielle afin de faire progresser les connaissances dans le domaine de l’IA dans un sens où celle-ci pourrait être bénéfique pour l’humanité, et non dangereuse. Si vous voulez plonger plus en profondeur dans les sujets majeurs de l’IA, je vous invite à consulter le site web d’Open AI (en anglais): https://openai.com/