Tema: Red Neuronal Hopfield. Reconocimiento de Patrones.

Anuncio
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
1
Facultad: Ingeniería
Escuela: Computación
Asignatura: Sistemas Expertos e
Inteligencia Artificial
Tema: Red Neuronal Hopfield. Reconocimiento de
Patrones.
Objetivos Específicos

Comprender la importancia de la red neuronal Hopfield, usada para mejorar los pesos de
entrada de la red.

Implementar la red neuronal Hopfield en Microsoft Visual C#.
Materiales y Equipo
 Guía Número 10.
 Computadora con programa Microsoft Visual C#.
Introducción Teórica
Una red de Hopfield es una forma de red neuronal artificial recurrente inventada por John
Hopfield.
La red de Hopfield es una de las redes unicapas de neuronas más importantes cuyas salidas son
números binarios; y ha influido en el desarrollo de multitud de redes posteriores.
Cada neurona de la red se encuentra conectada con todas las demás, pero no consigo mismo.
Es una red autoasociativa no lineal que fue desarrollada por Hopfield en 1982, basándose en los
modelos de redes de McCulloch y Pitts y los símiles de los campos magnéticos con spin de Amit,
Gutfreund, & Sompolinsky.
La Red de Hopfield es una red recurrente, es decir, existe realimentación entre las neuronas. De
esta forma, al introducir un patrón de entrada, la información se propaga hacia adelante y hacia
atrás, produciéndose una dinámica. En algún momento, la evolución se detendrá en algún estado
estable. En otros casos, es posible que la red no se detenga nunca.
Las redes recurrentes deben cumplir tres objetivos:
2
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
a. Dado cualquier estado inicial, deben converger siempre a un estado estable.
b. El dominio de atracción de cada estado estable debe estar perfectamente delimitado y
cumplir algún criterio de métrica (por ejemplo, que el estado final sea el más cercano al
inicial).
c. Debe poder tener cualquier número de estados estables.
Las redes de Hopfield se usan como sistemas de memoria asociativa con unidades binarias.
Están diseñadas para converger a un mínimo local, pero la convergencia a uno de los patrones
almacenados no está garantizada.
La red de Hopfield es una red monocapa, esto es, de una sola capa. Aunque también se puede
mostrar como una red bicapa de dos capas, la primera capa sería una capa de sensores y la
segunda capa será la capa donde se realiza el procesamiento.
En la versión bicapa la manera de interconexionar ambas capas es unir la primera capa a la
segunda linealmente, esto es cada neurona con su respectiva, y después unir todas las neuronas
con todas en la misma capa.
Las Redes de Hopfield se construyen de neuronas artificiales que fueron realizadas en los años
1980 por John Hopfield, quien estudió modelos auto-asociativos que presentaban algunas
similitudes con los perceptrones, pero incluía también grandes diferencias.
Estas neuronas artificiales tienen N entradas. Cada entrada posee un peso asociado W 𝑖. También
tienen una salida. El estado de la salida se mantiene, hasta que la neurona se actualiza.
Una actualización de la neurona implica las siguientes operaciones:

El valor de cada entrada, Xi es determinada y la suma ponderada de todas las entradas,
se calcula ∑ Wi Xi.

El estado de la salida de la neurona se establece en +1 si la suma ponderada de entrada
es mayor o igual a 0. Se establece en -1 si la suma ponderada de entrada es menor que
0.

Una neurona conserva su estado de salida hasta que se actualiza de nuevo.
Escribiendo las operaciones como una fórmula:
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
3
El peso de la conexión de una neurona i a otra neurona j está dada por un número W ij. La
colección de todos estos números está representado por la matriz de ponderación W, cuyos
componentes son W ij.
Ahora bien, dada la matriz de peso y la regla de actualización para las neuronas de la dinámica
de la red se define si le decimos en qué orden actualizamos las neuronas.
Hay dos formas de realizar esta actualización:
 Asíncrono: uno recoge una neurona, calcula la suma ponderada de entrada y
actualizaciones de forma inmediata. Esto puede hacerse en un orden fijo, o las neuronas
pueden ser elegidas al azar, esto se denomina actualización al azar asíncrono.
 Síncrono: las sumas de entrada ponderados de todas las neuronas se calculan sin
actualizar las neuronas. Luego, todas las neuronas se establecen en su nuevo valor, de
acuerdo con el valor de su suma ponderada de entrada.
Las unidades procesadoras de la red Hopfield están completamente interconectadas, cada
unidad está conectada con todas las demás unidades. Esta topología convierte a la red Hopfield
en una red recursiva ya que la salida de cada unidad está realimentada con las entradas de las
demás unidades.
En la figura siguiente se muestra un diagrama de las unidades procesadoras de una red Hopfield.
4
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
Una característica de las redes Hopfield es la doble conexión por cada pareja de unidades
procesadoras, como se aprecia en la figura anterior. Además los pesos asignados a ambas
conexiones tienen el mismo valor.
La figura siguiente muestra un método alternativo de representación de la estructura y conexiones
de la red Hopfield, específicamente una red recursiva de una capa.
Las características de este tipo de redes son las siguientes:
 Es una estructura en donde la matriz de pesos es cuadrada y simétrica. Es decir los pesos
de un patrón de entrada (PE) (nodo) a otro tiene el mismo valor en ambas direcciones.
 Cada nodo está conectado con todos los demás, incluso con si mismo pero el valor de
dicha conexión es 0, significando que el nodo no se realimenta a sí mismo.
 La función de transferencia de cada nodo, que normalmente se suele utilizar, es un
limitador de fuerza y los nodos calculan la suma de los pesos por las entradas menos un
cierto umbral, pasando a través de la función de transferencia, produciendo así su estado
de salida.
 Las entradas son 2 estados: binarias (0,1) o bipolar (-1,1). Por lo tanto, la función de
activación de cada neurona de la red es de tipo escalón:
Funcionamiento.
Se trata de una red autoasociativa. Por tanto, informaciones diferentes (patrones) pueden ser
almacenadas en la red, como si de una memoria se tratase, durante la etapa de aprendizaje.
Posteriormente, cuando se presenta una entrada a la red, esta evoluciona hasta generar una
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
5
salida que coincidirá con la que corresponde a esa entrada, o bien la más parecida si la entrada
está distorsionada o incompleta.
La información que recibe la red debe haber sido previamente codificada y representada en forma
de vector (como una configuración binaria o como un conjunto de valores reales dependiendo de
si la red es discreta o continua) con tantas componentes como neuronas (N) tenga la red. Cada
neurona recibe un elemento del vector.
La utilización de una red de Hopfield implica los siguientes pasos:
Un patrón se introduce en la red mediante el establecimiento de todos los nodos a un valor
específico, o estableciendo sólo una parte de los nodos.
La red se somete a un número de iteraciones utilizando actualización asíncrona o
síncrona. Esto se detiene después de un tiempo.
Las neuronas de la red, se leen para ver qué patrón se encuentra en la red.
La idea detrás de la red de Hopfield es que los patrones se almacenan en la matriz de
peso.
La entrada debe contener parte de estos patrones. Luego, la dinámica de la red recupera
los patrones almacenados en la matriz de peso. Esto se denomina memoria de contenido
direccionable (CAM).
Los patrones que se almacenan en la red se dividen en dos partes: señal y asociación. Al
entrar la señal en la red, todo el patrón, que se almacena en la matriz de peso, se
recupera. De esta manera la red restaura la asociación que pertenece a una señal dada.
La operación de la red es totalmente diferente al sistema del Perceptrón.
En el modelo de Hopfield, la primera salida es tomada como entrada en el ciclo siguiente,
produciendo una nueva salida.
Por tanto el aprendizaje es también diferente; en este sistema no se trata de ajustar pesos ya que
éstos se mantienen constantes desde el principio, se trata de encontrar dichos pesos, en función
del problema.
El mecanismo de aprendizaje utilizado es de tipo off line, por lo que existe una etapa de
aprendizaje y otra de funcionamiento de la red. También utiliza un aprendizaje no supervisado de
tipo hebbiano, de tal forma que el peso de una conexión entre una neurona i y otra j se obtiene
mediante el producto de los componentes i-ésimo y j-ésimo del vector que representa la
información o patrón que debe almacenar.
6
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
Utilizando una notación matricial, para representar los pesos de la red se puede utilizar una matriz
de dimensión NxN (recordemos que N es el número de neuronas de la red y por tanto de
componentes del vector de entrada). Esta matriz es simétrica (W ij = W ji) y con la diagonal con
valores nulos (Wii = 0) al no haber conexiones autorecurrentes.
También tenemos M entradas que la red debe aprender, expresadas igualmente en forma
matricial, E1, E2,…, EN.
Utilizando esta notación, el aprendizaje consistiría en la creación de la matriz de pesos W a partir
de los M vectores de entrada que se enseñan a la red.
De tal manera que el conjunto total del sistema puede venir representado por una función
denominada Función de Energía de la siguiente manera:
El entrenamiento de una red de Hopfield consiste en reducir la energía de los estados que la red
debe “recordar”. Esto convierte a la red en un sistema de memoria direccionable, es decir, la red
“recordará” un estado si se le da solo parte de dicho estado. Esto la hace útil para recuperar una
entrada distorsionada usando un estado de la red obtenido durante el entrenamiento y que es
más similar al estado obtenido con la entrada actual. Esto se llama memoria asociativa, ya que
recupera la memoria sobre la base de la similitud.
Ejecutar un patrón en la red de Hopfield consiste en enviar un patrón en la red y actualizar las
neuronas repetidamente hasta que se estabilicen los estados de las neuronas a un patrón
memorizado.
Con pasos sería así.
1. Se establece el patrón de entrada en la capa de entrada.
2. Se actualizan las neuronas de la capa de procesamiento.
3. Si han cambiado el estado de la red o hemos realizado ya el número máximo de
iteraciones, paramos.
4. Si no volvemos al paso 2.
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
7
Por ejemplo, si entrenamos una red Hopfield con cinco unidades para que el estado (1, 0, 1, 0, 1)
sea un mínimo de energía, y le damos a la red el estado (1, 0, 0, 0, 1) esta convergerá a (1, 0, 1,
0, 1).
Así, la red estará adecuadamente capacitada cuando la energía de los estados que la red debe
recordar son mínimos locales.
Algoritmo de Entrenamiento.
Calcule los valores de los pesos que conectan a los nodos, utilizando la siguiente fórmula:
Donde:
tij es el peso que va de la neurona 𝑖 a la neurona 𝑗, y es el valor del i-ésimo elemento de la sésima clase
𝑚 es el número de clases que se desean aprender.
En notación matricial:
Esta fórmula se conoce como el producto externo de un vector renglón consigo mismo.
Algoritmo de evaluación de la red Hopfield.
1. Inicialice la red con un patrón de entrada:
𝑈𝑖 (0) = 𝑋𝑖
0 ≤ 𝑖 ≤ 𝑛−1
Donde 𝑛 es el número de nodos en la red
2. Itere hasta converger siguiendo la siguiente fórmula:
Donde F es una función escalón definida como:
8
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
Cuando la red converge, su salida representa al patrón que más se parece al patrón de
entrada dado.
Ventajas de las Redes de Hopfield.
 Prácticamente no existe tiempo de entrenamiento, ya que este no es un proceso
adaptativo, sino simplemente el cálculo de una matriz (T).
 Las redes de Hopfield son bastante tolerantes al ruido, cuando funcionan como memorias
asociativas.
Desventajas de las Redes de Hopfield.
Número limitado de entradas en la etapa de aprendizaje: Si se almacena demasiada
información, durante su funcionamiento la red puede converger a valores de salida
diferentes de los aprendidos, con lo que la tarea de asociación entra la información
presentada y alguna de las almacenadas se realiza incorrectamente.
El número de patrones a almacenar (o aprender) es bastante limitado comparado con el
número de nodos en la red. Según Hopfield, el número de clases a aprender no puede
ser mayor del 15% del número de nodos en la red.
La red se vuelve inestable si los patrones se parecen entre sí.
Aplicaciones.
En cuanto a las aplicaciones más conocidas de este modelo destacan las relacionadas con el
reconocimiento de patrones (de imágenes y de voz), el control de motores y sobre todo la
resolución de problemas de optimización.
Para problemas de optimización se ha aplicado para la resolución de manipulación de grafos, por
ejemplo el problema del viajante vendedor; resolución de ecuaciones, procesado de señales
(conversores analógico-digitales) y de imágenes, etc.
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
9
Procedimiento
Ejemplo 1. Se desea entrenar una Red de Hopfield bastante sencilla, que sea capaz de
reconocer información (patrones) de imágenes formadas por cuatro pixeles, en una matriz de
2x2.
En la figura siguiente se muestran ejemplos de patrones que podrían utilizarse como entradas a
la red:
1 2
1 2
1 2
1 2
3 4
3 4
3 4
3 4
Patrón 1
Patrón 2
Patrón 3
Patrón 4
Los pixeles negros podrían representarse mediante el valor binario 1, y los blancos con el valor
binario -1. En este caso, las informaciones serían dos vectores de cuatro elementos (N = 4) que
contienen los valores de los pixeles. La red, por tanto, tendría 4 neuronas para que cada una
reciba el valor de un pixel.
Aplicaremos el algoritmo detallado anteriormente para los patrones de entrada 1 y 2.
Los valores de los vectores de entrada que representan cada patrón son:
E1= [1, 1,-1,-1] y E2 = [-1,-1, 1, 1]
Etapa de Aprendizaje:
El aprendizaje de estas dos informaciones consiste en la obtención de los pesos de la red (matriz
W). Utilizaremos la fórmula
Para la entrada E1, la salida W 1 es:
TE1 . E1 – I =
10
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
Para la entrada E2, la salida W 2 es:
TE2 . E2 – I =
Sumando W 1 y W 2 se obtiene la matriz de pesos definitiva, W:
Una vez finalizada la fase de aprendizaje (entrenamiento), la red podría ser utilizada como
memoria asociativa de acceso por contenido, de tal forma, que al presentarle una información
más parecida a la almacenada durante el aprendizaje.
Fase de Evaluación:
Por ejemplo, ser podría comprobar lo que ocurre con el patrón de entrada siguiente:
1 2
3 4
El vector es E = [1, -1, -1, ,1]
Utilizaremos las fórmulas indicadas en el paso 2 del algoritmo de evaluación de la red Hopfield
(mostrado en la página 7 de esta guía).
Inicialmente, la salida corresponde a la propia información de entrada. Entonces se produce la
primera iteración, obteniéndose las siguientes nuevas entradas en cada neurona:
Si suponemos una función de activación de cada neurona de tipo escalón centrada en el origen
(desplazamiento i = 0), la salida de la red después de esta primera iteración será:
S = [1, 1, -1, -1]
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
11
Repitiendo el proceso, tomando como entrada la salida anterior, S, tenemos:
Aplicando igualmente la función de activación a este nuevo resultado (segunda iteración de EW),
la salida obtenida es:
S = [1, 1, -1, -1]
Observemos que se repite la salida de la primera iteración, entonces se ha llegado a una situación
de estabilidad, en la que la red ha generado como salida el patrón más parecido al presentado
como entrada:
1 2
1 2
3 4
3 4
Entrada
Salida generada
En este ejemplo, para la descripción del aprendizaje se ha utilizado el modelo discreto, la forma
de calcular los pesos para el modelo continuo es similar, si se utiliza la red como memoria
asociativa.
Si la red se utiliza para resolver problemas de optimización, el cálculo de los pesos dependerá
del problema concreto.
Además, en el modelo continuo se suele considerar la existencia de conexiones
autoconcurrentes, con lo que no siempre W ii = 0.
Análisis de resultados
Tomando como referencia la información presentada en el ejemplo No.1 y los algoritmos para
la red de Hopfield, implementar un simulador (en entorno de Windows Forms) para una red de
Hopfield, que sea capaz de reconocer patrones como los mostrados en el ejemplo, es decir,
utilizar una matriz de 2x2 para la representación de los patrones.
12
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
Considerar la siguiente funcionalidad para el simulador:
 Permitir que el usuario proporcione los patrones de entrada, necesarios para el
entrenamiento de la red.
 El usuario debe también proporcionar el patrón de entrada que se utilizará para evaluar
la red.
 Diseñar la interfaz, considerando que debe mostrarse todos los pasos del entrenamiento
realizado para la red. Es decir, que debe indicarse el entrenamiento de cada patrón
utilizado.
 En la opción de evaluación de la red, debe mostrarse todos los pasos realizados para
encontrar la salida generada por la red.
Sería ideal que las entradas y salidas se proporcionen a través de una matriz gráfica. Se muestra
una imagen de referencia de cómo podría diseñarse la interfaz:
Investigación Complementaria
Para la siguiente semana:
Aplicar las modificaciones necesarias para agregar mayor funcionalidad al programa simulador de la
Red de Hopfield.
Deben implementarse las siguientes opciones:
a. Permitir que el usuario indique las dimensiones del patrón a identificar, es decir,
dimensiones de la matriz de representación (cantidad de pixeles).
b. Permitir que el usuario proporcione los patrones de entrada, necesarios para el
entrenamiento de la red.
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
13
c. El usuario debe también proporcionar el patrón de entrada que se utilizará para evaluar
la red.
d. Diseñar la interfaz, considerando que debe mostrarse todos los pasos del entrenamiento
realizado para la red. Es decir, que debe indicarse el entrenamiento de cada patrón
utilizado.
e. En la opción de evaluación de la red, debe mostrarse todos los pasos realizados para
encontrar la salida generada por la red.
Para probar la opción “a”, se podría considerar como ejercicio, poder entrenar la red neuronal con
patrones que representen letras del alfabeto, por ejemplo, con los siguientes cuatro patrones de
entrada:
Y para la fase de evaluación de la red, poder probar patrones parecidos o con variantes con relación
a estas entradas.
14
Sistemas Expertos e Inteligencia Artificial. Guía No. 10
Guía
9:
Red
Neuronal
Reconocimiento de Patrones.
Hopfield.
Alumno:
Hoja de cotejo:
10
Máquina No:
GL:
Docente:
Fecha:
EVALUACIÓN
%
CONOCIMIENTO
Del 20
al 30%
APLICACIÓN
DEL
CONOCIMIENTO
Del 40%
al 60%
ACTITUD
Del 15%
al 30%
TOTAL
100%
1-4
5-7
8-10
Conocimiento
deficiente
de los
fundamentos
teóricos
Conocimiento
y explicación
incompleta de
los
fundamentos
teóricos
Conocimiento
completo y
explicación
clara de los
fundamentos
teóricos
No tiene
actitud
proactiva.
Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la guía.
Tiene actitud
proactiva y
sus propuestas
son concretas.
Nota
Descargar