# Máquina de Boltzmann restringida

Una máquina de Boltzmann restringida (RBM) (también llamada modelo restringido de Sherrington-Kirkpatrick con campo externo o modelo estocástico restringido de Ising-Lenz-Little) es una red neuronal artificial estocástica generativa que puede aprender una distribución de probabilidad sobre su conjunto de entradas.
Las RBM fueron propuestas inicialmente por Paul Smolensky en 1986 con el nombre de Harmonium, y cobraron importancia después de que Geoffrey Hinton y sus colaboradores utilizaran algoritmos de aprendizaje rápido para ellos a mediados de la década de 2000. Los RBM han encontrado aplicaciones en la reducción de la dimensionalidad, la clasificación, el filtrado colaborativo, el aprendizaje de características, el modelado de temas, la inmunología e incluso la mecánica cuántica de muchos cuerpos. Pueden entrenarse de forma supervisada o no supervisada, dependiendo de la tarea.
Como su nombre indica, las RBM son una variante de las máquinas de Boltzmann, con la restricción de que sus neuronas deben formar un grafo bipartito:
* un par de nodos de cada uno de los dos grupos de unidades (denominados comúnmente unidades "visibles" y "ocultas", respectivamente) pueden tener una conexión simétrica entre ellos; y
* no hay conexiones entre los nodos de un grupo.
En cambio, las máquinas de Boltzmann "no restringidas" pueden tener conexiones entre las unidades ocultas. Esta restricción permite algoritmos de entrenamiento más eficientes que los disponibles para la clase general de máquinas de Boltzmann, en particular el algoritmo de divergencia contrastiva basado en el gradiente.
Las máquinas de Boltzmann restringidas también pueden utilizarse en redes de aprendizaje profundo. En concreto, las redes de creencias profundas pueden formarse "apilando" RBM y, opcionalmente, ajustando la red profunda resultante con descenso de gradiente y retropropagación.

## Estructura

El tipo estándar de RBM tiene unidades ocultas y visibles con valores binarios (booleanos), y consiste en una matriz de pesos $W$ del tamaño $m\times n$. Cada elemento de peso $(w_{i,j})$ de la matriz está asociada a la conexión entre la unidad visible (de entrada) $v_{i}$ y la unidad oculta $h_{j}$. Además, hay pesos de sesgo (compensaciones) $a_{i}$ para $v_{i}$ y $b_{j}$ para $h_{j}$. Dados los pesos y los sesgos, la energía de una configuración (par de vectores booleanos) (v,h) se define como:
$E(v,h)=-\sum _{i}a_{i}v_{i}-\sum _{j}b_{j}h_{j}-\sum _{i}\sum _{j}v_{i}w_{i,j}h_{j}$
o, en notación matricial
$E(v,h)=-a^{\mathrm {T} }v-b^{\mathrm {T} }h-v^{\mathrm {T} }Wh.$
Esta función de energía es análoga a la de una red de Hopfield. Al igual que en las máquinas de Boltzmann generales, la distribución de probabilidad conjunta para los vectores visible y oculto se define en términos de la función de energía de la siguiente manera,
$P(v,h)={\frac {1}{Z}}e^{-E(v,h)}$
donde $Z$ y viceversa. Dado que la estructura del grafo subyacente del RBM es bipartita (es decir, no hay conexiones intracapa), las activaciones de las unidades ocultas son mutuamente independientes dadas las activaciones de las unidades visibles y, a la inversa, las activaciones de las unidades visibles son mutuamente independientes dadas las activaciones de las unidades ocultas. Es decir, para m unidades visibles y n unidades ocultas, la probabilidad condicional de una configuración de las unidades visibles v, dada una configuración de las unidades ocultas h, es la siguiente:
$P(v|h)=\prod _{i=1}^{m}P(v_{i}|h)$
A la inversa, la probabilidad condicional de h dada v es
$P(h|v)=\prod _{j=1}^{n}P(h_{j}|v)$
Las probabilidades de activación individuales vienen dadas por
$P(h_{j}=1|v)=\sigma \left(b_{j}+\sum _{i=1}^{m}w_{i,j}v_{i}\right)$ y $\,P(v_{i}=1|h)=\sigma \left(a_{i}+\sum _{j=1}^{n}w_{i,j}h_{j}\right)$
donde $\sigma$ denota el sigmoide logístico.
Las unidades visibles de la Máquina de Boltzmann Restringida pueden ser multinomiales, aunque las unidades ocultas sean Bernoulli. En este caso, la función logística para las unidades visibles se sustituye por la función softmax.
$P(v_{i}^{k}=1|h)={\frac {\exp(a_{i}^{k}+\Sigma _{j}W_{ij}^{k}h_{j})}{\Sigma _{k'=1}^{K}\exp(a_{i}^{k'}+\Sigma _{j}W_{ij}^{k'}h_{j})}}$
donde K es el número de valores discretos que tienen los valores visibles. Se aplican en el modelado de temas y en los sistemas de recomendación.

### Relación con otros modelos

Las máquinas de Boltzmann restringidas son un caso especial de las máquinas de Boltzmann y los campos aleatorios de Markov.
El modelo gráfico de los RBM se corresponde con el del análisis factorial.

## Algoritmo de formación

Las máquinas de Boltzmann restringidas se entrenan para maximizar el producto de las probabilidades asignadas a algún conjunto de entrenamiento $V$, (una matriz, cada fila de la cual se trata como un vector visible. 𝑣),
$\arg \max _{W}\prod _{v\in V}P(v)$
o, equivalentemente, maximizar la probabilidad logarítmica esperada de una muestra de entrenamiento 𝑣 seleccionada aleatoriamente desde $V$:
$\arg \max _{W}\mathbb {E} \left[\log P(v)\right]$
El algoritmo más utilizado para entrenar las RBM, es decir, para optimizar la matriz de pesos $W$, es el algoritmo de divergencia contrastiva (CD) de Hinton, desarrollado originalmente para entrenar modelos PoE (producto de expertos). El algoritmo realiza un muestreo de Gibbs y se utiliza dentro de un procedimiento de descenso de gradiente (de forma similar a como se utiliza la retropropagación dentro de un procedimiento de este tipo cuando se entrenan redes neuronales feedforward) para calcular la actualización de pesos.
El procedimiento básico de divergencia contrastiva de un solo paso (CD-1) para una sola muestra puede resumirse del siguiente modo:
* Toma una muestra de entrenamiento v, calcula las probabilidades de las unidades ocultas y muestrea un vector de activación oculta h a partir de esta distribución de probabilidad.
* Calcula el producto exterior de v y h y llámalo gradiente positivo.
* A partir de h, muestrea una reconstrucción v' de las unidades visibles y, a continuación, vuelve a muestrear las activaciones ocultas h' a partir de ella. (Paso de muestreo de Gibbs)
* Calcula el producto exterior de v' y h' y llámalo gradiente negativo.
* Que la actualización de la matriz de pesos $W$ el gradiente positivo menos el gradiente negativo, multiplicado por una tasa de aprendizaje: $\Delta W=\epsilon (vh^{\mathsf {T}}-v'h'^{\mathsf {T}})$
* Actualice los sesgos a y b de forma análoga $\Delta a=\epsilon (v-v')$, $\Delta b=\epsilon (h-h')$
En la página web de Hinton se puede encontrar una Guía práctica para la formación de los RBM.

## Máquina de Boltzmann restringida y apilada

* La diferencia entre las máquinas de Boltzmann restringidas apiladas y las RBM es que estas últimas tienen conexiones laterales dentro de una capa que están prohibidas para que el análisis sea manejable. Por otro lado, la Máquina de Boltzmann restringida y apilada (Stacked Boltzmann) consiste en una combinación de una red no supervisada de tres capas con pesos simétricos y una capa superior supervisada de ajuste fino para reconocer tres clases.
* El uso de la Máquina de Boltzmann restringida y apilada es comprender lenguajes naturales, recuperar documentos, generación de imágenes y clasificación. Estas funciones se entrenan con preentrenamiento no supervisado y/o ajuste fino supervisado. A diferencia de la capa superior simétrica no dirigida, con una capa asimétrica bidireccional para la conexión para RBM. La conexión de Boltzmann restringida es de tres capas con pesos asimétricos, y dos redes se combinan en una.
* Stacked Boltzmann comparte similitudes con RBM, la neurona para Stacked Boltzmann es una neurona estocástica binaria Hopfield, que es la misma que la Máquina de Boltzmann Restringida. La energía tanto de la Boltzmann restringida como de la RBM viene dada por la medida de probabilidad de Gibb:
$E=-{\frac {1}{2}}\sum _{i,j}{w_{ij}{s_{i}}{s_{j}}}+\sum _{i}{\theta _{i}}{s_{i}}$
El proceso de entrenamiento de Boltzmann restringido es similar al de RBM. Boltzmann restringido entrena una capa a la vez y aproxima el estado de equilibrio con una pasada de 3 segmentos, sin realizar retropropagación. Boltzmann restringido utiliza tanto supervisado como no supervisado en diferentes RBM para el pre-entrenamiento para la clasificación y el reconocimiento. El entrenamiento utiliza divergencia contrastiva con muestreo de Gibbs: Δwij = e*(pij - p'ij)
* El punto fuerte del Boltzmann restringido es que realiza una transformación no lineal, por lo que es fácil de ampliar, y puede dar una capa jerárquica de características. La debilidad es que tiene cálculos complicados de neuronas enteras y de valor real. No sigue el gradiente de ninguna función, por lo que se improvisa la aproximación de la divergencia contrastiva a la máxima verosimilitud.

## Literatura

* Fischer, Asja; Igel, Christian (2012), «An Introduction to Restricted Boltzmann Machines», Progress in Pattern Recognition, Image Analysis, Computer Vision, and Applications, Lecture Notes in Computer Science (Berlin, Heidelberg: Springer Berlin Heidelberg) 7441: 14-36, ISBN 978-3-642-33274-6 .