Les champs d’application de la Data Science ne cessent de s’élargir. Les IA savaient déjà classer et prédire, elles deviennent créatives avec les GAN.

Yann LeCun (Directeur de la Recherche sur l’IA sur Facebook) l’a décrite comme « l’idée la plus intéressante de l’apprentissage automatique au cours des 10 dernières années ». Bien entendu, un tel compliment de la part d’un chercheur de premier plan dans le domaine de l’apprentissage en profondeur (Deep Learning) constitue toujours une excellente publicité. Et, de ce fait, les réseaux d’adversaires génératifs (Generative Adversarial Networks – GAN) ont connu un énorme succès depuis leur introduction en 2014 par Ian Goodfellow et d’autres chercheurs de l’Université de Montréal, dont Yoshua Bengio, dans l’article Generative Adversarial Nets.

Alors, qu’est-ce qu’un GAN ? Quels sont-ils ? Qu’est-ce qui les rend si « intéressants » ?  Comment optimisent-ils les performances de l’IA ?

C’est ce que nous verrons à travers cet article.

Qu’est-ce qu’un GAN ?

Un GAN est un type de construction dans la technologie de réseau neuronal qui offre beaucoup de potentiel dans le monde de l’intelligence artificielle. Un réseau accusatoire génératif est composé de deux réseaux de neurones : un réseau génératif et un réseau discriminatif. Celles-ci fonctionnent ensemble pour fournir une simulation de haut niveau des tâches conceptuelles.

Comment fonctionnent les réseaux génératifs et discriminatifs :

 

Prenons un exemple : au vu des nombreux mots que pourrait renfermer un e-mail (l’instance de données), un algorithme discriminatif pourrait prédire si le message est spammé ou non. « Spam » est l’une des étiquettes, et le groupe de mots recueillis à partir de l’e-mail est les fonctionnalités qui constituent les données d’entrée. Lorsque ce problème est exprimé mathématiquement, l’étiquette est appelée « y » et les fonctionnalités sont appelées « x ». La formulation « p(y|x) » est utilisée pour signifier « la probabilité de y étant donné x », ce qui dans ce cas se traduirait par « la probabilité qu’un email soit un spam, compte tenu des mots qu’il contient ».

Donc, les algorithmes discriminants vérifient les caractéristiques sur les étiquettes. Ils ne s’intéressent qu’à cette corrélation. PAR CONTRE, les algorithmes génératifs fonctionnent à l’opposé.

Au lieu de prédire une étiquette en fonction de certaines caractéristiques, ils tentent de prédire des caractéristiques en fonction d’une certaine étiquette.

La question à laquelle un algorithme génératif tente de répondre est la suivante : en supposant que cet e-mail est du spam, quelle est la probabilité de ces fonctionnalités ? Alors que les modèles discriminants se préoccupent de la relation entre y et x, les modèles génératifs se préoccupent de « comment obtenir x ». Ils vous permettent de capturer « p(x|y) », la probabilité de x donner y, ou la probabilité de caractéristiques données par une étiquette ou une catégorie. (Cela dit, les algorithmes génératifs peuvent également être utilisés comme classificateurs. Il se trouve qu’ils peuvent faire plus que classer les données d’entrée.)

Une autre façon de penser est de distinguer les discriminants des génératifs comme ceci :

  • Les modèles discriminants apprennent la limite entre les classes ;
  • Les modèles génératifs modélisent la distribution des classes individuelles.

Comment fonctionnent les GANs ?

 

Un réseau de neurones, appelé générateur, génère de nouvelles instances de données, tandis que l’autre, le discriminateur, les évalue pour en vérifier l’authenticité. C’est-à-dire que le discriminateur décide, si chaque instance de données qu’il examine appartient ou non à l’ensemble de données d’apprentissage réel.

Disons que nous essayons de faire quelque chose de plus banal que d’imiter la Mona Lisa. Nous allons générer des chiffres écrits à la main, comme ceux trouvés dans le jeu de données MNIST, provenant du monde réel. Le but du discriminateur, lorsqu’il est montré une instance du véritable jeu de données MNIST, est de reconnaitre celles qui sont authentiques.

Pendant ce temps, le générateur crée de nouvelles images synthétiques qu’il transmet au discriminateur. Il le fait dans l’espoir qu’ils seront eux aussi réputés authentiques, même s’ils sont faux. Le but du générateur est de générer des chiffres passables écrits à la main : mentir sans se faire attraper. L’objectif du discriminateur est d’identifier les images provenant du générateur comme étant des faux.

Voici les étapes qu’un GAN prend :

  • Le générateur prend des nombres aléatoires et renvoie une image ;
  • Cette image générée est introduite dans le discriminateur à côté d’un flux d’images provenant du jeu de données réel de terrain ;
  • Le discriminateur prend à la fois des images réelles et fausses et renvoie des probabilités, un nombre compris entre 0 et 1, 1 représentant une prédiction d’authenticité et 0 représentant fictif.

Donc, vous avez une double boucle de rétroaction :

  • Le discriminateur est dans une boucle de rétroaction avec la vérité au sol des images, que nous connaissons ;
  • Le générateur est dans une boucle de rétroaction avec le discriminateur.

Vous pouvez imaginer un GAN comme une opposition, entre un contrefacteur et un flic dans un jeu de chat et de souris, où le contrefacteur apprend à passer de fausses notes et le flic apprend à les détecter. Les deux sont dynamiques ; c’est-à-dire que le flic est aussi en formation (pour étendre l’analogie, peut-être que la banque centrale signale les factures qui ont été volées) et que chaque partie apprend les méthodes de l’autre dans une escalade constante.

Pour le MNIST, le réseau discriminateur est un réseau de convolution standard qui peut catégoriser les images qui lui sont fournies, un classificateur binomial étiquetant les images comme réelles ou fictives. Le générateur est un réseau de convolution inverse, dans un sens : alors qu’un « classifieur » de convolution standard prend une image et le sous-échantillonne pour produire une probabilité, le générateur prend un vecteur de bruit aléatoire et l’échantillonne jusqu’à une image. La première élimine les données par le biais de techniques de sous-échantillonnage telles que le max covoiturage, tandis que la seconde génère de nouvelles données.

Les deux réseaux tentent d’optimiser une fonction d’objectif différente ou opposée, ou une fonction de perte, dans un jeu à zéro. Il s’agit essentiellement d’un modèle acteur-critique. Lorsque le discriminateur modifie son comportement, le générateur en fait de même, et inversement. Leurs pertes se poussent les unes contre les autres.

Les différents types de GAN :

GAN constituent désormais un sujet de recherche très actif et de nombreux types de mise en œuvre du GAN ont été mis en place. Certains des plus importants actuellement utilisés sont décrits ci-dessous :

Vanilla GAN :

 

C’est le type le plus simple GAN. Ici, le générateur et le discriminateur sont de simples perceptrons multicouches. Dans Vanilla GAN, l’algorithme est très simple, il essaie d’optimiser l’équation mathématique en utilisant une descente de gradient stochastique.

GAN conditionnel (CGAN) :

 

Le CGAN peut être décrit comme une méthode d’apprentissage en profondeur dans laquelle certains paramètres conditionnels sont mis en place. Dans CGAN, un paramètre supplémentaire «y» est ajouté au générateur pour générer les données correspondantes. Des étiquettes sont également placées dans l’entrée du discriminateur afin que ce dernier puisse distinguer les données réelles des données fausses générées.

Deep Convolutional GAN ​​(DCGAN) :

 

DCGAN est l’une des implémentations les plus populaires et les plus réussies du GAN. Il est composé de ConvNets, à la place de perceptrons multicouches. Les ConvNets sont implémentés sans pool maximum, qui est en fait remplacé par foulée convolutionnelle. De plus, les couches ne sont pas complètement connectées.

Pyramide laplacienne GAN (LAPGAN) :

 

La pyramide laplacienne est une représentation d’image inversible linéaire consistant en un ensemble d’images passe-bandes espacées d’une octave plus un résidu basse fréquence. Cette approche utilise plusieurs nombres de réseaux générateurs et discriminants et différents niveaux de la pyramide laplacienne. Cette approche est principalement utilisée, car elle produit des images de très haute qualité. L’image est d’abord échantillonnée au niveau de chaque couche de la pyramide, puis redimensionnée à chaque couche lors d’un passage en arrière, où l’image acquiert du bruit provenant du GAN conditionnel de ces couches jusqu’à ce qu’elle atteigne sa taille d’origine.

Super résolution GAN (SRGAN) :

 

SRGAN, comme son nom l’indique, est une manière de concevoir un GAN dans lequel un réseau neuronal profond est utilisé avec un réseau accusatoire afin de produire des images de résolution supérieure. Ce type de GAN est particulièrement utile pour la mise à l’échelle optimale des images natives à basse résolution afin d’améliorer ses détails, tout en minimisant les erreurs.

Quels sont les cas d’usage des GANs?

Génération et édition d’image

 

La plupart des logiciels de retouche d’images actuels ne nous donnent pas beaucoup de flexibilité pour apporter des modifications créatives aux images. Par exemple, supposons que vous souhaitiez changer l’apparence d’une personne de 90 ans en modifiant sa coiffure. Cela ne peut pas être fait par les outils d’édition d’image actuels. Mais deviner quoi ? À l’aide de GAN, nous pouvons reconstruire des images et tenter de changer radicalement l’apparence.

Il est même aujourd’hui possible de générer des images de personnes qui n’existent pas (https://thispersondoesnotexist.com/)

Utiliser les GAN pour la sécurité

 

La montée de l’Intelligence Artificielle a été merveilleuse pour la plupart des industries. Mais il existe une préoccupation réelle qui a occulté toute la révolution de l’IA : les cybermenaces. Même les réseaux de neurones profonds sont susceptibles d’être piratés.

Une préoccupation constante des applications industrielles est qu’elles doivent résister aux cyberattaques. Il y a beaucoup d’informations confidentielles sur la ligne ! Les GAN apportent une aide précieuse dans ce domaine, car ils répondent directement aux préoccupations des « attaques contradictoires ».

Ces attaques contradictoires utilisent diverses techniques pour tromper les architectures d’apprentissage en profondeur. Les GAN sont utilisés pour rendre les modèles d’apprentissage en profondeur existante plus robustes à ces techniques. Comment ? En créant davantage de faux exemples et en formant le modèle à les identifier. Truc assez intelligent.

Une technique appelée SSGAN est utilisée pour effectuer la stéganalyse des images et détecter les encodages nuisibles qui n’auraient pas dû être là.

Génération de données à l’aide de GAN

Qui parmi nous n’aimerait pas collecter plus de données pour construire notre modèle d’apprentissage en profondeur ? La disponibilité des données dans certains domaines est une nécessité, en particulier dans les domaines où des données d’apprentissage sont nécessaires pour modéliser des algorithmes d’apprentissage supervideepeeop. On pense ici au secteur de la santé.

Les GANs brillent à nouveau, car ils peuvent être utilisés pour générer des données synthétiques à des fins de supervision. C’est vrai ! Vous savez où aller la prochaine fois que vous aurez besoin de plus de données.

GAN pour la prévision d’attention

Lorsque nous voyons une image, nous avons tendance à nous concentrer sur une partie particulière (plutôt que sur l’ensemble de l’image). Ceci est appelé l’attention et est un trait humain important. Il serait certainement utile pour les entreprises de savoir où se tournerait une personne avant de pouvoir optimiser et mieux positionner leurs produits.

Par exemple, les concepteurs de jeux peuvent se concentrer sur une partie particulière du jeu pour améliorer les fonctionnalités et la rendre plus captivante.

GAN pour la génération d’objets 3D

 

Les concepteurs de jeux travaillent d’innombrables heures à recréer des avatars et des arrière-plans 3D afin de leur donner une sensation réaliste. Et laissez-moi vous assurer que la création de modèles 3D imaginée nécessite certainement beaucoup d’efforts. Cela semble-t-il irréaliste ? Ensuite, je vous suggère de regarder cette vidéo. Vous pourriez croire l’incroyable puissance des GAN, dans laquelle ils peuvent être utilisés pour automatiser l’ensemble du processus !

Bien sûr, cette liste est non exhaustive, car le champ d’application est très large.

Pour conclure :

Dans cet article, nous avons pu voir en profondeur le Generative Adversarial Networks ainsi que des exemples d’application pour illustrer l’importance la mise en place.

Avec l’apparition des GAN, la Data Science s’est dotée d’un outil ultra performant de création et s’attaque ainsi à ce qui semblait être un des derniers prés carrés de l’intelligence humaine. Les premières applications se sont surtout développées autour de la génération d’images, mais les possibilités de cette nouvelle technologie sont très nombreuses. Elle semble être un outil puissant au service de l’innovation produit.

Sources :