14
Sistemas Expertos e Inteligencia Artificial. Guía No. 10 1 Tema: Red Neuronal Hopfield. Reconocimiento de Patrones. 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#. Guía Número 10. Computadora con programa Microsoft Visual C#. 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: Facultad: Ingeniería Escuela: Computación Asignatura: Sistemas Expertos e Inteligencia Artificial Objetivos Específicos Materiales y Equipo Introducción Teórica

Tema: Red Neuronal Hopfield. Reconocimiento de … · 1Sistemas Expertos e Inteligencia Artificial. Guía No. 10 Tema: Red Neuronal Hopfield. Reconocimiento de Patrones. Comprender

Embed Size (px)

Citation preview

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

1

Tema: Red Neuronal Hopfield. Reconocimiento de

Patrones.

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#.

Guía Número 10.

Computadora con programa Microsoft Visual C#.

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:

Facultad: Ingeniería Escuela: Computación Asignatura: Sistemas Expertos e

Inteligencia Artificial

Objetivos Específicos

Materiales y Equipo

Introducción Teórica

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

2

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 Wij. La

colección de todos estos números está representado por la matriz de ponderación W, cuyos

componentes son Wij.

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.

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

4

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.

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

6

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 (Wij = Wji) 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:

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

8

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

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

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 W1 es:

Procedimiento

Patrón 1 Patrón 2 Patrón 3 Patrón 4

TE1 . E1 – I =

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

10

Para la entrada E2, la salida W2 es:

Sumando W1 y W2 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]

TE2 . E2 – I =

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

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.

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.

Análisis de resultados

Entrada Salida generada

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

12

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:

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.

Investigación Complementaria

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.

Sistemas Expertos e Inteligencia Artificial. Guía No. 10

14

EVALUACIÓN

% 1-4 5-7 8-10 Nota

CONOCIMIENTO

Del 20

al 30%

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

APLICACIÓN

DEL

CONOCIMIENTO

Del 40%

al 60%

ACTITUD

Del 15%

al 30%

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.

TOTAL 100%

Guía 9: Red Neuronal Hopfield.

Reconocimiento de Patrones. Hoja de cotejo: 10

Máquina No: Alumno:

Docente: GL: Fecha: