Intuition derrière la machine Boltzmann restreinte (RBM)

15

J'ai suivi le cours sur les réseaux neuronaux de Geoff Hinton sur Coursera et également l' introduction aux machines Boltzmann restreintes , mais je ne comprenais toujours pas l'intuition derrière les RBM.

Pourquoi devons-nous calculer l'énergie dans cette machine? Et à quoi sert la probabilité dans cette machine? J'ai aussi vu cette vidéo . Dans la vidéo, il vient d'écrire les équations de probabilité et d'énergie avant les étapes de calcul et ne semble les utiliser nulle part.

Pour ajouter à ce qui précède, je ne sais pas à quoi sert la fonction de vraisemblance?

Born2Code
la source
J'ai essayé de ranger la question, mais je pense qu'elle a besoin de plus de travail. Vous devez expliquer ce que vous ne comprenez, et plus précisément où vous êtes coincé, sinon la question est trop large.
Neil Slater
La seule chose qui est entrée dans la tête est qu'il y a trois étapes, d'abord la phase positive, puis la phase négative qui est suivie de la reconstruction des poids. Mais qu'en est-il des énergies et de la fonction de probabilité? quelle est l'utilité ici? et combien de fois nous devons faire ce processus (phase positive -> phase négative> reconstruction des poids)?
Born2Code

Réponses:

5

Les RBM sont une bête intéressante. Pour répondre à votre question et pour vous rafraîchir la mémoire, je vais dériver des RBM et parler de la dérivation. Vous avez mentionné que vous êtes confus quant à la probabilité, donc ma dérivation sera du point de vue d'essayer de maximiser la probabilité. Commençons donc.

Les RBM contiennent deux ensembles différents de neurones, visible et caché, je les dénoterai respectivement et h . Étant donné une configuration spécifique de v et h , nous cartographions l'espace de probabilité.vhvh

p(v,h)=eE(v,h)Z

Il y a encore deux choses à définir. La fonction de substitution que nous utilisons pour mapper d'une configuration spécifique à l'espace de probabilité est appelée la fonction d'énergie . La constante Z est un facteur de normalisation pour garantir que nous mappons réellement sur l'espace de probabilité. Passons maintenant à ce que nous recherchons vraiment; la probabilité d'un ensemble de neurones visibles, en d'autres termes, la probabilité de nos données. Z = v V h H e - E ( v , h ) p ( v )E(v,h)Z

Z=vVhHeE(v,h)
p(v)=hHp(v,h)=hHeE(v,h)vVhHeE(v,h)

Bien qu'il y ait beaucoup de termes dans cette équation, cela revient simplement à écrire les équations de probabilité correctes. Si tout va bien, jusqu'à présent, cela vous a aidé à réaliser pourquoi nous avons besoin fonction d'énergie pour calculer la probabilité, ou ce qui se fait le plus souvent la probabilité non normalisée . La probabilité non normalisée est utilisée car la fonction de partition Z est très coûteuse à calculer.p(v)ZZ

Passons maintenant à la phase d'apprentissage réelle des RBM. Pour maximiser la vraisemblance, pour chaque point de données, nous devons faire un pas de gradient pour faire . Pour obtenir les expressions de dégradé, il faut quelques acrobaties mathématiques. La première chose que nous faisons est de prendre le log de p ( v ) . Nous allons désormais opérer dans l'espace logarithmique des probabilités afin de rendre le calcul possible.p(v)=1p(v)

Prenons le gradient par rapport à les paramètres en p ( v )

log(p(v))=log[hHeE(v,h)]log[vVhHeE(v,h)]
p(v)

log(p(v))θ=1hHeE(v,h)hHeE(v,h)E(v,h)θ+1vVhHeE(v,h)vVhHeE(v,h)E(v,h)θ

Maintenant, je l'ai fait sur papier et j'ai écrit l'équation demi-finale pour ne pas perdre beaucoup d'espace sur ce site. Je vous recommande de dériver ces équations vous-même. Maintenant, je vais écrire quelques équations qui aideront à poursuivre notre dérivation. Notez que: , p ( v ) = h H p ( v , h ) et que p ( h | v ) =Zp(v,h)=eE(v,h)p(v)=hHp(v,h)p(h|v)=p(v,h)p(h)

log(p(v))θ=1p(v)hHp(v,h)E(v,h)θ+vVhHp(v,h)E(v,h)θlog(p(v))θ=hHp(h|v)E(v,h)θ+vVhHp(v,h)E(v,h)θ

Et voilà, nous avons dérivé l'estimation du maximum de vraisemblance pour les RBM, si vous voulez, vous pouvez écrire les deux derniers termes via l'attente de leurs termes respectifs (conditionnel et probabilité conjointe).

Notes sur la fonction énergétique et la stochasticité des neurones.

Comme vous pouvez le voir ci-dessus dans ma dérivation, j'ai laissé la définition de la fonction énergétique plutôt vague. Et la raison en est que de nombreuses versions différentes de RBM implémentent diverses fonctions énergétiques. Celui que Hinton décrit dans la conférence liée ci-dessus, et montré par @ Laurens-Meeus est:

E(v,h)=aTvbThvTWh.

Il pourrait être plus facile de raisonner sur les termes de gradient ci-dessus via le formulaire d'attente.

log(p(v))θ=Ep(h|v)E(v,h)θ+Ep(v,h)E(v,h)θ

L'attente du premier terme est en fait très facile à calculer, et c'était le génie derrière les RBM. En restreignant la connexion, l'attente conditionnelle devient simplement une propagation vers l'avant de la RBM avec les unités visibles bloquées. Il s'agit de la soi-disant phase de réveil des machines Boltzmann. Maintenant, le calcul du deuxième terme est beaucoup plus difficile et généralement des méthodes de Monte Carlo sont utilisées pour le faire. Écriture du gradient via la moyenne des courses de Monte Carlo:

log(p(v))θE(v,h)θp(h|v)+E(v,h)θp(v,h)

Le calcul du premier terme n'est pas difficile, comme indiqué ci-dessus, donc Monte-Carlo se fait sur le second terme. Les méthodes de Monte Carlo utilisent un échantillonnage aléatoire successif de la distribution, pour calculer l'espérance (somme ou intégrale). Maintenant, cet échantillonnage aléatoire dans les RBM classiques est défini comme définissant une unité sur 0 ou 1 sur la base de sa probabilité de manière stochastique, en d'autres termes, obtenez un nombre uniforme aléatoire, s'il est inférieur à la probabilité des neurones, définissez-le sur 1, s'il est supérieur à la mettre à 0.

Armen Aghajanyan
la source
Comment pouvons-nous également créer des couches binaires cachées? Bcoz après l'opération de la fonction d'activation, nous obtiendrions des valeurs comprises entre 0 et 1.
Born2Code
Cela se fait généralement en seuillant l'activation. Tout ce qui est supérieur à 0,5 deviendrait 1, tout ce qui serait en dessous serait nul.
Armen Aghajanyan
Mais dans ce lien , dans la section 3.1: Hinton a déclaré "l'unité cachée s'active si cette probabilité est supérieure à un nombre aléatoire uniformément réparti entre 0 et 1". Qu'est-ce que cela signifie réellement? Et aussi dans ce lien , ils disent "Alors la jième unité est allumée si en choisissant s un nombre aléatoire uniformément réparti entre 0 et 1 nous constatons que sa valeur est inférieure à sig [j]. Sinon, elle est éteinte." Je n'ai pas compris ça.
Born2Code
????? Comment dire si cette unité particulière est allumée ou éteinte?
Born2Code
J'ai ajouté une modification. Je suggère de lire sur les méthodes de Monte Carlo car la stochasticité de cet algorithme en est dérivée.
Armen Aghajanyan
5

En plus des réponses existantes, je voudrais parler de cette fonction énergétique, et de l'intuition derrière cela un peu. Désolé si c'est un peu long et physique.

La fonction énergétique décrit un modèle dit d' Ising , qui est un modèle de ferromagnétisme en termes de mécanique statistique / mécanique quantique. En mécanique statistique, nous utilisons un soi-disant opérateur hamiltonien pour décrire l'énergie d'un système de mécanique quantique. Et un système essaie toujours d'être dans l'état avec l'énergie la plus basse.

σkhijJij

H^=i,jJijσiσjμjhjσj
H^σ1=+1,σ2=1,...TpiiEi
pi=exp(Ei/kT)iexp(Ei/kt)

Qu'est-ce que la RBM a à voir avec ce modèle de ferromagnétisme mécanique quantique?

Nous devons utiliser une quantité physique finale: l'entropie. Comme nous le savons de la thermodynamique, un système va s'installer dans l'état avec l'énergie minimale, ce qui correspond également à l'état avec l'entropie maximale.

HXX

H(X)=iP(xi)logP(xi)
XH

Enfin , c'est là que nous revenons aux RBM: Fondamentalement, nous voulons que cette RBM code autant d' informations que possible. Donc, comme nous devons maximiser l'entropie (théorique de l'information) dans notre système RBM. Comme proposé par Hopfield en 1982, nous pouvons maximiser l'entropie théorique de l'information exactement comme l'entropie physique: en modélisant la RBM comme le modèle d'Ising ci-dessus, et en utilisant les mêmes méthodes pour minimiser l'énergie. Et c'est pourquoi nous avons besoin de cette étrange fonction d'énergie dans un RBM!

La belle dérivation mathématique dans la réponse d'Armen Aghajanyan montre tout ce que nous devons faire, pour minimiser l'énergie, maximisant ainsi l'entropie et stockant / économisant autant d'informations que possible dans notre RBM.

PS: S'il vous plaît, chers physiciens, pardonnez toutes les inexactitudes dans la dérivation de cet ingénieur. N'hésitez pas à commenter ou à corriger des inexactitudes (voire des erreurs).

hbaderts
la source
J'ai vu cette vidéo , regardez la vidéo à partir de ce point. comment obtenez-vous ce nombre échantillonné? si nous venons d'exécuter rand () dans matlab et de l'obtenir? puis ce serait différent pour chaque h (i). Oh non! Je ne pense pas que la machine apprenne correctement.
Born2Code
@ Born2Code c'est une autre question. Pouvez-vous l'afficher en tant que nouvelle question sur ce site? Veuillez essayer d'ajouter les équations dont vous parlez à la nouvelle question et expliquer les parties que vous ne comprenez pas.
hbaderts
link
Born2Code
0

La réponse de @Armen m'a donné beaucoup d'idées. Une question n'a cependant pas reçu de réponse.

vvh

E(v,h)=aTvbThvTWh

abW

Laurens Meeus
la source
Comment pouvons-nous également créer des couches binaires cachées? Bcoz après l'opération de la fonction d'activation, nous obtiendrions des valeurs comprises entre 0 et 1.
Born2Code
hvh_bin = (rand() < h_val) ? 1 : 0
@NeilSlater: mais pourquoi un nombre aléatoire? Aussi, si l'aléatoire doit être généré pour chaque itération ou le même nombre doit être utilisé pour toutes les itérations? un doute plus sérieux, combien d'itérations doivent être faites? J'ai un ensemble d'entraînement V, qui n'a qu'un seul vecteur, c'est-à-dire v1. Avec la v1, combien de fois devrais-je avoir à répéter?
Born2Code
@NeilSlater: Un autre doute est de savoir si le même nombre aléatoire doit être comparé à toutes les valeurs de la couche cachée? Je sais que c'est une question tellement idiote mais quand même
Born2Code
1
C'est un nombre aléatoire car c'est ainsi que vous résolvez les probabilités en valeurs binaires. C'est un nombre différent pour chaque neurone à l'intérieur hou v- vous échantillonnez un vecteur de valeurs binaires pour hou v, afin de générer un exemple que le réseau "croit" qu'il existe - c'est-à-dire un exemple qui a une grande chance statistique d'être représentatif de la ensemble d'entraînement. Au cours de la formation, vous déterminez dans quelle mesure il correspond à un exemple de formation existant et ajustez les poids en conséquence.
Neil Slater