La Máquina de Boltzmann

Anuncio
Instituto Tecnológico Autónomo de México
“Máquina de Boltzmann
Simulated Annealing”
Redes Neuronales
Dr. Ángel Kuri
Renato Callejo Castilla 51373
José Alberto Cisneros 51394
Federico Fricke
.
Ricardo Falcón
51681
Ignacio Aldasoro
55917
Luis Alfredo Martínez 51577
Teoría de la Información.
En 1948 Claude Shannon publicó un artículo histórico donde propone una teoría
para el estudio de la información que después será adoptada y utilizada por las personas
dedicadas al estudio de las ciencias de la computación.
En su artículo, Shannon definió una función que nos dice que tanta información
nos aporta un suceso estocástico con probabilidad de ocurrencia conocida. Dicha función
está descrita en la siguiente expresión:
1
,donde P(S) es la probabilidad de que el suceso S ocurra.
I ( S )  logb
P( S )
Esta función I está definida para una b (base del logaritmo) arbitraria. Sin embargo, hay
bases que se utilizan con mayor frecuencia. De hecho, si tenemos b=2 decimos que las
unidades de dicha función son bits. Para b=e (el número de Euler), las unidades se llaman
nats. De todas formas, podemos observar que I(S) es inversamente proporcional a la
probabilidad de que S suceda. Esto se puede interpretar como que un suceso poco
probable suceda nos da más información que cuando sucede un acontecimiento muy
probable. Notemos que un suceso que tiene probabilidad uno (ocurre casi seguramente)
no nos aporta ninguna información al ocurrir.
Ahora sea S una sucesión de acontecimientos {S1,S2,...,Sn} cada uno con
probabilidad {P(S1),P(S2),...,P(Sn)}. Definimos I(S) como una variable aleatoria discreta
y su esperanza E[I(S)] representa la “información promedio” que aporta la observación
de S. Resulta que dicha información esta dada por la expresión:
n
n
i 1
i 1
 I    P( S i ) I ( S i )   P( S i ) log P( S i )
Esta función se define como la entropía de S en analogía con el concepto físico que mide
la cantidad de desorden de un sistema termodinámico (a mayor entropía, mayor desorden
en el sistema.).
También se define la ganancia de información (o divergencia asimétrica) de un
sistema Sa con respecto a otro sistema Sb con la ecuación:
n
P(S ia )
G   P(S ia ) log(
)
P(S ib )
i 1
Notemos que al expandir el logaritmo obtener la siguiente interpretación.
n
n
i 1
i 1
G   P( S ia ) log(P( S ia ))   P( S ia ) log(P( S ib ))
La función G nos da una medida de Sa a partir de la fuente de información Sb. Si tenemos
dos fuentes de información muy “parecidas” G debe se pequeña. En el algoritmo de
aprendizaje de Boltzmann se minimiza un múltiplo de dicha función G.
Conceptos de Mecánica Estadística
La mecánica estadística es la rama de la física que estudia sistemas con gran
número de partículas tales no podemos conocer las caracterísicas de dichos sistemas
estudiando cada partícula de una manera individual. En general, estas características las
podemos conocer estudiando una colección finita de sistemas idénticos. A esta colección
se le llama un ensamble y está definido por el promedio de los sistemas que lo
constituyen, así como por las variaciones estadísticas sobre el promedio.
Así, podemos definir la energía promedio del sistema como sigue:
 E  r Er Pr donde, Pr expresa la probabilidad de tener algún estado con energía Er.
Dada una temperatura T, se puede asegurar experimentalmente, que un ensamble
con estas características, alcanza su equilibrio térmico (la energía no cambia
significativamente), sólo cuando la distribución de las probabilidades de estar en estados
con energía Er es:
E
1
exp( r )
Z
k BT
donde T es la temperatura en grados Kelvin; kB es la constante de Bolzmann
(kB=1.39*10-23 J/K) y Z es la función de partición, que corresponde al factor de
normalización de la distribución. Z está dada por:
E
Z   exp( r )
k BT
r
En esta distribución los estados con menor energía tienen una mayor probabilidad
de ocurrir y al disminuir la temperatura T, la probabilidad se concentra en los estados de
menor energía.
La entropía del sistema se define esencialmente de la misma manera que en la
teoría de información.
Pr 
Proceso de recocido
El proceso de “annealing” (recocido-templado) consiste en recorrer isotermas del
sistema para alcanzar un mínimo global en la energía del sistema para evitar terminar en
un mínimo local en el proceso de descenso energético. Empezando con temperaturas
elevadas y disminuyéndolas hasta alcanzar el equilibrio térmico se puede asegurar que, a
cierto nivel de temperatura, la variación de los mínimos es despreciable. Una idea
intuitiva de esto está en la limitación probabilística de estar en estados de energía
mínima, dado por la mecánica estadística, al disminuir la temperatura.
La simulación de este proceso en una red neuronal consistirá en encontrar
mínimos a la energía de un estado estocástico de la red, que definiremos más adelante,
para una sucesión decreciente de parámetros T.
La Máquina de Boltzmann
La máquina de Boltzmann es útil para el reconocimiento de patrones, intentando
recuperar información no disponible de un estado (es decir completando las partes que no
conocemos)
Las redes de Boltzmann consisten en neuronas conectadas entre sí que pueden
estar conectadas bidireccionalmente y que tienen salidas binarias. Las neuronas se
distinguen en dos grupos: las visibles y las no visibles. Las primeras constituyen la
interfaz de la red y las segundas son sólo para un mejor desempeño de la red. Hay dos
arquitecturas principales para las máquinas de Boltzmann: Completación de Boltzmann y
la red de Boltzmann de entrada-salida.
La diferencia está en la capa visible, pues en las de completación sólo hay un tipo
y están conectadas entre ellas de forma bidireccional (todas las neuronas con todas,
inclusive las no visibles); en la red de entrada-salida las visibles se dividen en las
neuronas de entrada y en las de salida, siendo las de entrada únicamente conectadas
unidireccionalmente con la capa no visible y las neuronas de salida. Las de salida se
conectan con todas las que no son de entrada de forma bidireccional.
La característica principal de las redes de Boltzmann es que la función de salida
es estocástica con probabilidad:
1
Pk 
netk
1  exp(
) ,
T
donde netk es la diferencia de energía en el sistema cuando x k=0 y xk=1(donde xk
es la salida de la k-ésima unidad) y está dada por la siguiente expresión:
n
netk   wkj x j
j 1
J k
El parámetro T representa la temperatura del sistema.
Para simular el proceso del annealing usamos el siguiente algoritmo.
Sea x’ el vector de entrada con componentes desconocidos.
1. Asignar los valores conocidos del vector de entrada x’ a las neuronas
visibles.
2. Imputar todas los valores desconocidos y de las neuronas no visibles con
valores aleatorios en el conjunto {0,1}.
3. Seleccionar una unidad xk aleatoriamente y calcular su valor de entrada a
la red (netk)
4. Sin importar el valor actual de la unidad seleccionada, asignar el valor
xk=1 con probabilidad Pk (definida anteriormente). Esta elección
estocástica se puede implementar con una comparación entre Pk y un valor
z seleccionado al azar de la distribución uniforme. Con z entre 0 y 1 y
menor o igual que Pk.
5. Repetir los pasos 3 y 4 hasta que todas la unidades tengan una
probabilidad de ser seleccionadas para una actualización. Este número de
actualización de unidades se llama ciclo de procesamiento. El realizar un
ciclo completo no garantiza que todas la unidades hayan sido actualizadas.
6. Repetir el paso 5 hasta llegar al equilibio térmico.*
7. Bajar la temperatura T y repetir pasos 3 a 7.
La convergencia al estado de mínima energía se asegura por el teorema de
German y German que asegura que si las temperaturas del k-ésimo paso del algoritmo
T0
está acotada inferiormente por
donde T0 es una constante suficientemente
log(1  k )
grande se alcanzará un estado de energía con diferencia ε al estado de mínima energía.
El algoritmo se detiene cuando T se ha reducido hasta un valor pequeño. Cuando
esto sucede la red se ha estabilizado y el resultado final será las salidas de las neuronas
visibles. Esperamos que el resultado final sea un vector x que tenga todos sus
componentes conocidos.
Aprendizaje en las máquinas de Boltzmann.
El aprendizaje en la máquina de Boltzmann se fundamenta en el annealing
simulado y de ahí su origen estocástico. Utiliza además, el método de descenso de
gradiente sobre la función de divergencia asimétrica definida anteriormente.
Dado que las salidas de las neuronas son de carácter probabilístico, el aprendizaje
de Boltzmann intentará distribuir estas salidas de acuerdo a la muestra de los vectores
utilizados en el proceso de aprendizaje. El problema es, ahora, determinar la distribución
de los vectores de entrenamiento. Como en la mayoría de los casos no tenemos más
información para elegir esta distribución elegiremos la uniforme.
Distingamos dos modos de operar de la red: el primero, tendiendo las neuronas
visibles fijas y el segundo, con dichas neuronas libres. En ambos casos el objetivo es que
después de realizar el proceso de annealing se espere un estado de energía mínimo.
Recordando nuestra fórmula de divergencia asimétrica entre dos fuentes de
información:
n
P(S ia )
G   P(S ia ) log(
),
P(S ib )
i 1
modelaremos la fuente ‘b’ como los resultados frecuentistas de la red de Boltzmann en
un estado libre y a la fuente ‘a’ como la distribución dada por la misma red, ahora fijando
las muestras. Asi para minimizar G (que mide la “distancia” relativa entre las fuentes)
buscaremos adecuar los dos modelos trabajando sobre los dos pesos de la red.
G
Para poder trabajar con el método del gradiente busquemos primero
.
wij
Definamos, ahora, como{Vm} al conjunto de vectores de entrenamiento (relacionados
solamente con las neuronas visibles) y {Hn} al conjunto de vectores que representan los
posibles estados de las neuronas escondidas. Definimos P+(Vm) como la probabilidad de
que la máquina tenga sus neuronas visibles en el estado Vm dado que hay alguna muestra
asignada y fija en las neuronas visibles y P-(Vm) como la probabilidad de que las
neuronas visibles tengan el estado Vm con las neuronas visibles libres.
Reexpresando G en términos de nuestro problema, obtenemos:
P  (V )
G   P  (Vm ) ln(  m ) y a partir de su derivada, obtenemos
P (Vm )
m
P  (V ) P  (Vm )
G
, Pues P+(Vm) es independiente de wij ya que las neuronas
   m
wij
wij
m P (Vm )
de entrada están fijas. Veamos que P  (Vm )   P  (Vm  H n ) ; y como el estado
n
Vm  H n se alcanza en el equilibrio térmico del annealing la probabilidad de estar en
este estado se distribuye como Boltzmann bajo su energía , es decir,
E
1
P  (Vm  H n )  exp( mn ) , donde:
Z
T
1
con xmni la salida de la neurona i en el estado Vm  H n ; es la
Emn    wij ximn x mn
j
2 i j
j i
energía asociada a tal estado.
E
Z   exp( mn ) es la función de partición en la distribución de Boltzmann.
T
m,n
E
E
exp( mn )
exp( mn )
P  (Vm )

E
1
Z
mn
T
T
 

2
wij
T n
Z
wij
wij
Z
n
Emn
  ximn x mn
j
wij
E
Z
1
  exp( mn ) ximn x mn
j
wij T n
T
Considerando que:
P

(Vm )  1
m
y que

P ( H n Vm )  P  ( H n Vm )
Concluimos que
wij   ( pij  pij )
pij   P  (Vm  H n )ximn x mn
j
m, n
pij   P  (Vm  H n )ximn x mn
j
m, n
Las cantidades p+ij y p-ij representan la probabilidades de coocurrencia de que las
neuronas i y j estén activas (xi=1 y xj=1) al mismo tiempo. En el algoritmo estimaremos
estas cantidades y así modificar los pesos. Ahora podemos dar el algoritmo:
1.- Fijar algún vector de entrenamiento para las neuronas visibles
2.- Realizar el proceso de annealing hasta que se alcance el equilibrio a la temperatura
mínima
3.- Realizar este proceso varias veces y para cada uno de ellos determinar qué pares de
neuronas conectadas están activas simultánemente
4.-Estimar la coocurrencia (clamped) para el vector de entrenamiento
5.- Repetir de 1 a 4 para cada vector de entrenamiento y estimar p+ij.
6.- Liberar las neuronas visibles y realizar el proceso de annealing hasta que se alcance
el equilibrio a la mínima temperatura
7.-Realizar este proceso muchas veces y después de cada una determinar los pares de
neuronas conectadas que están activas simultáneamente
8.-Estimar la coocurrencia con el paso 7
9.- Repetir del 6 al 8 el mismo número de veces que se repitió el paso 5 y estimar p-ij
w   ( pij  pij )
10.- Calcular y aplicar los cambios de pesos ij
wij
11.- Repetir del 1 al 10 hasta que
sea muy pequeño.
Costos computacionales de la Máquina de
Boltzmann
El gran problema de la máquina de Boltzmann es la lentitud de convergencia y
complejidad del algoritmo, pues dentro de él hay 4 ciclos anidados:
-Ajustar los pesos hasta alcanzar un mínimo satisfactorio.
-Cada iteración que estima pij en el modo libre y para el modo fijo.
-Para cada estimación, realizar el proceso de annealing.
-A cada temperatura, buscar equilibrio térmico.
Además, dentro del proceso de annealing, no podemos realizar el decenso de
temperaturas tan brusco como se quiera, pues para que la red se estabilice en un nivel de
energía suficientemente bajo (alguno que otorgue una estabilidad suficiente a la red), las
temperaturas en cada iteración están acotadas inferiormente por el teorema de German y
German.
Descargar