Divergence contrastée persistante pour les RBM

9

Lorsque nous utilisons l'algorithme d'apprentissage de CD persistant pour les machines Bolzmann restreintes, nous commençons notre chaîne d'échantillonnage Gibbs dans la première itération à un point de données, mais contrairement au CD normal, dans les itérations suivantes, nous ne recommençons pas sur notre chaîne. Au lieu de cela, nous commençons là où la chaîne d'échantillonnage de Gibbs dans l'itération précédente s'est terminée.

Dans l'algorithme CD normal, chaque itération évalue un mini-lot de points de données et calcule les chaînes d'échantillonnage de Gibbs à partir de ces points de données eux-mêmes.

Dans un CD persistant, devons-nous conserver les chaînes d'échantillonnage de Gibbs pour chaque point de données? Ou devrions-nous également conserver un mini-lot de chaînes d'échantillonnage Gibbs, qui a commencé à des points de données qui ne sont pas actuellement évalués dans l'itération actuelle?

Il me semble que conserver les chaînes d'échantillonnage de Gibbs pour chaque point de données sera trop lourd, mais d'un autre côté, il semble insuffisant de comparer les signaux de l'échantillon actuel avec les signaux après une longue chaîne de Gibbs qui n'a pas commencé au courant échantillon .

Angelorf
la source
@subha Cela semble contre-intuitif, mais il est en fait assez clair qu'il devrait s'agir d'une seule chaîne utilisée pour différentes données d'entrée. Jetez également un œil à deeplearning.net/tutorial/rbm.html . Là, il est indiqué que ce qui est fait n'est "pas de redémarrer une chaîne pour chaque exemple observé". deeplearning.net a beaucoup de bons exemples et d'explications simples.
Angelorf
@Angelorf pourriez-vous s'il vous plaît consulter ces instructions? j'utilise la version batch. donc pour le 1er lot, je trouve v0-h0-v1-h1.maintenant, nous trouvons des échantillons + ve et -ve et mettons à jour le gradient. Ensuite, pour le lot suivant, la chaîne gibbs commence à h1 du premier lot à la place de h0 du deuxième lot. Ai-je raison?
subha
@subha Je pense que c'est vrai, mais c'est exactement ce que je demande dans le message d'origine.
Angelorf
Quand j'aime ça, comment va-t-il reconstruire les données d'entrée proprement dites? J'ai essayé, il ne s'agit pas de reconstruire des données proprement dites.
subha

Réponses:

1

Le document original décrivant cela peut être trouvé ici

Dans la section 4.4, ils discutent des façons dont l'algorithme peut être implémenté. La meilleure implémentation qu'ils ont découverte initialement était de ne réinitialiser aucune chaîne de Markov, de faire une mise à jour complète de Gibbs sur chaque chaîne de Markov pour chaque estimation de gradient et d'utiliser un nombre de chaînes de Markov égal au nombre de points de données d'entraînement dans un mini lot.

La section 3 pourrait vous donner une idée de l'idée clé derrière PCD.

chaisebender
la source
0

Comme le dit le président, ils ne réinitialisent pas la chaîne pour la partie du gradient négatif.

Quelle est l'intuition derrière cela? Comme l'indique le document d' origine , pour les RBM, vous n'avez pas à réinitialiser la chaîne car il n'y a qu'une seule distribution à partir de laquelle vous devez échantillonner, par opposition à une distribution par point (dont vous pourriez avoir besoin pour les réseaux de croyances). Vous avez raison de penser que pour certains modèles, vous devrez peut-être vous souvenir de la chaîne par point.

Pour les méthodes contrastées: le terme négatif dans la mise à jour est sur une attente ou un échantillon selon une distribution, mais les RBM n'ont qu'une seule distribution (post-burn-in).

beelze-b
la source