Redes Neuronales

9
INTELIGENCIA ARTIFICIAL Trabajo Práctico nº 5 Profesores: Ing. Mario Figueroa Ing. Pablo Rovarini Alumnos: José Daniel Muccela Comisión: 5 k 2 Año 2008 Facultad Regional Tucumán Universidad Tecnológica Nacional Redes Neuronales Reconocedor Óptico de Caracteres

Transcript of Redes Neuronales

Page 1: Redes Neuronales

INTELIGENCIA ARTIFICIAL

Trabajo Práctico nº 5

Profesores:

� Ing. Mario Figueroa � Ing. Pablo Rovarini

Alumnos:

� José Daniel Muccela

Comisión: 5 k 2

Año 2008

Facultad Regional Tucumán

Universidad Tecnológica Nacional

Redes Neuronales Reconocedor Óptico de

Caracteres

Page 2: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 1

TP Nº 5 – Redes Neuronales Problema: Reconocedor Óptico de Caracteres

Desarrollo

Una de las aplicaciones que más se usa de las Redes Neuronales es el

Reconocimiento Óptico de caracteres. Esto es posible por la naturaleza de las Redes Neuronales.

Al hablar de naturaleza de las redes neuronales nos referimos a que es unos de las ramas de la Inteligencia Artificial capaz de aprender patrones y de acuerdo a una entrada de datos puede predecir los resultados. Esto es, la red aprende un conjunto de patrones y luego de acuerdo a las entradas posteriores la red puede deducir la salida gracias al aprendizaje que hizo de esos patrones.

Una Red Neuronal trata de simular a un cerebro humano. Estas redes imitan en cierto modo el funcionamiento de las neuronas

naturales, y son un campo que está dando grandes resultados en los últimos años; son especialmente buenas cuando se trata de reconocer patrones con un cierto "ruido" de fondo. Por ejemplo, una palabra nunca se pronuncia exactamente igual dos veces, siempre hay pequeñas variaciones.

Otro ejemplo es una letra escaneada de un papel (incluso letra de imprenta), que debido a suciedad en el papel, errores en su impresión, e incluso al propio proceso de escaneado nunca es exactamente igual. Sin embargo una persona generalmente no encuentra dificultades a la hora de entender una palabra que le digan o una letra impresa, salvo que sean muy confusas; pues esta ventaja es la que aportan las redes neuronales, posibilitando programas como los OCR.

Para entrar más en detalle veamos como está compuesta una neurona artificial y luego la forma en que trabaja.

Donde: • “X1…Xn” indican un bit que corresponden al carácter que estoy tratando de reconocer y son las entradas de la red. • “W1…Wn” son los pesos de las entradas de la red. Cada X tiene su peso. El valor para W varía entre 0 y 1. • “Y” es la salida de la red y está en función de las entradas y sus respectivos pesos.

Page 3: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 2

En el contexto de las redes neuronales lo que está dentro de la elipse es

el proceso interno de la red y es donde se encuentra lo que se conoce como el “Umbral”. Este es un escalón unitario y determina si se dispara o no una celular neuronal.

Cuando la sumatoria es mayor que “a” cambia de estado; es decir,

atraviesa o no el umbral. Ahora que ya hablamos de las neuronas, pasemos a las redes

neuronales propiamente dicha, la cual está constituida por un conjunto de neuronas interconectadas.

a

umbral

Y

X1

X2

Xn

W1

W2

Wn

0 >= Wi <= 1

∑ Xi * Wi > a n

0 1

∑ > a

∑ > a

Page 4: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 3

Como se puede apreciar en el gráfico la capa de entrada corresponde a lo que viene del ambiente (como por ejemplo el nervio óptico). En esta capa se encuentran los patrones de enseñanza.

Las neuronas de la capa intermedia propagan su efecto a través de las diferentes capas sucesivas y como consecuencia produce un vector de salida. Durante este proceso, los pesos de las entradas de la red son fijos y no se modifican.

En el reconocimiento de patrones hay un número fijo de categorías en las cuales las muestras de entrada deben clasificarse. Para ello primero se requiere una fase de entrenamiento en la que se presenta a la red los patrones que debe aprender y la categoría en cual clasificarlo. Entonces se le presenta a la red un patrón nuevo y desconocido pero que pertenece a alguna de las categorías aprendidas y esta debe decidir a que categoría se parece más. Para el desarrollo de la aplicación OCR usamos la Red Neuronal de Kohonen. Esta es un tipo de red No Supervisada. Lo más importante en este tipo de redes es que el resultado no lo conozco. Funcionamiento de la red: Si ocupamos un vector para definir las neuronas, por ejemplo de 30 elementos, tendremos:

x = X [1..30] A esta matriz la ocuparemos para determinar un carácter. Cada cuadro de la matriz puede tener un valor 0 ó 1. Si es igual a 0 no tiene nada, caso contrario el cuadro está lleno. Vamos a ocupar además un círculo unitario donde estarán representados todos los vectores, uno por cada neurona. En este círculo habrá 30 vectores. Los vectores pueden tener cualquier dirección. Al hacer que todos los vectores tengan módulo 1, sólo nos preocupamos por calcular el ángulo con la abcisa.

1

Ángulo

Vector

Page 5: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 4

El uso del círculo y los ángulos de los vectores sirve para normalizarlos (que tengan módulo 1) y para determinar el ángulo. Este ángulo determinará cuán cerca está una neurona (vector) u otra del patrón de entrada que se quiere reconocer. Supongamos que el patrón de entrada a la red es la letra “A”. Se puede apreciar que hay cuadros llenos (1) y cuadros vacíos (0). Este patrón ingresa a la red neuronal para que esta lo aprenda. Este proceso se conoce como el entrenamiento de la red. Luego de aprender viene un segundo paso que consiste en el reconocimiento del caracter. Se supone que con el entrenamiento la red es capaz de reconocer un carácter igual o similar que ingrese nuevamente a ella. Siempre habrá un margen de error. Supongamos que ingresamos un documento escaneado y le pedimos al sistema que reconozca los caracteres impresos en él. Nos centremos en la letra “A”. Supongamos que hay cierto ruido o suciedad en la hoja y la letra ”A” aparece en el documento como muestra la siguiente figura: En ella vemos que falta parte de la letra. Lo que hará la red en este caso es buscar el vector más próximo (gracias al ángulo) para obtener el resultado deseado. En otras palabras la red buscará entre los vectores lo que más se aproximen para completar el caracter que queremos. De aquí surge que hay neuronas ganadoras y neuronas perdedoras. Las ganadoras son las que se activan y se disparan para obtener el resultado deseado. Si entre las neuronas no hay proximidad con el caracter que se pretende reconocer no hay un resultado posible por lo que no hay neuronas ganadoras, es decir no hay vectores próximos. Respecto de la aplicación, se desarrolló en Builder C++ Versión 6.0. Tiene dos funciones principales que consisten en los pasos mencionados:

1. Aprender 2. Reconocer

Page 6: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 5

Al abrir el programa (fig.1) nos encontramos con tres botones a la izquierda las cuales contienen las 2 funciones principales antes mencionadas y una tercera función consistente en reiniciar o volver a enseñar a la red lo que queremos que aprenda. Para comenzar presionamos el botón Enseñar . Inmediatamente se activa el sector de dibujo a la derecha para que por medio del Mouse dibujemos/escribamos lo que deseamos “enseñarle” a la Red. Una vez que dibujamos (por ejemplo la letra o patrón “A”) elegimos del combo el número/letra/símbolo que pertenece al dibujo realizado (Buscamos la letra “A” en el combo). Esta acción constituye el patrón de enseñanza nombrado al comienzo. Luego de seleccionar un carácter del combo a la derecha se mostrará gráficamente como la Red representa al patrón ingresado (Fig. 2).

Esto completa el proceso de enseñanza. Ahora queremos que la red reconozca un caracter ingresado nuevamente a partir del sector de dibujo/escritura. Para ello presionamos el botón Reconocer que se encuentra a la izquierda. Se borra el dibujo anterior y se activa nuevamente el sector de dibujo

Fig. 1

Fig. 2

Page 7: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 6

para que ingresemos nuevamente la representación del patrón. Supongamos que dibujamos algo parecido a la letra “A”.

Una vez dibujada presionamos el botón Reconocer en el medio de la pantalla. Si la Red reconoce el dibujo que acabamos de ingresar nos mostrará a la derecha el patrón que le enseñamos al comienzo (en el proceso de enseñanza). Caso contrario nos avisa que no reconoce el dibujo que acabamos de ingresar.

También observamos que nos muestra un número al lado de la etiqueta Patrón. Este número corresponde con el caracter ASCII. Esto es porque en el código del programa consideramos como “caracteres” a los posibles patrones de entrada al sistema. El número al lado de la etiqueta Neurona Elegida corresponde al número de la neurona dentro de toda la Red Neuronal. Esto significa que la neurona 86 es la ganadora y por lo tanto la que se activo. Esta neurona es la que más cerca estuvo del patrón que pretendíamos reconocer. Ahora supongamos que ingresamos una letra “A” pero con mucho ruido (ó suciedad). Para ello presionamos el botón Borrar y queda limpio el sector de dibujo.

Page 8: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 7

Este dibujo contiene partes incompletas de la letra “A”. De todas maneras la Red tratará de reconocer este dibujo. Presionamos el botón Reconocer y como vemos la Red interpretó y reconoció el dibujo. Por lo tanto nos muestra el resultado a la derecha junto con el número de patrón que ella aprendió y la neurona que estuvo más cerca de reconocer el patrón. Intentamos nuevamente ingresar un dibujo incompleto o con ruido de la letra “A”. Esta vez la letra está más borrosa. Cuando presionamos el botón Reconocer vemos que la Red no interpreta el dibujo y por lo tanto no reconoce el caracter.

Para enseñar nuevamente a la Red un nuevo Patrón presionamos el botón Volver a Educar a la izquierda de la pantalla. Esta acción provocará que se descarte la Red que está funcionando hasta ese momento.

Page 9: Redes Neuronales

Inteligencia Artificial 2008 - TPNº5 - R. Neuronales - Muccela José Daniel

UTN FRT 8

Muchas veces la Red cae en la memorización de los Patrones. En estos casos la solución puede venir dada por:

1. Aumentar el número de Neuronas, ó

2. Agregar capas intermedias.