De 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 des étagères afin de 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 qui les sous-tendent 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 d'apprentissage automatique complexes. 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 reposent sur un matériel qui n'était pas disponible il y a à peine dix ans.
En 2012, Alex Krizhevsky et altri est devenu le premier à montrer comment mettre en œuvre un réseau convolutif profond, qui à l'époque est devenu le modèle de pointe en matière de classification d'objets. Depuis, de nombreuses améliorations de leur modèle d'origine ont été publiées, chacune d'entre elles apportant une amélioration de la précision (VGG, ResNet, Inception, etc.). Récemment, les modèles d'apprentissage automatique ont réussi à atteindre une précision humaine et même supérieure à l'homme dans de nombreuses tâches de vision par ordinateur.
Il y a quelques années, obtenir de fausses 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 laboratoire l'environnement, comme les concours d'apprentissage automatique et les articles universitaires. De nos jours, dans la mesure où 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 facilement être trompés par un acteur malveillant et ainsi être amenés à produire de fausses prédictions. Une fois que nous nous sommes familiarisés avec les stratégies d'attaque habituelles, nous discuterons de la manière de défendre nos modèles contre elles.
Commençons par une question de base: Quels sont les exemples d'apprentissage machine contradictoire?
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 d'images. Par conséquent, les exemples contradictoires vont être des images d'entrée conçues 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 d'images en tant que modèle d'apprentissage automatique. Ci-dessous, vous avez deux images d’un panda qui ne se distinguent pas à l’œil nu. L'image de gauche est l'une des images propres de l'ensemble de données ImageNet, utilisée pour entraîner 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. Le modèle prédit la première image comme étant un panda, comme prévu. Le second, au contraire, est prédit (avec un degré de confiance très élevé) 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 jeter un œil à la façon de synthétiser des exemples de confrontation 3D à l'aide d'une imprimante 3D. L'image ci-dessous montre différentes vues d'une tortue 3D imprimée par les auteurs et les erreurs de classification par le modèle Google Inception v3.
utiliser github pour héberger un site web
Comment des modèles à la pointe de la technologie, qui ont une précision de classification supérieure à celle des humains, 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.
Commençons par une question simple: Qu'est-ce qu'un exemple contradictoire?
Tutoriel de l'API Web de base .net
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 provoque 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 ( thêta, X, y) $oùX $est l'image d'entrée,$ et $est la classe de sortie, et$ thêta $sont les paramètres du modèle interne. 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 de 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 image d'entrée est élevée, plus il est facile de générer des exemples contradictoires qui ne peuvent être distingués des images nettes par l'œil humain.
Nous avons trouvé l’exemple contradictoire$ {x} 'en résolvant le problème d'optimisation sous contrainte boîte suivant:
$$ begin {matrice} text {minimiser} c cdot left | x - {x} ' right | ^ 2_2 + text {loss} _ {f, 1} {x}' \ text {tel que} {x} ' epsilon left [0, 1 right ] ^ n end {matrice} $$où$ c> 0 $est un paramètre qui doit également être résolu. Intuitivement, nous recherchons des images contradictoires$ {x} 'telle que la somme pondérée de la distorsion par rapport à l'image propre ($ gauche | x - {x} ' right | $) et la perte par rapport à la 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. Pour cette raison, ce Méthode L-BFGS est lent. Cependant, son taux de réussite est élevé.
Avec le méthode du signe de gradient rapide (FGS) , on fait une approximation linéaire de la fonction de perte autour du point initial, donnée par le vecteur image propreX $et la vraie classe$ et $.
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 d'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 plus petite que epsilon (cette différence est la norme L_infinity).
$$ X ^ {adv} = X + epsilon text {signe} left ( bigtriangledown_x J left (X, y_ {true} right) right) $$Le gradient peut être calculé efficacement en utilisant la rétropropagation. Cette méthode est l'une des plus rapides et des moins chères en termes de calcul. Cependant, son taux de réussite est inférieur à celui des méthodes plus coûteuses comme le L-BFGS.
Les auteurs de Apprentissage automatique contradictoire à grande échelle a déclaré qu'il avait un taux de réussite entre 63% et 69% 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 document de recherche sur des exemples contradictoires rapportent un taux de réussite de 99%.
Une évidence extension de la méthode précédente est de l'appliquer plusieurs fois avec un pas alpha plus petit, et de couper la longueur totale du pas pour s'assurer que la distorsion entre les images propres et contradictoires est inférieure à epsilon.
$$ X ^ {adv} _0 = X, X ^ {adv} _ {N + 1} = Clip_ {X, epsilon} left {X ^ {adv} _ {N} + alpha text {signe } left ( bigtriangledown_X J left (X ^ {adv} _N, y_ {true} right) right) right } $$D'autres techniques, comme celles proposées dans 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 du monde réel, l'attaquant ne connaît pas la fonction de perte du modèle ciblé. Dans ce cas, l'attaquant doit utiliser une stratégie de boîte noire.
Les chercheurs ont observé à plusieurs reprises que les exemples contradictoires se transfèrent 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:
Une application réussie de cette stratégie à un modèle commercial d'apprentissage automatique est présentée dans cet article de la Computer Vision Foundation .
L'attaquant élabore l'attaque en exploitant toutes les informations dont il dispose sur le modèle. De toute évidence, moins le modèle fournit d'informations au moment de la prédiction, plus il est difficile pour un attaquant de réussir une attaque.
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 doit fournir que le haut$ N $(par exemple, 5) classes 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 créer des attaques en boîte blanche en utilisant, par exemple, la méthode du 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 commercial d'apprentissage automatique.
Regardons deux défenses qui ont été proposées dans la littérature.
Cette méthode essaie de générer un nouveau modèle dont les gradients sont beaucoup plus petits que le modèle non défendu d'origine. Si les gradients sont très petits, des techniques telles que 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 de la fonction de perte.
La distillation défensive introduit un nouveau paramètre$ T $, appelée température, à la dernière couche softmax du réseau:
$$ text {softmax} left (x, T right) _i = frac {e ^ {x_i / T}} { Sigma_j e ^ {x_j / T}} $$Notez que, pour T = 1, nous avons la fonction softmax habituelle. Plus la valeur de$ T $, plus le gradient de la perte est petit par rapport aux images d'entrée.
La distillation défensive se déroule comme suit:
La distillation défensive protège avec succès le réseau contre l'ensemble des attaques tentées La distillation comme défense contre les perturbations contradictoires contre les réseaux de neurones profonds .
comment obtenir les informations de carte de crédit de quelqu'un
Malheureusement, un article ultérieur de l'Université de Californie, 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.
De nos jours, la formation antagoniste 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 exemples contradictoires pendant l'entraînement, sa performance au moment de la prédiction sera meilleure 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 l'entraînement. 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érative peut être employée.
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 clairs et une fonction de perte à partir d'exemples contradictoires.
$$ Loss = frac {1} { left (m - k right)} left ( sum_ {i epsilon CLEAN} y_i right) + lambda sum_ {i epsilon ADV} {L left (X * {adv} _i | y_i right)} right) $$Pendant la formation, pour chaque lot deM $des images propres que nous générons$ k $images contradictoires utilisant l'état actuel du réseau. Nous transmettons le réseau à la fois pour des exemples propres et contradictoires et calculons la perte avec la formule ci-dessus.
Une amélioration de cet algorithme présentée dans ce papier de conférence est appelé formation antagoniste d'ensemble. Au lieu d'utiliser le réseau actuel pour générer des exemples contradictoires, plusieurs modèles pré-entraînés sont utilisés pour générer des exemples contradictoires. Sur ImageNet, cette méthode augmente la robustesse du réseau face aux attaques de type boîte noire. Cette défense a remporté le 1er tour de la Concours NIPS 2017 sur les défenses contre les attaques contradictoires .
À partir d'aujourd'hui, il est plus facile d'attaquer un modèle d'apprentissage automatique 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 l'entraînement contradictoire, où des exemples contradictoires sont générés et ajoutés aux exemples clairs au moment de l'entraînement.
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 intelligents . 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 un entraînement 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 à la fois 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.
En relation:Un exemple contradictoire est une entrée (par exemple, une image, un son) conçue pour amener un modèle d'apprentissage automatique à faire une mauvaise prédiction. Il est généré à partir d'un exemple propre en ajoutant une petite perturbation, imperceptible pour l'homme, mais suffisamment sensible pour que le modèle modifie sa prédiction.
Tout modèle d'apprentissage automatique utilisé dans un scénario réel est soumis à des attaques adverses. Cela comprend les modèles de vision par ordinateur utilisés dans les voitures autonomes, les systèmes de reconnaissance faciale utilisés dans les aéroports ou le logiciel de reconnaissance vocale de votre assistant de téléphone portable.
Une attaque antagoniste est une stratégie visant à amener un modèle d'apprentissage automatique à faire une fausse prédiction. Il consiste à ajouter une petite perturbation soigneusement conçue à une image propre, imperceptible pour l'œil humain, mais que le modèle considère comme pertinente et modifie sa prédiction.