Réseau antagoniste génératif (Generative adversarial Network) - Deep learning -

Reseau-antagoniste-generatif-Generative-adversarial-Network

Le réseau antagoniste génératif est type de réseau de neurones inventé en 2014 par Ian Goodfellow, l'un des auteurs du célèbre livre : deep learning consultable légalement via le lien suivant :https://www.deeplearningbook.org/ ).

Ce réseau de neurones a pour particularité de pouvoir générer de données, informations qui n'existe pas à partir de quasiment rien si ce n'est un bon entraînement avec une bonne base contenant le type de données que l'on souhaite générer. À titre d'exemple, on peut parler des deep fake qui sont maintenant bien plus largement connus qu'a leurs commencements et qui permette de fausser des images, mais surtout de vidéos avec un taux de ressemblance à la réalité quasiment surréaliste. 

Par ailleurs, ces derniers ont été repris pour faire dire ou encore faire faire n'importe quoi à des personnalités célèbres très connues telles que Barack OBAMA à qui des hackers avec concocter avec les GAN une supervidéo ou il traitait son successeur de "deep shit" qui signifie merde profonde en français (Les hackers y ont probablement vu un jeu de mot avec deep learning). Ou encore le célèbre cas de l'actrice Scarlett Johannson à qui l'on avait imposé son visage sur des actrices célèbres de vidéo pour adulte. Je ne vous dis pas le scandale, et le désarroi de cette actrice face à cette situation. 

OK, donc c'est bon pour cette introduction, j'espère qu'elle vous aura permis de vous mettre en bouche plus ou moins une idée des potentialités offertes par ce type de réseau de neurones. Maintenant on va passer à la partie que généralement mes étudiants aiment le moins, j'ai nommé la partie technique. 

Mais avant cela, je vous conseille vivement d'aller voir ce que j'ai écrit sur les réseaux de neurones sur cette page : Réseaux de neurones et si vous ne connaissez pas le perceptron multicouche, une petite visite sur cette page : Perceptron multicouche ne vous fera pas de mal.


Principe de fonctionnement des réseau antagoniste génératif  -Generative adversarial Network (GAN)

Let's go !

L'idée derrière les réseaux antagonistes génératifs est de partir de deux réseaux de neurones totalement dumb si vous me permettez l'expression ou en français un peu plus courants ne connaissant que dalle. C'est-à-dire qu'aucun de ces deux réseaux ne sera préalablement entraîné, l'idée peut paraître assez saut grenu, mais marche assez bien dans la réalité dans le sens ou les deux réseaux vont être entraîné en même temps.

Comment ça marche donc tout ça ? 

On va constituer une base de données contenant des exemples des données que l'on souhaite imiter par exemple des images de chien si l'on veut créer des images de chiens, des vidéos de chat si l'on veut créer des vidéos de chat. Et l'idée c'est que parmi les 2 réseaux de neurones, il y en aura un que l'on va nommer le discriminateur et à qui l'on va envoyer 1 coup sur 2 un exemple de cette base et lui dire que cet exemple est un vrai. L'autre coup c'est le second réseau de neurones qui va créer un exemple (selon le type de données que vous avez choisi d'imiter) qui sera envoyé au discriminateur sauf que ce coup la, nous allons bien expliciter au discriminateur qu'il s'agit d'un fake. Ce second réseau  de neurones est appelé générateur.

Après ce process, si le discriminateur s'est trompé en confondant les exemples vrais et les exemples faux, il est amélioré via la rétropropagation du gradient afin de ne plus se tromper. Sinon si c'est l'inverse, c'est le générateur qui sera amélioré afin qu'il génère des données encore plus réalistes.

Ci-dessous, je vous ai fait un schéma afin que vous voyiez un peu plus en profondeur à quoi ressemble un GAN.



Vous remarquerez que sur ce schéma, j'ai rajouté deux éléments, une entrée "Petit chien blanc mignon" et un module appelé encodeur. C'est parce que ce qui est vraiment cool avec les GAN, ce n'est pas tant que ça de générer des données, mais c'est de générer des données ressemblant à ce que l'on souhaite avoir comme données. C'est pourquoi, généralement, les GAN seront couplés avec un module d'entrée qui indiquera la sortie souhaitée. 






Entraînement des réseaux antagonistes génératif :

Au départ ni le générateur ni le discriminateur ne sont entraînés.

Les deux blocs suivants d’instruction vont être répétés chacun à leur tour: 

Block 1 :

Une image dans la base de données image est choisi 

elle est envoyée au discriminateur 

si l’image est une image réelle et que le discriminateur répond que c’est un fake les poids du discriminateur sont réévalués

Block 2 :

le générateur reçoit en entrée un vecteur de caractéristique

il construit une image

le discriminateur reçoit en entrée l’image construite par le générateur 

si le discriminateur répond que c’est une image réelle alors que c’est un fake les poids de celui-ci sont réévalués 

sinon si le discriminateur répond que c’est un fake alors ce sont les poids du générateur qui sont réévalués sont ceux du discriminateur. Selon les poids du discriminateur. Via une rétropropagation du gradient.


Exemples d'applications des Réseau antagoniste génératif 






Towards the Automatic Anime Characters Creation with Generative Adversarial Networks




StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks by Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang, Xiaogang Wang, Xiaolei Huang, Dimitris Metaxas.





Écrivez quelque chose ... 

 

.