GAN au-delà de la génération: 7 cas d'utilisation alternatifs

https://sigmoidal.io/beginners-review-of-gan-architectures/

Salut à tous!
Comme beaucoup de personnes qui suivent les progrès de l’intelligence artificielle, je ne pouvais pas ignorer les progrès récents en matière de modélisation générative, en particulier le succès rencontré par les réseaux de confrontation générative (GAN) en génération d’images. Regardez ces exemples: ils se distinguent à peine des vraies photos!

Échantillons de BigGAN: https://openreview.net/pdf?id=B1xsqj09Fm

Les progrès de la génération de visages de 2014 à 2018 sont également remarquables:

Je suis très enthousiasmé par ces résultats, mais mon sceptique intérieur doute toujours de leur utilité et de leur applicabilité au sens large. J'avais déjà ouvert cette question dans ma note Facebook:

En gros, je me suis "plaint" qu'avec toute la puissance des modèles génératifs, nous ne les utilisions pas vraiment pour quelque chose de plus pratique que la génération de visages haute résolution ou de hamburgers. Bien sûr, il y a des entreprises qui peuvent être basées directement sur la génération d'images ou le transfert de style (comme la génération de personnages ou de niveaux dans l'industrie du jeu, le transfert de style de vraies photos à des avatars d'anime), mais je recherchais davantage de domaines où les GAN et autres les modèles peuvent être appliqués. Je voudrais également me rappeler qu'avec les modèles génératifs, nous pouvons générer non seulement des images, mais également du texte, des sons, des voix, de la musique, des données structurées telles que des niveaux de jeu ou des molécules de médicaments. Il existe également un blog incroyable avec des applications similaires à des générations, nous nous limiterons ici à des exemples où la synthèse n'est pas un objectif principal.

Génération de niveau de jeu avec RNN

Dans cet article, je présente 7 cas d'utilisation alternatifs. Avec certains d’entre eux, j’ai déjà travaillé personnellement et je peux confirmer leur utilité, d’autres sont en recherche, mais cela ne veut pas dire qu’ils ne valent pas la peine d’essayer. Tous ces exemples d'utilisation de modèles génératifs pas nécessairement pour la création peuvent s'appliquer à différents domaines et à différentes données, car notre objectif principal ne sera pas de générer quelque chose de réaliste, mais d'exploiter la connaissance interne des réseaux de neurones pour de nouvelles tâches.

1. Augmentation des données

L’application la plus évidente est peut-être de former un modèle pour générer de nouveaux échantillons à partir de nos données afin d’accroître notre ensemble de données. Comment vérifier si cette augmentation a vraiment aidé quelque chose? Eh bien, il existe deux stratégies principales: nous pouvons former notre modèle à partir de «fausses» données et vérifier son efficacité sur des échantillons réels. Et au contraire: nous formons notre modèle sur des données réelles pour effectuer une tâche de classification et uniquement après avoir vérifié son efficacité sur les données générées (les fans de GAN peuvent reconnaître le score de création ici). Si cela fonctionne bien dans les deux cas - vous pouvez ajouter des échantillons du modèle génératif à vos données réelles et les recycler à nouveau - vous devriez vous attendre à un gain de performance. Pour rendre cette approche encore plus puissante et flexible, consultez l’application n ° 6.

NVIDIA a montré un exemple étonnant de cette approche en action: ils ont utilisé les GAN pour compléter les données de tomodensitométrie cérébrale médicale avec différentes maladies et ont montré que les performances de classification utilisant uniquement une augmentation classique des données produisaient une sensibilité de 78,6% et une spécificité de 88,4%. En ajoutant l'augmentation des données synthétiques, les résultats ont été portés à 85,7% de sensibilité et à 92,4% de spécificité.

https://arxiv.org/pdf/1803.01229.pdf

2. Protection de la vie privée

Les données de nombreuses entreprises peuvent être secrètes (telles que des données financières qui rapportent de l'argent), confidentielles ou sensibles (données médicales contenant des diagnostics de patients). Mais nous avons parfois besoin de le partager avec des tiers, tels que des consultants ou des chercheurs. Si nous voulons simplement partager une idée générale de nos données comprenant les principaux modèles, détails et formes des objets, nous pouvons utiliser des modèles génératifs directement, comme dans le paragraphe précédent, pour donner des exemples de données à partager avec d’autres personnes. De cette façon, nous ne partagerons aucune donnée confidentielle exacte, mais seulement quelque chose qui lui ressemble.

Le cas le plus difficile est lorsque nous voulons partager des données en secret. Bien sûr, nous avons différents schémas de cryptage, tels que le cryptage homomorphique, mais ils présentent des inconvénients connus, tels que le masquage de 1 Mo d'informations dans du code de 10 Go. En 2016, Google a ouvert une nouvelle voie de recherche sur l'utilisation du cadre concurrentiel GAN ​​pour le problème de cryptage, où deux réseaux devaient concurrencer pour créer le code et le craquer:

https://towardsdatascience.com/adversarial- neural-cryptography-can-solve-the-biggest-friction-point-in-modern-ai-cc13b337f969

Mais le meilleur point n'est pas l'efficacité du code obtenu ou du mot à la mode «AI» dans un autre domaine. Nous devons nous rappeler que les représentations, obtenues par les réseaux de neurones, contiennent encore très souvent les informations les plus utiles sur les données d'entrée (certaines sont même formées directement à cette information comme des auto-encodeurs) et à partir de ces données compressées, nous pouvons toujours effectuer une classification / régression / clustering. ou ce que nous voulons. Si nous remplaçons «compressé» par «crypté», l’idée est claire: c’est un moyen étonnant de partager des données avec des tiers sans rien afficher sur le jeu de données. C’est beaucoup plus fort que l’anonymisation ou même la génération d’échantillons factices et peut être une prochaine grande chose (avec utiliser blockchain bien sûr, comme déjà fait Numerai)

3. Détection d'anomalies

Les principaux modèles génératifs, tels que le VAE (Variation Autoencoder) ou le GAN, se composent de deux parties. VAE possède un codeur et un décodeur, dont le premier modélise essentiellement la distribution et le second reconstruit à partir de celle-ci. Le GAN consiste en un générateur et un discriminateur, dans lequel le premier modèle la distribution et le second juge s’il est proche des données de train. Comme nous pouvons le constater, elles sont assez similaires d’une certaine manière - il existe une partie modélisation et évaluation (dans VAE, nous pouvons considérer la reconstruction comme une sorte de jugement). Partie modélisation supposée apprendre la distribution des données. Qu'adviendra-t-il de la partie qui juge si nous lui donnons un échantillon qui ne provient pas de la distribution de la formation? Si le GAN est bien formé, le discriminateur nous indiquera 0 et l'erreur de reconstruction de la VAE sera supérieure à la moyenne des données d'entraînement. Le voici: notre détecteur d’anomalies non surveillé, facile à entraîner et à évaluer. Et nous pouvons l’alimenter avec des stéroïdes comme les distances statistiques si nous le souhaitons (Wasserstein GAN). Dans cet article, vous pouvez trouver un exemple de GAN utilisé pour la détection d'anomalie et ici d'un auto-encodeur. J'ajoute également mon propre croquis d'un détecteur d'anomalie basé sur un autoencodeur pour les séries chronologiques écrites en keras:

4. Modélisation discriminante

L’apprentissage en profondeur ne fait que mapper les données d’entrée dans un espace où elles sont plus faciles à séparer ou à expliquer par de simples modèles mathématiques tels que la SVM ou la régression logistique. Les modèles génératifs font également leur propre mappage, commençons par les VAE. Les autoencodeurs mappent l'échantillon d'entrée dans un espace latent significatif et nous pouvons former un modèle directement sur celui-ci. Celà a-t-il un sens? Est-ce différent d'utiliser simplement des couches d'encodeur et d'apprendre à un modèle à effectuer directement une classification? Il est en effet. L'espace latent de l'auto-codeur est une réduction de dimension non linéaire complexe et, dans le cas d'un auto-codeur variationnel, également une distribution multivariée, ce qui peut être bien meilleur pour démarrer l'initialisation afin de former un modèle discriminant que pour une initialisation aléatoire.

Les GAN sont un peu plus difficiles à utiliser pour d'autres tâches. Ils sont conçus pour générer des échantillons à partir de semences aléatoires et ne s’attendent à aucune entrée. Mais nous pouvons toujours les exploiter en tant que classificateurs, au moins de deux manières. La première, qui a déjà fait l’objet de recherches, utilise le discriminateur pour classer un échantillon généré dans différentes classes tout en indiquant si c’est un faux ou un faux. On peut s'attendre à ce que le classifieur obtenu soit mieux régularisé (car il a été confronté à différents types de bruits et de perturbations des données d'entrée) et à une classe supplémentaire pour les valeurs aberrantes / anomalies:

https://towardsdatascience.com/semi-supervised-learning-with-gans-9f3cb128c5e

Deuxièmement, l’approche injustement oubliée de la classification avec le théorème de Bayes, où nous modélisons p (c_k | x) à partir de p (x | c_k) (exactement ce que fait le GAN conditionnel!) Et les prieurs p (x), p (c_k). La principale question est de savoir si les GAN apprennent réellement la distribution des données?, Et cela fait l’objet de discussions dans certaines études récentes.

5. Adaptation du domaine

C'est l'un des plus puissants, pour moi. En pratique, nous n’avons presque jamais la même source de données pour former les modèles et les exécuter dans un environnement réel. Dans la vision par ordinateur, différentes conditions d'éclairage, réglages de l'appareil photo ou météo peuvent rendre un modèle même très précis inutile. En NLP / analyse de la parole, l’argot ou l’accent peuvent ruiner les performances de votre modèle, formées sur un langage «grammaticalement correct». Dans le traitement du signal, il est fort probable que vous disposiez de dispositifs totalement différents pour capturer les données afin de former les modèles et la production. Mais nous pouvons aussi remarquer que les deux types de données sont très similaires. Et nous connaissons des modèles d’apprentissage automatique effectuant le mappage d’une condition à une autre en préservant le contenu principal, mais en modifiant les détails. Oui, je parle de transfert de style maintenant, mais à des fins moins créatives.

https://ml4a.github.io/ml4a/style_transfer/

Par exemple, si vous utilisez une application supposée fonctionner sur une sorte de caméra de vidéosurveillance, mais que vous avez entraîné votre modèle sur des images haute résolution, vous pouvez essayer d’utiliser les GAN pour prétraiter les images avec atténuation et optimisation. Exemple plus radical que je peux donner à partir de la zone de traitement du signal: il existe de nombreux jeux de données liés aux données de l’accéléromètre des téléphones mobiles qui décrivent les différentes activités des personnes. Mais que se passe-t-il si vous souhaitez appliquer vos modèles formés aux données du téléphone sur le bracelet? Les GAN peuvent essayer de vous aider à traduire différents types de mouvements. En général, les modèles génératifs qui effectuent la génération non à partir de bruit, mais certains préalables prédéfinis peuvent vous aider pour l’adaptation de domaine, les changements de covariance et d’autres problèmes liés aux différences de données.

6. Manipulation des données

Nous avons parlé de transfert de style dans le paragraphe précédent. Ce que je n’aime pas vraiment, c’est le fait que c’est une fonction de mappage qui fonctionne sur l’entrée entière et qui la change tout. Et si je veux juste changer le nez sur une photo? Ou changer la couleur d'une voiture? Ou remplacer des mots dans un discours sans le changer complètement? Si nous voulons faire cela, nous supposons déjà que notre objet peut être décrit avec un ensemble fini de facteurs, par exemple, un visage est une combinaison d'yeux, de nez, de cheveux, de lèvres, etc., et ces facteurs ont leurs propres attributs , taille etc). Et si nous pouvions mapper nos pixels avec une photo sur certains… où nous pouvons simplement ajuster ces facteurs et rendre le nez plus grand ou plus petit? Certains concepts mathématiques le permettent: hypothèse multiple et représentation démêlée. La bonne nouvelle pour nous est que les auto-encodeurs et, probablement, les GAN nous permettent de modéliser la distribution de manière à ce qu’il s’agisse d’une combinaison de ces facteurs.

https://houxianxu.github.io/assets/project/dfcvae

7. Entraînement au combat

Vous pouvez être en désaccord avec l’ajout du paragraphe sur les attaques sur les modèles d’apprentissage automatique, mais il a tout à faire avec les modèles génératifs (les algorithmes d’attaque contradictoires sont en effet très simples) et les algorithmes contradictoires (puisqu’un modèle est en concurrence avec un autre). Peut-être connaissez-vous un concept d’exemples contradictoires: de petites perturbations dans l’entrée du modèle (pouvant même atteindre un pixel dans l’image) qui entraînent des performances totalement erronées. Il existe différentes manières de les combattre, et l’une des plus fondamentales est la formation contradictoire: il s’agit essentiellement de tirer parti des exemples contradictoires pour créer des modèles encore plus précis.

https://blog.openai.com/adversarial-example-research/

Sans trop entrer dans les détails, cela signifie que nous avons toujours un jeu à deux joueurs: un modèle accusatoire (qui crée simplement des perturbations d’entrée avec certains epsilon) qui doit maximiser son influence et il existe un modèle de classification qui doit minimiser ses pertes. Cela ressemble beaucoup à un GAN, mais à des fins différentes: rendre un modèle plus stable aux attaques contradictoires et améliorer ses performances grâce à une sorte d'augmentation et de régularisation de données intelligentes.

À emporter

Dans cet article, nous avons vu plusieurs exemples montrant comment les GAN et certains autres modèles génératifs peuvent être utilisés pour autre chose que la création d’images, de mélodies ou de textes courts. Bien sûr, leur principal objectif à long terme sera de générer des objets du monde réel conditionnés par des situations appropriées, mais nous pouvons aujourd'hui exploiter leur capacité à modéliser des distributions et à apprendre des représentations utiles pour améliorer nos pipelines d'IA actuels, sécuriser nos données, trouver des anomalies ou nous adapter à davantage. cas du monde réel. J'espère que vous les trouverez utiles et que vous les appliquerez dans vos projets. Restez à l'écoute!

P.S.
Suivez-moi aussi sur Facebook pour les articles sur l'IA qui sont trop courts pour Medium, sur Instagram pour vos contenus personnels et sur Linkedin!