Está en la página 1de 10

Ulises Rodrguez Domnguez

Julio del 2010

Red Neuronal Artificial (RNA) para el reconocimiento de figuras bsicas.


El reconocimiento de patrones es un problema que consiste en reconocer patrones de seales, y cuyo punto crucial descansa en la clasificacin. Su necesidad surgi de diferentes reas, ya que tiene diversas aplicaciones como previsin meteorolgica, reconocimiento de caracteres, reconocimiento de voz, anlisis de biorritmos, deteccin de irregularidades en imgenes de rayos x, deteccin de clulas infectadas, marcas en la piel, reconocimiento de huellas dactilares, reconocimiento de caras, interpretacin de fotografas, prediccin de magnitudes en terremotos, reconocimiento de objetos y reconocimiento de msica, entre otras. Para poder reconocer patrones se siguen los siguientes pasos en orden consecutivo: adquisicin de datos extraccin de caractersticas toma de decisiones (la cual se hace justo despus de la clasificacin).En este trabajo se abordar especficamente el reconocimiento de tres figuras bsicas: cuadrado, tringulo y lnea. Nos centraremos en la clasificacin supervisada, la cual se basa en la disponibilidad de reas de entrenamiento (en las que previamente se conocen las clases a las que pertenecern los patrones). Para lograr dicha clasificacin, las tcnicas ms comunes utilizadas son superficies de separacin, funciones discriminantes, lgica combinatoria, vecino ms cercano y redes neuronales artificiales. Se utilizar el modelo de Red Neuronal Artificial (RNA) del Perceptrn multicapa, la cual es una red de aprendizaje supervisado. Este modelo fue propuesto por Frank Rosenblatt a finales de los 50s, y por tratarse de un tipo de RNA no necesita programacin explcita para saber qu salida entregar para cada entrada, sino que a travs de los pesos en cada conexin y la activacin o no de cada neurona, dichos valores activan un nmero de neuronas en el siguiente nivel hasta llegar a la capa de salida (entregando la respuesta esperada). Por lo anterior, este modelo y en general una RNA puede llegar a resolver problemas mucho ms complejos que la programacin tradicional. Para que el Perceptrn multicapa pueda aprender a reconocer los patrones de estas tres figuras necesita de una sesin de entrenamiento a travs del algoritmo de Retropropagacin (Backpropagation) o Propagacin hacia atrs el cual emplea una tcnica heurstica por gradiente descendiente (a travs del espacio generado por las neuronas y sus conexiones). Lo que este algoritmo hace es evaluar el error restando a la salida deseada la salida real y multiplicando este valor por la tasa de aprendizaje de la red (aprendizaje delta). Lo anterior se ir incrementando desde la capa de salida hasta la capa de entrada en los pesos de las conexiones de las neuronas excitadas (activas) que son las que afectan al resultado final. PROCEDIMIENTO PARA IMPLANTAR EL PERCEPTRN MULTICAPA 1. Evaluar la red hasta obtener la salida deseada para todos los casos

ALGORITMO: -1) Inicializar pesos aleatoriamente y umbral -2) Presentar entradas y salidas deseadas -3) Calcular salida -4) Adaptar pesos a travs del error obtenido y la tasa de aprendizaje propagando hacia atrs y volver al paso 2 ALGORITMO (Detallado): 1.1 Para las capas ocultas y la de salida, cada neurona se activar si la funcin sigmoidea aplicada a la funcin sumatoria sobrepasa el valor fijado del umbral. La salida de cada neurona ser binaria (1 si se activa y 0 si no se activa) ( ( )) ( )

donde N son las entradas (de la capa anterior), W i,j el peso de la conexin (neurona i capa anterior neurona j capa actual), y X i corresponde al valor de la neurona i de la capa anterior (0 o 1). 1.2 A continuacin, si la salida de cada neurona no es la esperada, se aplica la regla delta de aprendizaje (calcular el error y el incremento para aplicar retropropagacin). Para cada salida (en la capa de salidas): ( )

Posteriormente ese incremento se propaga hacia atrs en la red hacia todas las conexiones activas (las que vienen de una neurona activada en 1) hasta llegar a la capa de entradas. Con esto, los pesos de la red se van modificando hasta que todos los patrones de entrada para el entrenamiento obtengan la respuesta esperada.

2. Por ltimo probar la red configurada con formas ligeramente distorsionadas para verificar si realmente la red con los pesos finales aprendi a reconocer los patrones de entrada bsicos (las tres figuras).

EJEMPLO DE FUNCIONAMIENTO (PERCEPTRN SIMPLE)


Red Neuronal de 2 capas: una capa de entradas y una capa de salidas. En la capa de entradas 2 neuronas y una sola neurona en la capa de salidas.

La condicin de activacin de la neurona 3 (salida) sera: ( ) La regla a aprender de la red ser AND (si X1 y X2 se activan, la neurona de salida 3 se activar).

X1 Caso 1 Caso 2 Caso3 Caso 4 0 0 1 1

X2 0 1 0 1

Capa de salida (X3) 0 0 0 1

Para que el perceptrn aprenda, se utilizar una regla de aprendizaje derivada: 1. Si la salida generada por la neurona 3 es la correcta, no se realizan ajustes en los pesos sinpticos (Wi). 2. Si la salida es 1 pero debera ser 0, se reducen slo los pesos de las conexiones activas segn una constante C.

3. Si la salida es 0 pero debera ser 1, entonces se aumentan slo los pesos de las conexiones activas, segn la misma constante C. As comenzamos el entrenamiento partiendo de pesos sinpticos en 0 (W0=W1=W2=0), de una constante de refuerzo igual a 1 (C=1), y el bias siempre permanece activo (X0=1). Iteracin 1 Caso 1: (X1, X2) = (0,0) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Correcto (W0=0, W1=0, W2=0) Caso 2: (X1, X2) = (0,1) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Correcto (W0=0, W1=0, W2=0) Caso 3: (X1, X2) = (1,0) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Correcto (W0=0, W1=0, W2=0) Caso 4: (X1, X2) = (1,1) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Incorrecto (aumentar pesos de conexiones activas en un valor de C) W0=W0+C=1, W1=W1+C=1, W2=W2+C=1 Iteracin 2 Caso 1: (X1, X2) = (0,0) X0*W0 + X1*W1 + X2*W2 > 0 Salida = 1, Incorrecto (disminuir pesos de conexiones activas en un valor de C) W0 = W0 C = 0, W1=1, W2=1 Caso 2: (X1, X2) = (0,1) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Incorrecto (disminuir pesos de conexiones activas en un valor de C)

W0=W0C=-1, W1=1, W2=W2-C=0 Caso 3: (X1, X2) = (1,0) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Correcto (W0=-1, W1=1, W2=0) Caso 4: (X1, X2) = (1,1) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Incorrecto (aumentar pesos de conexiones activas en un valor de C) W0=W0+C=0, W1=W1+C=2, W2=W2+C=1 Iteracin 3 Caso 1: (X1, X2) = (0,0) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Correcto (W0=0, W1=2, W2=1) Caso 2: (X1, X2) = (0,1) X0*W0 + X1*W1 + X2*W2 > 0 Salida = 1, Incorrecto (disminuir pesos de conexiones activas en un valor de C) W0=W0C=-1, W1=2, W2=W2-C=0 Caso 3: (X1, X2) = (1,0) X0*W0 + X1*W1 + X2*W2 > 0 Salida = 1, Incorrecto (disminuir pesos de conexiones activas en un valor de C) W0=W0-C=-2, W1=W1-C=1, W2=0 Caso 4: (X1, X2) = (1,1) X0*W0 + X1*W1 + X2*W2 < 0 Salida = 0, Incorrecto (aumentar pesos de conexiones activas en un valor de C) W0=W0+C=-1, W1=W1+C=2, W2=W2+C=1

Iteracin 4

Caso 1: (X1, X2) = (0,0) X0*W0 + X1*W1 + X2*W2 < 0 Salida = 0, Correcto (W0=-1, W1=2, W2=1) Caso 2: (X1, X2) = (0,1) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Correcto (W0=-1, W1=2, W2=1) Caso 3: (X1, X2) = (1,0) X0*W0 + X1*W1 + X2*W2 > 0 Salida = 1, Incorrecto (disminuir pesos de conexiones activas en un valor de C) W0=W0-C=-2, W1=W1-C=1, W2=1 Caso 4: (X1, X2) = (1,1) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Incorrecto (aumentar pesos de conexiones activas en un valor de C) W0=W0+C=-1, W1=W1+C=2, W2=W2+C=2 Iteracin 5 Caso 1: (X1, X2) = (0,0) X0*W0 + X1*W1 + X2*W2 < 0 Salida = 0, Correcto (W0=-1, W1=2, W2=2) Caso 2: (X1, X2) = (0,1) X0*W0 + X1*W1 + X2*W2 > 0 Salida = 1, Incorrecto (disminuir pesos de conexiones activas en un valor de C) W0=W0C=-2, W1=2, W2=W2-C=1 Caso 3: (X1, X2) = (1,0) X0*W0 + X1*W1 + X2*W2 = 0 Salida = 0, Correcto (W0=-2, W1=2, W2=1) Caso 4: (X1, X2) = (1,1)

X0*W0 + X1*W1 + X2*W2 > 0 Salida = 1, Correcto (W0=-2, W1=2, W2=1) Despus de la iteracin 5, el perceptrn ha quedado entrenado para poder realizar la operacin AND. Los pesos finales quedaron: W0=-2, W1=2, W2=1, y a partir de ah, la red ya no se puede entrenar ms.

ANLISIS DE COMPLEJIDAD
A la red se le pasaron 12 patrones a clasificar para el entrenamiento (3 patrones de cuadrado, 5 patrones de lnea y 4 patrones de tringulo), y fueron necesarias aproximadamente 1000 iteraciones como mnimo para que la red haya podido aprender a reconocer las 3 formas. Debido a que el xito o fracaso de cada entrenamiento (el cual consta de 1000 iteraciones) depende de cmo hayan quedado inicializados los pesos de las conexiones (lo cual se hace aleatoriamente), se detect que hay un cierto patrn para saber cada cuantos entrenamientos tendr xito un cierto entrenamiento. En promedio cada 3988 entrenamientos tendr xito la inicializacin aleatoria de los pesos de las conexiones de la red de manera que con las 1000 iteraciones del entrenamiento podr aprender a clasificar correctamente las 3 clases de formas. Grfica de 26 corridas de aprendizaje satisfactorio. El eje y nos dice el nmero de cada cuantos entrenamientos la red aprendi.
25000

20000

15000

10000

5000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Una vez que la red ha quedado satisfactoriamente entrenada, siempre requiere 290 ciclos a travs del algoritmo backpropagation para dar una respuesta, por lo que su orden una vez entrenado el perceptrn es O(1).

FUNCIONAMIENTO DEL PROGRAMA


Cada pixel de la cuadrcula se activa con un clic. Tanto el cuadrado como el tringulo tienen mayor probabilidad de reconocimiento en la parte superior de la cuadrcula (primeras 3 filas), mientras que la lnea en cualquier parte de la cuadrcula ya sea horizontal, vertical o diagonalmente. Una vez que se ha terminado de pintar la figura hacer clic en Reconocer y la respuesta se dar del lado derecho.

BIBLIOGRAFA
Gmez A. (1998). Inteligencia Artificial, Aprendizaje y Minera de Datos. Artculo electrnico obtenido el 28 de junio del 2010 de http://www.gsi.dit.upm.es/~anto/SLIDES/980610/ia_apr_kdd.pdf Artculo electrnico obtenido el 29 de junio del 2010 de http://revistas.concytec.gob.pe/scielo.php?script=sci_arttext&pid=S181099932005000100010&lng=es&nrm=iso

Artculo electrnico obtenido el 29 de junio del 2010 de http://es.wikipedia.org/wiki/Reconocimiento_de_patrones Artculo electrnico obtenido el 23 de junio del 2010 de http://electronica.com.mx/neural/informacion/perceptron.html Artculo electrnico obtenido el 25 de junio del 2010 de http://perso.wanadoo.es/alimanya/modelo.htm Artculo electrnico obtenido el 23 de junio del 2010 de http://oscar-sandoval.blogspot.com/2009/10/implementacion-de-una-red-neuronal.html