#gan — Apprentissage profond
GAN : un faussaire contre un inspecteur
Ce que tu vas manipuler
- Bienvenue dans #gan. À l'écran, un plan vu de dessus : les points blancs sont les originaux (ici un anneau), les points roses sont les faux que produit un petit réseau G, le générateur — pour l'instant n'importe où. Le fond gris est la carte d'un second réseau D, le discriminateur : il hésite partout (50 %). Le jeu : G est un faussaire qui ne voit jamais les originaux, seulement le verdict de D ; D est un inspecteur qui voit vrais et faux et apprend à les distinguer. Chacun s'améliore contre l'autre, jusqu'à ce que l'inspecteur ne sache plus trancher — c'est le principe des GAN, qui ont produit les premiers visages synthétiques photoréalistes.
- Lance les vingt premiers tours :
/pas 20. À chaque tour, D voit 16 vrais et 16 faux et ajuste ses critères ; puis G reçoit le verdict de D sur ses faux, remonte le gradient à travers D jusqu'à ses propres poids, et corrige son tir. - Continue :
/pas 100. Les pointillés du panneau marquent les niveaux d'équilibre :ln 2 ≈ 0,69pour G et2·ln 2 ≈ 1,39pour D — ce qu'on obtient quand D répond 50 % partout. Une perte de D très basse veut dire que l'inspecteur gagne ; une perte de G qui monte, que le faussaire se fait prendre. - Encore
/pas 100. Observe l'aperçu à droite : la précision de D sur les vrais et sur les faux. Quand les deux tournent autour de 50 %, l'inspecteur ne fait plus mieux qu'une pièce de monnaie — c'est exactement ce qu'on veut. - Change les originaux :
/reel deux-bosses. Le faussaire garde ses réflexes d'anneau et l'inspecteur ses critères : rien n'est réinitialisé. - Voici le piège le plus connu des GAN. Tape
/effondrement: le faussaire va jouer 16 coups au pas maximal pour un seul coup, minuscule, de l'inspecteur. Autrement dit, G s'optimise contre un D presque figé. - Relance l'entraînement :
/pas 60. - À toi de jouer :
/effondrementpour couper le régime,/reel spiralepuis/pas 100(une forme plus dure à imiter),/bruit 1(un bruit à une seule dimension : G ne peut plus dessiner qu'une courbe),/lr-d 0.1(un inspecteur trop rapide : D devient sûr de lui et le gradient de G s'évanouit),/echantillon 300pour voir plus de faux,/graine 12pour une autre partie,/reinitpour repartir. Prochaine étape : le canal #tokenisation, premier canal du thème LLM — comment un modèle de langage découpe le texte avant même de l'apprendre.
Commandes du canal
/reel <anneau|deux-bosses|spirale|carre>— Change la distribution réelle à imiter (G et D conservés)./pas <1..100>— Itérations d'entraînement alterné : 2 coups de D puis 1 coup de G, par lots de 16./bruit <1..4>— Dimension du bruit latent z (réinitialise G, D conservé)./lr-g <0.001..0.1>— Pas d'apprentissage du générateur./lr-d <0.001..0.1>— Pas d'apprentissage du discriminateur./echantillon <50..300>— Nombre de faux affichés (même bruit z, prolongé ou tronqué)./graine <1..9999>— Nouvelle partie : autres réels, autres poids initiaux, mêmes réglages./effondrement— Arme (ou coupe) le régime qui provoque un effondrement de modes : lrG maximal, lrD minuscule, 16 coups de G par coup de D./reinit— Revient à l'anneau, d = 2, lrG = lrD = 0.02, 200 faux, réseaux neufs.
Glossaire
- GAN (réseau antagoniste génératif)
- Paire de réseaux entraînés l'un contre l'autre : un générateur fabrique des faux à partir de bruit, un discriminateur apprend à les distinguer des vrais. Le générateur ne voit jamais les données, seulement le verdict du discriminateur — et pourtant il finit par imiter leur distribution.
- Générateur
- Réseau
Gqui transforme un vecteur de bruitzen un échantillon (ici un point 2D, ailleurs une image). Il est entraîné à maximiser la probabilité que D se trompe : son gradient remonte à travers D jusqu'à ses propres poids. - Discriminateur
- Classifieur binaire
Dqui reçoit un échantillon et estime la probabilité qu'il soit vrai. Il est entraîné sur des vrais (cible 1) et des faux de G (cible 0). Sa carte de probabilités sert aussi de « signal d'erreur » au générateur. - Jeu à somme nulle / minimax
- Formulation du GAN : D maximise
ln D(x) + ln(1 − D(G(z))), G minimise la même quantité. Ce que gagne l'un, l'autre le perd. En pratique G optimise plutôt−ln D(G(z)), dite perte non saturante, qui donne un gradient utile même quand D domine. - Bruit latent
- Vecteur aléatoire
z(gaussien, dimensiond) qui sert d'entrée au générateur : c'est la seule source de diversité des faux. Deux z voisins donnent deux faux voisins ; la dimension de z borne la « forme » que G peut produire (une courbe si d = 1, une surface si d ≥ 2). - Effondrement de modes
- Défaut classique où G ne produit plus qu'un ou quelques échantillons (un seul « mode ») pour tous les z, parce qu'il a trouvé l'endroit que D note le mieux. La perte de G peut rester correcte : elle ne mesure pas la diversité. Ici on le repère à l'écart-type des faux qui s'écrase.
- Équilibre de Nash
- Situation où aucun des deux joueurs n'a intérêt à changer seul de stratégie. Pour un GAN idéal : G reproduit exactement la distribution des vrais et D répond 50 % partout ; les pertes valent alors
ln 2pour G et2·ln 2pour D. En pratique on ne fait que tourner autour. - Entraînement alterné
- On ne peut pas optimiser G et D en même temps : à chaque itération on fait quelques pas de D (G figé), puis un pas de G (D figé), sur de petits lots. Le rapport entre les deux vitesses (pas, nombre de coups) décide qui domine — et donc de la stabilité du jeu.
- Gradients évanescents du générateur
- Quand D devient trop bon, sa sigmoïde sature :
D(G(z)) ≈ 0partout et la dérivée qui revient vers G tend vers zéro. Le faussaire cesse d'apprendre alors qu'il est encore mauvais. La perte non saturante et un D pas trop rapide (lr-d modéré) limitent le problème. - GAN conditionnel
- Variante où G et D reçoivent en plus une information de contexte (une étiquette de classe, un texte, une image) : G apprend alors à produire un échantillon de cette catégorie. C'est la base des générateurs guidés (image à partir d'un croquis, d'un mot…).
Autres canaux du thème Apprentissage profond
- #optimiseurs — SGD, Momentum et Adam : la course vers le minimum.
- #batch-normalisation — Batch normalisation : garder les activations dans la bonne plage.
- #rnn-lstm — RNN et LSTM : se souvenir d'une séquence.
- #autoencodeur — Autoencodeur : compresser puis reconstruire.
- #transfer-learning — Apprentissage par transfert : repartir d'un réseau déjà entraîné.
- #gan — GAN : un faussaire contre un inspecteur