Lab_S2

9
Resumen—En esta practica de laboratorio se realizo el reconocimiento de caracteres como es caso de: Vocales, código hexadecimal, letras en particular y algunas figuras geométricas básicas. Para la ejecución y desarrollo se usaron las herramientas computacionales Matlab ® y UVSRNA2. Además se realizo un entorno de programación visual (GUIDE) en la cual efectuamos el aprendizaje, almacenamiento y validación de la red neuronal. Palabras Claves—Red Neuronal, Perceptrón, Patrones, Clasificación, UV-SRNA, GUIDE. I.INTRODUCCIÓN Por medio de las Redes Neuronales Artificiales, en particular con la red Perceptrón solo se pueden resolver problemas linealmente separables; la clasificación de patrones es un buen ejemplo. A pesar de esta limitante, con esta arquitectura se pueden hacer aplicaciones muy interesantes tal como es el reconocimiento de patrones en general (Números 0 - 9) y de caracteres especiales (Vocales). La Clasificación de Patrones puede definirse como la asignación de una muestra, correspondiente a un objeto o evento físico, a una de varias categorías o clases previamente especificadas. Entiéndase por clase un conjunto de patrones que poseen características comunes que los diferencian de otros elementos pertenecientes a un mismo conjunto universo. Frecuentemente los problemas de clasificación se han dirigido hacia un modelo matemático abstracto que proporciona las bases teóricas para el diseño de un clasificador. Por supuesto, cualquier aplicación en concreto está íntimamente ligada a las características especiales del problema a solucionar; por ejemplo, el tipo de sensor utilizado y las características físicas que unen o separan las clases del universo de trabajo. El diseño de un clasificador consta de dos partes fundamentales: La primera, el aprendizaje que es la adquisición de muestras de las diferentes clases y el encuentro de las fronteras o reglas que separan dichas clases; La segunda, es probar el comportamiento del clasificador diseñado, utilizando muestras cuya identidad de clase es desconocida. [1] II. DESARROLLO DEL LABORATORIO a. Interfaz Grafica (GUIDE) FIG.1. IMAGEN GUIDE DESARROLLADA El Perceptrón aplicado a la clasificación de Caracteres Luz Karime Ramírez – 0711078, Iván Hernando González - 0611129 IEEE, Universidad del Valle, Cali, Colombia Email: {mime214, espartaco113}@hotmail.com

Transcript of Lab_S2

Page 1: Lab_S2

Resumen—En esta practica de laboratorio se realizo el reconocimiento de caracteres como es caso de: Vocales, código hexadecimal, letras en particular y algunas figuras geométricas básicas. Para la ejecución y desarrollo se usaron las herramientas computacionales Matlab® y UVSRNA2. Además se realizo un entorno de programación visual (GUIDE) en la cual efectuamos el aprendizaje, almacenamiento y validación de la red neuronal.

Palabras Claves—Red Neuronal, Perceptrón, Patrones, Clasificación, UV-SRNA, GUIDE.

I. INTRODUCCIÓN

Por medio de las Redes Neuronales Artificiales, en particular con la red Perceptrón solo se pueden resolver problemas linealmente separables; la clasificación de patrones es un buen ejemplo. A pesar de esta limitante, con esta arquitectura se pueden hacer aplicaciones muy interesantes tal como es el reconocimiento de patrones en general (Números 0 - 9) y de caracteres especiales (Vocales).

La Clasificación de Patrones puede definirse como la asignación de una muestra, correspondiente a un objeto o evento físico, a una de varias categorías o clases previamente especificadas. Entiéndase por clase un conjunto de patrones que poseen características comunes que los diferencian de otros elementos pertenecientes a un mismo conjunto universo. Frecuentemente los problemas de clasificación se han dirigido hacia un modelo matemático abstracto que proporciona las bases teóricas para el diseño de un clasificador. Por supuesto, cualquier aplicación en concreto está íntimamente ligada a las características especiales del problema a solucionar; por ejemplo, el tipo de sensor utilizado y las características físicas que unen o separan las clases del universo de trabajo.

El diseño de un clasificador consta de dos partes fundamentales: La primera, el aprendizaje que es la adquisición de muestras de las diferentes clases y el encuentro de las fronteras o reglas que separan dichas clases; La segunda, es probar el comportamiento del clasificador diseñado, utilizando muestras cuya identidad de clase es desconocida. [1]

II. DESARROLLO DEL LABORATORIO

a. Interfaz Grafica (GUIDE)

FIG.1. IMAGEN GUIDE DESARROLLADA

La figura muestra como esta diseñada la interfaz grafica, la cual esta compuesta de:

Panel de Entrada:- Dibujar: Inicializa la red - Entrenar: Entrena la red - Guardar: Guarda la red ya entrenada- Cargar : Carga una red al validador ya entrenada - Salir: Termina el programa- Alfa: Tasa de aprendizaje- Patrones de reconocimiento

Hexadecimal Vocales Nombre Figuras

Panel de SalidaEncontramos la determinada casilla donde podemos se registra el valor que la red arroja después de la validación.

Para poder realizar el entrenamiento y la posterior identificación de caracteres se definió una matriz 7x5. A continuación se muestran algunos de los patrones utilizados:

El Perceptrón aplicado a la clasificación de Caracteres

Luz Karime Ramírez – 0711078, Iván Hernando González - 0611129

IEEE, Universidad del Valle, Cali, Colombia Email: {mime214, espartaco113}@hotmail.com

Page 2: Lab_S2

0 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 1 1 0 0 0 0 0 0 1 0 01 0 0 0 1 1 0 0 0 0 0 0 1 0 01 1 1 1 1 1 1 1 1 1 0 0 1 0 01 0 0 0 1 1 0 0 0 0 0 0 1 0 01 0 0 0 1 1 0 0 0 0 0 0 1 0 01 0 0 0 1 1 1 1 1 1 1 1 1 1 1

FIG.2. CARACTERES CORRESPONDIENTES A LAS VOCALES

1 0 0 0 0 1 0 0 0 1 1 1 1 1 11 0 0 0 0 1 0 0 0 1 0 0 0 0 11 0 0 0 0 1 0 0 0 1 0 0 0 1 01 0 0 0 0 1 0 0 0 1 0 0 1 0 01 0 0 0 0 1 0 0 0 1 0 1 0 0 01 0 0 0 0   1 0 0 0 1 1 0 0 0 01 1 1 1 1   1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 00 0 1 0 0 1 0 0 0 1 1 0 0 0 1 1 1 10 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 00 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 00 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 00 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 01 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0

FIG.3. CARACTERES CORRESPONDIENTES AL NOMBRE DE UN INTEGRANTE

1 1 1 1 1 0 0 1 0 0 1 1 1 1 11 0 0 0 1 0 0 1 0 0 0 0 0 0 11 0 0 0 1 0 0 1 0 0 0 0 0 0 11 0 0 0 1 0 0 1 0 0 1 1 1 1 11 0 0 0 1 0 0 1 0 0 1 0 0 0 01 0 0 0 1 0 0 1 0 0 1 0 0 0 01 1 1 1 1 0 0 1 0 0 1 1 1 1 1

FIG.4. CARACTERES CORRESPONDIENTES A LOS CARACTERES DECIMALES

1 0 0 0 0 1 1 1 1 1 0 0 0 0 11 0 0 0 0 1 0 0 0 0 0 0 0 0 11 0 0 0 0 1 0 0 0 0 0 0 0 0 11 1 1 1 1 1 0 0 0 0 1 1 1 1 11 0 0 0 1 1 0 0 0 0 1 0 0 0 11 0 0 0 1 1 0 0 0 0 1 0 0 0 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1

FIG.5. CARACTERES CORRESPONDIENTES A LOS CARACTERES HEXADECIMALES

0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 0 0 0 0 0 0 0 1 0 01 0 0 0 1 1 1 1 1 1 0 1 0 1 01 0 0 0 1 1 1 1 1 1 0 1 0 1 01 0 0 0 1 1 1 1 1 1 1 0 0 0 11 1 1 1 1 0 0 0 0 0 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0

FIG.6. CARACTERES CORRESPONDIENTES A LAS FIGURAS GEOMETRICAS BASICAS

Con las anteriores figuras donde observamos los caracteres y a la vez con estos nos servirán de guía para obtener los patrones de aprendizaje y su posterior entrenamiento.

b. ProgramaciónA continuación se muestra el código general desarrollado en Matlab®, utilizado para la creación de la red neuronal. Este set de instrucciones nos será de utilidad para los diferentes patrones de entrada. Podemos encontrar en la primera parte la definición del problema (Entradas y Salidas); seguido de la definición de la red y su respectivo entrenamiento.

X = [‘Patrones de entrada de la red’]; %Patrones de entradaX=X';D=[‘Patrones de Salida’]; %Patrones de salida

red=newp(minmax(X),4); % Definicion de la redred.iw{1,1}=rand(4,15); % Asignación de pesos aleatoriosred.b{1}=rand(4,1);red.trainParam.show=1; %Evolución de la red en cada iteracióndisp('los pesos iníciales son:') %Visualizamos los valores aleatorios que asume %la primera vezPesos=red.iw{1,1}Bias=red.b{1}pause(2);red = train(red,X,D)

Reconocimiento de las VocalesLas vocales a identificar y su respectiva forma se presenta en la Figura No. 2.

FIG.7. VALIDACIÓN PARA LA LETRA ‘I’

FIG.8. EVOLUCIÓN DEL ERROR DURANTE EL ENTRENAMIENTO DE LA RED EN LAS VOCALES

De acuerdo a la Figura No. 7 y a las diferentes pruebas echas (introducir patrón por patrón y validar) se obtuvieron resultados satisfactorios: Error = 0.

Reconocimiento del Código Hexadecimal

Page 3: Lab_S2

FIG.9. VALIDACIÓN PARA EL NUMERO ‘3’

FIG.10. EVOLUCIÓN DEL ERROR DURANTE EL ENTRENAMIENTO DE LA RED EN EL CODIGO HEXADECIMAL

Al igual que en las otras redes y por medio de la evolución del error (Figura 10) error es cero. Se verifico con todos los parámetros del código hexadecimal (0…9 –A…F), logrando resultados afirmativos.

Reconocimiento de las letras del nombre

Para esta parte del utilizamos un nombre de un integrante y creamos una casilla que el usuario puede verificar que la letra que se esta introduciendo pertenece al nombre verdaderamente. Los respectivos patrones se encuentran en la Figura No. 3.

FIG.11. VALIDACIÓN PARA LA LETRA ‘I’

Para esta red encontramos un error igual a cero; reconoce todos los parámetros de entrenamiento (parámetros de control).

Reconocimiento de las figuras geométricas básicas

Los patrones utilizados para el desarrollo de este punto son los mostrados en la Figura No. 6.

FIG.12. VALIDACIÓN PARA LA FIGURA ROMBO

Page 4: Lab_S2

FIG.13. EVOLUCIÓN DEL ERROR DURANTE EL ENTRENAMIENTO DE LA RED EN FIGURAS GEOMETRICAS BASICAS

Para la red de reconocimiento de figuras geométricas el error fue de cero. Para este punto solo reconoce la figura exactamente mostrada. Si por el usuario desarrolla una figura de un tamaño mas grande o pequeño la red no podrá determinar su clasificación. (Ver Observaciones).

Con UV-SRNA2.0

Reconocimiento de las VocalesSe procedió a cargar la red con los patrones de entrenamiento previamente digitados:

Datos en el Archivo

Significado

5 # Patrones de entrenamiento35 # Entradas de cada patrón

4 # Salidas de cada patrón

1 1 1 1 11 0 0 0 11 0 0 0 11 1 1 1 11 0 0 0 11 0 0 0 11 0 0 0 1 0 0 0 0

Patrón No. 1 corresponde a la vocal ‘A’

1 1 1 1 11 0 0 0 01 0 0 0 01 1 1 1 11 0 0 0 01 0 0 0 01 1 1 1 1 0 0 0 1

Patrón No.2 corresponde a la vocal ‘E’

1 1 1 1 10 0 0 0 00 0 1 0 00 0 1 0 00 0 1 0 00 0 1 0 01 1 1 1 1 0 0 1 0

Patrón No.3 corresponde a la vocal ‘I’

1 1 1 1 11 0 0 0 11 0 0 0 11 0 0 0 11 0 0 0 11 0 0 0 11 1 1 1 1 0 0 1 1

Patrón No. 4 corresponde a la vocal ‘O’

1 0 0 0 11 0 0 0 11 0 0 0 11 0 0 0 1

Patrón No. 5 corresponde a la vocal ‘U’

1 0 0 0 11 0 0 0 11 1 1 1 1 0 1 0 0

TABLA 1. CODIFICACIÓN DE LOS PATRONES DE ENTRENAMIENTO PARA EL RECONOCIMIENTO DE LAS VOCALES

Con los patrones ya cargados se procede a inicializar y luego a entrenar.

FIG.14. VALIDACIÓN DE LA LETRA ‘U’

En la anterior figura observamos el modulo con el primer patrón a introducir (‘A’). Al validar en el espacio de salidas obtenemos cero (0) el cual es el valor correspondiente a su salida (verdadero).

Datos del Archivo Significado35 # de neuronas en la capa de

entrada4 # de neuronas en la capa de

salida0.0780 0.4200 0.2040 0.4380 -0.1020 0.2820 -0.3240 -0.1080 -0.7200 0.3210 0.5700 0.3960 0.6060 -0.3060 -0.0930 0.4980 -0.7080 0.2040 -0.6180 -0.4200 0.3360 -0.5940 0.6600 0.9000 -0.2190 -0.6360 -0.8820 -0.4740 0.7560 -0.4350 -0.7500 -0.5850 0.3330 -0.6570 -0.6600

Pesos Wij

Donde i=# neuronas capas de entrada j=# neuronas capa de salidaW11

-0.7500 θ1

-0.0600 -0.7740 -0.3420 0.3060 -0.9780 0.6270 0.3780 -0.6300 0.7020 -0.4470 -0.2010 0.5940 0.7530 -0.5760 0.6150 0.4470 -1.1070 -0.0300 -0.3150 0.8070 -0.3450 -0.5760 -0.1470 -0.6840 -0.7170 0.6630 0.3240 -0.0390 0.9000 -0.3750

W12

Page 5: Lab_S2

0.5880 0.5010 0.3210 -0.4710 0.6240-0.9780 θ2

-0.7380 -0.3300 0.6240 0.8580 -0.8280 -0.9630 0.5040 0.8460 0.7920 0.3570 -0.5850 0.6840 0.2070 -0.3240 0.3930 0.5670 0.1320 0.1950 -0.0660 -0.4230 -0.2610 0.3240 0.7110 -0.4140 -0.2370 0.0630 -0.1800 -0.6030 0.9000 0.1590 -0.7380 0.0960 0.1140 0.9780 0.7560

W13

0.1980 θ3

0.4860 0.0690 -0.1650 1.0770 -0.8100 0.4920 0.0180 0.7380 0.0360 0.7320 -0.4800 -0.3600 -0.4200 0.5040 -0.8520 0.4560 0.2640 0.2220 -0.5820 0.4380 0.6000 -0.6300 -0.9600 0.0900 0.0120 -0.6960 0.7380 0.5700 -0.0360 -0.7800 -0.0180 -0.0720 0.0900 0.3060 -0.8460

W14

0.3600 θ4

TABLA 2. ESTRUCTURA Y VALORES DEL ARCHIVO QUE ALMACENA UNA RED NEURONAL TIPO PERCEPTRÓN

Como se observa en la Figura 15, el error para la red es cero (0); lo cual inicialmente nos indica que se cumplió con el valor ideal. Se llego a este valor ya que los patrones de entrenamiento como los ingresados coincidían y eran limitados por los patrones de aprendizaje. Es de notar que al quitarle características a la señal de entrada (carácter) hasta cierto punto máximo dos (check button) la red seguía reconociendo el carácter entregado a la red.

FIG.15. GRAFICA DE EVOLUCION DEL ERROR PARA LA RED ENTRENADA

Reconocimiento de las letras del nombre

Datos en el archivo Significado

3 # Patrones de entrenamiento

35 # Entradas de cada patrón

4 # Salidas de cada patrón

1 0 0 0 01 0 0 0 01 0 0 0 01 0 0 0 01 0 0 0 01 0 0 0 01 1 1 1 1 0 0 0 0

Patrón No. 1 corresponde a la vocal ‘L’

1 0 0 0 11 0 0 0 11 0 0 0 11 0 0 0 11 0 0 0 11 0 0 0 11 1 1 1 1 0 0 0 1

Patrón No. 2 corresponde a la vocal ‘U’

1 1 1 1 10 0 0 0 10 0 0 1 00 0 1 0 00 1 0 0 01 0 0 0 01 1 1 1 1 0 0 1 0

Patrón No. 3 corresponde a la vocal ‘Z’

TABLA 3. CODIFICACIÓN DE LOS PATRONES DE ENTRENAMIENTO PARA EL RECONOCIMIENTO DE LOS NOMBRES

Después de inicializar y entrenar la red (buscar el mejor resultado), pasamos a validar una entrada determinada. Para ello introducimos la letra ‘U’, obteniendo una salida verdadera. Después se procedió a quitarle información a la entrada y pasamos a validar la red, de lo cual obtuvimos que la red continua identificando el patrón de entrada.

FIG.16. VALIDACION PARA LA LETRA ‘U’

III. OBSERVACIONES

Es muy difícil proporcionarle a una red neural todos los patrones de entrenamiento, cuando estamos

Page 6: Lab_S2

realizando la clasificación de caracteres; esto se debe a que las personas o usuarios pueden interpretar de diferentes maneras los caracteres, por ejemplo para una persona x el cuadrado es un rectángulo y viceversa para una persona y.

No se entrenaron los patrones suficientes para poder reconocer las figuras en diferentes formas y tamaños, es decir, solo se utilizo un solo patrón para cada figura.

Por razones de muchas similitud trabajamos con letras en minúsculas y mayúsculas en la grilla de validación, por ejemplo el numero 8 se ve de la misma manera que la letra B, por eso aparece su similar en minúscula.

IV. CONCLUSIONES

Se realizo el reconocimiento de caracteres por medio de la herramienta computacional como es Matlab®, como también con el programa UVSRNA2. Por medio de ellas logramos en primera parte cumplir con los objetivos propuestos para el laboratorio.

Las redes implementadas al simularle un ruido o perdida de información (deshabilitar una casilla aleatoria), presenta un comportamiento de caracterización de la red, demostrando así que la red no esta memorizando.

Con este tipo de problemas se puede ver el potencial que tienen las Redes Neuronales en la solución de problemas lineales, a la vez de deslumbrar sus desventajas frente a la resolución de problemas más avanzados, que fueron surgiendo en el transcurso del desarrollo de la práctica, como fue letra manuscrita o trabajar con una cadena de caracteres.

El mejoramiento del aprendizaje y su posterior efectividad se debe de introducir patrones con ruido y diferentes perspectivas de caracteres habitualmente usadas o reconocidas por diferentes personas, aumentaría la efectividad, sin olvidar que seria muy difícil llegar a un error de cero o a una efectividad del 100%, pues debemos tener en la cuenta la observación presentada en este informe y las limitaciones que tiene el Perceptrón.

Al aumentar los patrones de entrenamiento podemos caer el error de que la red no generalice sino que memorice; para este caso es un poco imposible por la observación anterior pero se debe tener en presente.

V. BIBLIOGRAFIA

[1] Guía de Laboratorio No.2. Perceptrón Aplicado a la Clasificación de Caracteres. Universidad del Valle. 2010.

[2] Caicedo, Eduardo. López, Jesús. Una Aproximación a las Redes Neuronales Artificiales. Programa Editorial Universidad del Valle. 2009.[3] Diego Barragan. Manual para interfaz grafica de usuario en Matlab®. [email protected]. www.matpic.com.

Page 7: Lab_S2