Comment fonctionne l' astuce de reparamétrage pour les autoencodeurs variationnels (VAE)? Existe-t-il une explication simple et intuitive sans simplifier les calculs sous-jacents? Et pourquoi avons-nous besoin du "truc"?
Comment fonctionne l' astuce de reparamétrage pour les autoencodeurs variationnels (VAE)? Existe-t-il une explication simple et intuitive sans simplifier les calculs sous-jacents? Et pourquoi avons-nous besoin du "truc"?
Réponses:
Après avoir lu les diapositives de l'atelier de Kingma sur les NIPS 2015 , je me suis rendu compte que nous avions besoin de l'astuce de reparamétrage pour pouvoir effectuer une rétro-propagation via un nœud aléatoire.
Intuitivement, sous sa forme initiale, l' échantillon Vaes à partir d' un noeud aléatoire qui est évaluée par le modèle paramétrique q ( z | & phiv , x ) de la vraie postérieure. Backprop ne peut pas circuler à travers un nœud aléatoire.
L'introduction d'un nouveau paramètre nous permet de reparamétrer z de manière à permettre à backprop de circuler à travers les nœuds déterministes.
Supposons que nous ayons une distribution normale paramétrée par θ , en particulier q θ ( x ) = N ( θ , 1 ) . Nous voulons résoudre le problème ci-dessous min θ Ceci est bien sûr un problème plutôt idiot et le θ optimalest évident. Cependant, ici, nous voulons simplement comprendre en quoi l’astuce de reparamétrage aide à calculer le gradient de cet objectif E q [ x 2 ] .
Voici un cahier IPython que j’ai écrit et qui examine la variance de ces deux méthodes de calcul des gradients. http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb
La réponse de Goker donne un exemple raisonnable des mathématiques de "l'astuce de reparamétrage", mais une certaine motivation pourrait être utile. (Je n'ai pas l'autorisation de commenter cette réponse; voici donc une réponse séparée.)
, qui peut être loin de l’optimum (par exemple, une valeur initiale choisie arbitrairement). Cela ressemble un peu à l’histoire de la personne ivre qui cherche ses clés près du réverbère (car c’est là où il peut voir / échantillonner) plutôt que près de là où il les a laissées.
J'espère que ça aide.
Permettez-moi d’abord d’expliquer pourquoi nous avons besoin d’une astuce de reparamétrage dans VAE.
VAE a encodeur et décodeur. Le décodeur prélève des échantillons au hasard à partir de Z ~ q (z∣ϕ, x) postérieur vrai . Pour implémenter un codeur et un décodeur en tant que réseau de neurones, vous devez effectuer une backpropagation via un échantillonnage aléatoire. Le problème est que backpropogation ne peut pas circuler à travers un nœud aléatoire. pour surmonter cet obstacle, nous utilisons la technique du reparamétrage.
Maintenant, venons à tromper. Puisque notre postérieur est normalement distribué, nous pouvons l'approcher d'une autre distribution normale. Nous approximons Z avec ε normalement distribué .
Mais comment est-ce pertinent?
Maintenant, au lieu de dire que Z est échantillonné à partir de q (z∣ϕ, x) , nous pouvons dire que Z est une fonction qui prend un paramètre (ε, (µ, L)) et que ces µ, L proviennent du réseau neuronal supérieur (codeur). . Par conséquent, tout ce dont nous avons besoin est des dérivées partielles par rapport à µ, L et ε ne sont pas pertinentes pour la prise de dérivés.
Je pensais que l’explication trouvée dans le cours Stanford CS228 sur les modèles graphiques probabilistes était très bonne. Vous pouvez le trouver ici: https://ermongroup.github.io/cs228-notes/extras/vae/
J'ai résumé / copié les parties importantes ici pour plus de commodité / ma propre compréhension (bien que je recommande fortement de vérifier le lien d'origine).
Si vous connaissez les estimateurs de fonction de score (je crois que REINFORCE n'en est qu'un cas particulier), vous remarquerez que c'est en gros le problème qu'ils résolvent. Cependant, l'estimateur de la fonction de score présente une variance élevée, ce qui entraîne souvent des difficultés pour l'apprentissage des modèles.
Par exemple, utilisons un q très simple à partir duquel nous échantillonnons.
Cela a moins de variance, pour des raisons non triviales. Voir la partie D de l'annexe ici pour une explication: https://arxiv.org/pdf/1401.4082.pdf
Nous avons notre modèle probabiliste. Et voulez récupérer les paramètres du modèle. Nous réduisons notre tâche à l'optimisation de la variation inférieure (VLB). Pour ce faire, nous devrions pouvoir faire deux choses:
Les auteurs suggèrent d'utiliser l'estimateur de Monte Carlo pour les deux. Et en fait, ils introduisent cette astuce pour obtenir un estimateur de gradient de Monte Carlo de VLB plus précis.
C'est juste une amélioration de la méthode numérique.
L'astuce de reparamétrage réduit considérablement la variance de l'estimateur MC pour le gradient. C'est donc une technique de réduction de la variance :