Intuición detrás de la máquina de Boltzmann restringida (RBM)


15

Realicé el curso de redes neuronales de Geoff Hinton en Coursera y también a través de la introducción a las máquinas de boltzmann restringidas , pero aún no entendía la intuición detrás de las RBM.

¿Por qué necesitamos calcular la energía en esta máquina? ¿Y de qué sirve la probabilidad en esta máquina? También vi este video . En el video, acaba de escribir las ecuaciones de probabilidad y energía antes de los pasos de cálculo y no parece usarlo en ningún lado.

Además de lo anterior, no estoy seguro de para qué sirve la función de probabilidad.


He tratado de ordenar la pregunta, pero creo que necesita más trabajo. Es necesario explicar lo que no entiende, y más concretamente en el que está atascado, de lo contrario, la pregunta es demasiado amplia.
Neil Slater

Lo único que se metió en la cabeza es que hay tres pasos, primero la fase positiva, luego la fase negativa, seguida de la reconstrucción de los pesos. Pero, ¿qué pasa con las energías y la función de probabilidad? ¿De qué sirve aquí? ¿Y cuántas veces tenemos que hacer este proceso (fase positiva -> fase negativa> reconstrucción de pesas)?
Born2Code

Respuestas:


5

Los RBM son una bestia interesante. Para responder a su pregunta y refrescar mi memoria sobre ellos, derivaré RBM y hablaré sobre la derivación. Usted mencionó que está confundido sobre la probabilidad, por lo que mi derivación será desde la perspectiva de tratar de maximizar la probabilidad. Vamos a empezar.

Las RBM contienen dos conjuntos diferentes de neuronas, visibles y ocultas, las denominaré y h respectivamente. Dada una configuración específica de v y h , le asignamos el espacio de probabilidad.vhvh

pag(v,h)=mi-mi(v,h)Z

Hay un par de cosas más para definir. La función sustituta que usamos para mapear desde una configuración específica al espacio de probabilidad se llama función de energía . La constante Z es un factor de normalización para garantizar que realmente asignemos al espacio de probabilidad. Ahora vamos a lo que realmente estamos buscando; la probabilidad de un conjunto de neuronas visibles, en otras palabras, la probabilidad de nuestros datos. Z = v V h H e - E ( v , h ) p ( v )mi(v,h)Z

Z=vVhHmi-mi(v,h)
p(v)=hHp(v,h)=hHeE(v,h)vVhHeE(v,h)

Aunque hay muchos términos en esta ecuación, simplemente se reduce a escribir las ecuaciones de probabilidad correctas. Con suerte, hasta ahora, esto ha ayudado a darse cuenta por qué necesitamos función de energía para calcular la probabilidad, o lo que se hace por lo general más la probabilidad no normalizada . La probabilidad no normalizada se usa porque la función de partición Z es muy costosa de calcular.p(v)ZZ

Ahora pasemos a la fase de aprendizaje real de los RBM. Para maximizar la probabilidad, para cada punto de datos, tenemos que dar un paso de gradiente para hacer que . Para obtener las expresiones de degradado, se necesitan algunas acrobacias matemáticas. Lo primero que hacemos es tomar el registro de p ( v ) . Estaremos operando en el espacio de probabilidad de registro a partir de ahora para que las matemáticas sean factibles.p(v)=1p(v)

Tomemos el gradiente con respecto a los parámetros en p ( v )

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

Iniciar sesión(pag(v))θ=-1hHmi-mi(v,h)hHmi-mi(v,h)mi(v,h)θ+1vVhHmi-mi(v,h)vVhHmi-mi(v,h)mi(v,h)θ

Ahora hice esto en papel y escribí la ecuación semifinal para no desperdiciar mucho espacio en este sitio. Le recomiendo que obtenga estas ecuaciones usted mismo. Ahora escribiré algunas ecuaciones que ayudarán a continuar nuestra derivación. Tenga en cuenta que: ,p(v)= h H p(v,h)y quep(h|v)=Zpag(v,h)=mi-mi(v,h)pag(v)=hHpag(v,h)pag(hEl |v)=pag(v,h)pag(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)θ

Y ahí vamos, derivamos la estimación de máxima verosimilitud para RBM, si lo desea puede escribir los dos últimos términos a la espera de sus respectivos términos (condicional y probabilidad conjunta).

Notas sobre la función energética y la estocasticidad de las neuronas.

Como puede ver arriba en mi derivación, dejé la definición de la función de energía bastante vaga. Y la razón para hacerlo es que muchas versiones diferentes de RBM implementan varias funciones de energía. La que Hinton describe en la conferencia vinculada anteriormente, y mostrada por @ Laurens-Meeus es:

E(v,h)=aTvbThvTWh.

Puede ser más fácil razonar sobre los términos de gradiente anteriores a través del formulario de expectativa.

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

La expectativa del primer término es realmente fácil de calcular, y ese fue el genio detrás de las RBM. Al restringir la conexión, la expectativa condicional simplemente se convierte en una propagación directa del RBM con las unidades visibles fijadas. Esta es la llamada fase de estela en las máquinas de Boltzmann. Ahora calcular el segundo término es mucho más difícil y generalmente se utilizan los métodos de Monte Carlo para hacerlo. Escribir el gradiente a través del promedio de carreras de Monte Carlo:

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

Calculating the first term is not hard, as stated above, therefore Monte-Carlo is done over the second term. Monte Carlo methods use random successive sampling of the distribution, to calculate the expectation (sum or integral). Now this random sampling in classical RBM's is defined as setting a unit to be either 0 or 1 based on its probability stochasticly, in other words, get a random uniform number, if it is less than the neurons probability set it to 1, if it is greater than set it to 0.


How do we make hidden layer binary too? Bcoz after the activation function operation, we would be getting values in the range between 0 and 1.
Born2Code

This is usually done by thresholding the activation. Anything above 0.5, would become 1, anything below would be zero.
Armen Aghajanyan

Pero en este enlace , en la sección 3.1: Hinton ha declarado "la unidad oculta se enciende si esta probabilidad es mayor que un número aleatorio distribuido uniformemente entre 0 y 1". ¿Qué significa esto realmente? Y también en este enlace , dicen "Entonces la unidad j está encendida si al elegir un número aleatorio distribuido uniformemente entre 0 y 1 encontramos que su valor es menor que sig [j]. De lo contrario, está apagado". No entendí esto.
Born2Code

????? ¿Cómo decir si esa unidad en particular está encendida o apagada?
Born2Code

I've added an edit. I suggest reading up on Monte Carlo methods because the stochasticity of this algorithm is derived from there.
Armen Aghajanyan

5

In addition to the existing answers, I would like to talk about this energy function, and the intuition behind that a bit. Sorry if this is a bit long and physical.

The energy function describes a so-called Ising model, which is a model of ferromagnetism in terms of statistical mechanics / quantum mechanics. In statistical mechanics, we use a so-called Hamiltonian operator to describe the energy of a quantum-mechanical system. And a system always tries to be in the state with the lowest energy.

Now, the Ising model basically describes the interaction between electrons with a spin σk of either +1 or -1, in presence of an external magnetic field h. The interaction between two electrons i and j is described by a coefficient Jij. This Hamiltonian (or energy function) is

H^=i,jJijσiσjμjhjσj
where H^ denotes the Hamiltonian. A standard procedure to get from an energy function to the probability, that a system is in a given state (i.e. here: a configuration of spins, e.g. σ1=+1,σ2=1,...) is to use the Boltzmann distribution, which says that at a temperature T, the probability pi of the system to be in a state i with energy Ei is given by
pi=exp(Ei/kT)iexp(Ei/kt)
At this point, you should recognize that these two equations are the exact same equations as in the videos by Hinton and the answer by Armen Aghajanyan. This leads us to the question:

What does the RBM have to do with this quantum-mechanical model of ferromagnetism?

We need to use a final physical quantity: the entropy. As we know from thermodynamics, a system will settle in the state with the minimal energy, which also corresponds to the state with the maximal entropy.

As introduced by Shanon in 1946, in information theory, the entropy H can also be seen as a measure of the information content in X, given by the following sum over all possible states of X:

H(X)=iP(xi)logP(xi)
Now, the most efficient way to encode the information content in X, is to use a way that maximizes the entropy H.

Finally, this is where we get back to RBMs: Basically, we want this RBM to encode as much information as possible. So, as we have to maximize the (information-theoretical) entropy in our RBM-System. As proposed by Hopfield in 1982, we can maximize the information-theoretical entropy exactly like the physical entropy: by modelling the RBM like the Ising model above, and use the same methods to minimize the energy. And that is why we need this strange energy function for in an RBM!

The nice mathematical derivation in Armen Aghajanyan's answer shows everything we need to do, to minimize the energy, thus maximizing entropy and storing / saving as much information as possible in our RBM.

PS: Please, dear physicists, forgive any inaccuracies in this engineer's derivation. Feel free to comment on or fix inaccuracies (or even mistakes).


I saw this video, Just watch the video from that point. how do you get that sampled number? whether we have just run rand() in matlab and obtain it? and then it would be different for each h(i) . Oh nooo! I don't think machine will learn properly.
Born2Code

@Born2Code this is another question. Can you post it as a new question to this site? Please try to add the equations you are talking about to the new question, and explain what parts you don't understand.
hbaderts


0

The answer of @Armen has gave myself a lot of insights. One question hasn't been answered however.

The goal is to maximize the probability (or likelihood) of the v. This is correlated to minimizing the energy function related to v and h:

E(v,h)=aTvbThvTWh

Our variables are a, b and W, which have to be trained. I'm quite sure this training will be the ultimate goal of the RBM.


How do we make hidden layer binary too? Bcoz after the activation function operation, we would be getting values in the range between 0 and 1.
Born2Code

@Born2Code: The activation function gives you the probability that a neuron has value 1. Therefore to "make it binary", you sample from the probabilities calculated for either h or v - in other words you literally do something like h_bin = (rand() < h_val) ? 1 : 0 - this has to be done for each neuron, and each time you want a sample.
Neil Slater

@NeilSlater: but why a random number? Also, whether the random should be generated for each iteration or the same number should be used for all the iterations? one more serious doubt, how many iterations have to be done? I have a training set V, which has only one vector, i.e. v1. With v1, how many times should I have to iterate?
Born2Code

@NeilSlater: One more doubt is, whether the same random number is to be compared with all the values of hidden layer? I know this is such an idiotic question but still
Born2Code

1
Es un número aleatorio porque así es como se resuelven las probabilidades de valores binarios. Es un número diferente para cada neurona en el interior ho v: está muestreando un vector de valores binarios para ho v, para generar un ejemplo que la red "cree" que existe, es decir, un ejemplo que tiene una alta probabilidad estadística de ser representativo de conjunto de entrenamiento. Durante el entrenamiento, usted determina qué tan bien coincide con un ejemplo de entrenamiento existente y ajusta los pesos en consecuencia.
Neil Slater
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.