Guias_RNA_02

10
UNIVERSIDAD DEL VALLE FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA SESIÓN DE LABORATORIO No. 2 EL PERCEPTRÓN APLICADO A LA CLASIFICACIÓN DE CARACTERES 1. OBJETIVOS Al finalizar la sesión de la laboratorio el estudiante estará en capacidad de: Conocer la manera como se puede usar una red neuronal tipo Perceptrón en la clasificación de caracteres. Realizar un reconocimiento de caracteres usando el Perceptrón del MATLAB ® Realizar un reconocimiento de caracteres usando el UVSRNA 2. INTRODUCCIÓN AL RECONOCIMIENTO Y CLASIFICACIÓN DE PATRONES Como ya se ha mencionado anteriormente, el Perceptrón es una red que solo puede resolver problemas linealmente separables; a pesar de esta limitante, con él se pueden hacer aplicaciones muy interesantes tal como el reconocimiento de patrones en general y de caracteres escritos en particular, como se mostrará en el desarrollo de esta guía. Clasificación de Patrones puede definirse en su forma más general 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, es la adquisición de muestras de las diferentes clases y el encuentro de las fronteras o reglas que separan dichas clases; este proceso es llamado entrenamiento o aprendizaje. La segunda, es probar el comportamiento del clasificador diseñado, utilizando muestras cuya identidad de clase es desconocida. Universidad del Valle – P.S.I. RNA - 1

Transcript of Guias_RNA_02

Page 1: Guias_RNA_02

UNIVERSIDAD DEL VALLEFACULTAD DE INGENIERÍA

ESCUELA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

SESIÓN DE LABORATORIO No. 2

EL PERCEPTRÓN APLICADO A LA CLASIFICACIÓN DE CARACTERES

1. OBJETIVOS

Al finalizar la sesión de la laboratorio el estudiante estará en capacidad de:

Conocer la manera como se puede usar una red neuronal tipo Perceptrón en la clasificación de caracteres.

Realizar un reconocimiento de caracteres usando el Perceptrón del MATLAB®

Realizar un reconocimiento de caracteres usando el UVSRNA

2. INTRODUCCIÓN AL RECONOCIMIENTO Y CLASIFICACIÓN DE PATRONES

Como ya se ha mencionado anteriormente, el Perceptrón es una red que solo puede resolver problemas linealmente separables; a pesar de esta limitante, con él se pueden hacer aplicaciones muy interesantes tal como el reconocimiento de patrones en general y de caracteres escritos en particular, como se mostrará en el desarrollo de esta guía.

Clasificación de Patrones puede definirse en su forma más general 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, es la adquisición de muestras de las diferentes clases y el encuentro de las fronteras o reglas que separan dichas clases; este proceso es llamado entrenamiento o aprendizaje. La segunda, es probar el comportamiento del clasificador diseñado, utilizando muestras cuya identidad de clase es desconocida.

Universidad del Valle – P.S.I. RNA - 1

Page 2: Guias_RNA_02

El problema típico de aplicación de las técnicas de reconocimiento de patrones, es aquél en donde conociendo una muestra controlada por clase, es necesario asignar a una de las clases un nuevo dato cuya pertenencia a una clase se desconoce. Dentro de una amplia gama de aplicaciones podemos destacar, entre otras, las siguientes: reconocimiento de caracteres, identificación de recursos naturales a través de imágenes satelitales, control de calidad en procesos de fabricación, reconocimiento auditivo de patrones, identificación de movimientos sísmicos y aplicaciones meteorológicas.

2.1 Definición del problema

El reconocimiento se realiza cuando se utiliza una regla para asignar a una muestra una clase determinada; el patrón se define con base en un proceso de aprendizaje. Para definir un patrón se utiliza una muestra controlada de dicho patrón. Los patrones de esta muestra son ejemplos de cada una de las clases de patrones. Estos son los elementos básicos que conforman los sistemas de clasificación de patrones.

Un patrón j-ésimo está definido por el vector XJ = [X1j,X2j, ... Xfj, ...,XFj]T , en donde el elemento Xfj hace referencia al valor de la característica f-ésima en el patrón j-ésimo y F es el número total de características que describen el patrón. El número de clases, que llamaremos C, en los problemas de reconocimiento de patrones es finito, de modo que i = 1,2, ...,C es la notación general para una clase y Ci el conjunto de patrones que lo integran. Se dice que es una muestra controlada, cuando se conoce perfectamente una muestra Xi = [X1

i, X2i, ..., Xn

i]T de ni patrones. Finalmente, Xfji se define como el valor de la característica

f en el patrón j que pertenece a la clase i. La tarea final de un sistema de reconocimiento de patrones consiste en asignar el patrón Xj a la clase que signifique menor probabilidad de error en la clasificación.

2.2.Fases de un Sistema de Reconocimiento de Patrones

La problemática de un clasificador comienza con la definición de las clases objeto de estudio y la representación adecuada de la muestra controlada de cada una de ellas. El problema termina cuando se ha obtenido un conjunto de reglas de decisión que permite asignar a un nuevo patrón, cuya clase de pertenencia se desconoce, una clase para la que se estime un menor riesgo en la asignación. Como en cualquier problema de tipo práctico, es necesario ser cuidadosos en la preparación y análisis de los datos, en la selección e implantación de los métodos apropiados. La precipitación produce generalmente, grandes fracasos en la obtención de resultados.

El diseño de un sistema de reconocimiento de patrones está conformado por diferentes espacios que constituyen un modelo abstracto y general de clasificación: Adquisición de datos, formación de los tipos de patrones, selección de características, especificación del algoritmo de clasificación y estimación del error del clasificador. Un sistema de clasificación de patrones, representado en la figura 2.1, está constituido por tres etapas principales:

Universidad del Valle – P.S.I. RNA - 2

Page 3: Guias_RNA_02

Espacio de Patrones. Detección, adquisición y pre-procesamiento de la señal proveniente del sensor. La señal de entrada del sensor es convertida a una forma más adecuada para el sistema de procesamiento.

Espacio de Características. Definición de las características que describen a las clases desde la señal de entrada. Adicionalmente, se seleccionan o extraen las características más relevantes o representativas para el problema, obteniendo una reducción en el tamaño de los datos a procesar,. Este punto implica la sistematización de los datos para ser llevados al clasificador.

Espacio de decisión. El clasificador usa esta información para asignar el dato de entrada a una categoría proveniente de un conjunto de categorías pre-establecidas, dependiendo de sus características.

SeñalDigitalizada

Extractor

Selector

ClasificadorSensorSalida

ESPACIO DEPATRONES

ESPACIO DEDECISIÓN

ESPACIO DECARACTERÍSTICAS

Fig. 2.1 Sistema De Clasificación De Patrones

3. PROCEDIMIENTO

3.1 Perceptrón para realizar un reconocimiento de caracteres en MATLAB®

El objetivo es entrenar un Perceptrón que pueda identificar los números del 0 al 9 donde cada número se puede definir en una matriz de 5*3. Por ejemplo el número 2 será:

0111

11

110

1 1 1

0

1 0

Para resolver el problema, es necesario verificar todos los patrones correspondientes a cada número y asignarles el respectivo valor de salida. En nuestro caso, definiremos por patrón un vector de entrada de 15 elementos y un vector de salida de 4 elementos, correspondientes al número binario equivalente.

Universidad del Valle – P.S.I. RNA - 3

Page 4: Guias_RNA_02

El vector de patrones de entrada queda definido como se muestra en la Tabla 1, donde cada número decimal se codifica con un vector de 15 bits.

Tabla 1. Vector de Patrones correspondiente a los caracteres decimales

Carácter Vector de PatronesB1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15

0

111

1

1

01

1

1 1 1

1

1 0

1 1 1 1 0 1 1 0 1 1 0 1 1 1 1

0100

1

1

00

1

0 0 1

0

0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

0

111

1

1

11

0

1 1 1

0

1 0

1 1 1 0 0 1 1 1 1 1 0 0 1 1 1

0

111

1

1

10

1

1 1 1

0

0 0

1 1 1 0 0 1 0 1 1 0 0 1 1 1 1

0

101

1

1

11

1

0 0 1

1

0 0

1 0 1 1 0 1 1 1 1 0 0 1 0 0 1

0

111

1

0

11

1

1 1 1

1

0 0

1 1 1 1 0 0 1 1 1 0 0 1 1 1 1

0

111

1

0

11

1

1 1 1

1

1 0

1 1 1 1 0 0 1 1 1 1 0 1 1 1 1

0

111

1

1

00

1

0 0 1

0

0 0

1 1 1 0 0 1 0 0 1 0 0 1 0 0 1

0

111

1

1

11

1

1 1 1

1

1 0

1 1 1 1 0 1 1 1 1 1 0 1 1 1 1

Universidad del Valle – P.S.I. RNA - 4

Page 5: Guias_RNA_02

0

111

1

1

11

1

1 1 1

1

0 0

1 1 1 1 0 1 1 1 1 0 0 1 1 1 1

Ahora se necesita definir la salida que deseamos genere la red. Para lograr este propósito se debe codificar de alguna manera la información que generará la red en sus neuronas de salida. Una alternativa consiste en que la salida de la red esté formada por el código binario del número que se le está presentando a la entrada. Es decir, si a la red le llegan como entrada los 15 bits correspondientes al número 0, ella generará el código binario del cero expresado en 4 bits (0 0 0 0); o en otro caso, si le llegan como entrada los 15 bits correspondientes al número 1, ella generará el código binario del uno expresado en 4 bits (0 0 0 1) y así con el resto de patrones.

Teniendo en cuenta estos resultados los patrones de entrenamiento para los números decimales se presentan en la Tabla 2. En la Tabla 3 se presenta el código en MATLAB®

para lograr el entrenamiento adecuado.

Tabla 2 Codificación de los patrones de entrenamiento para el reconocimiento de caracteres decimales en MATLAB

Universidad del Valle – P.S.I. RNA - 5

Patrón de EntradasX

Patrón SalidasD

B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 23 22 21 20

0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 01 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 12 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 0 1 03 1 1 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 1 14 1 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 0 05 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 16 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 07 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 18 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 09 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1

Page 6: Guias_RNA_02

Tabla 3 Código en MATLAB®

COMANDOS COMENTARIOSX=[

];

Patrones de Entrada.Escriba los valores que debe tener la matriz X

D=[ 0 0 0 0 0 0 0 0 1 1; 0 0 0 0 1 1 1 1 0 0; 0 0 1 1 0 0 1 1 0 0; 0 1 0 1 0 1 0 1 0 1];

Patrones de Salida

red=newp(minmax(X),4); Definición de la redred.iw{1,1}=rand(4,10);red.b{1}=rand(4,1);

Asignación de pesos aleatorios

red.trainParam.show=1; Evolución de la red en cada iteracióndisp('los pesos inciales son:')Pesos=red.iw{1,1}Bias=red.b{1}pause(2);

Muestra los pesos asignados por la función random.

red = train(red,X,D) Entrenamiento de la reddisp('para validar la red, digite el vector de patrones de entrada')disp('Numero de 10 binarios entre [ ]')

Validación de la red.Se pide digitar un patrón para verificar el funcionamiento de la red entrenada.

X1=input('X1=') Entrada del patrónY = sim(red, X1'); Simulación de la reddisp('el numero resultante, en binario, leído de arriba para abajo es:')Y

Presentación del valor correspondiente digitado por el usuario ( se presenta en forma binaria –4 bits)

Como ejemplo se presentan dos entrenamientos de la red; para cada uno se ilustra la gráfica de evolución en el entrenamiento y el patrón introducido para el proceso de validación.

Primera Ejecución

0 5 10 15 20 25 3010

­2

10­1

100 Performance is 0, Goal is 0

34 Epochs

Tra

inin

g­B

lue

Fig. 2.2 Evolución del error de entrenamiento

Universidad del Valle – P.S.I. RNA - 6

Page 7: Guias_RNA_02

Patrón de EntradaPara Validación

Vector de EntradaX1

Valor de SalidaY

0000

01

00

1

0 0 1

0

0 0

[1 1 1 0 0 1 0 0 1 0 0 1 0 0 1]

[0 1 1 1] 7

Segunda ejecución:

0 5 10 15 20 25 30 35 4010

­2

10­1

100 Performance is 0, Goal is 0

42 Epochs

Tra

inin

g­B

lue

Fig. 2.3 Evolución del error de entrenamiento

Patrón de EntradaPara Validación

Vector de EntradaX1

Valor de SalidaY

0111

11

111

1 1 1

1

0 0

[1 1 1 1 0 1 1 1 1 0 0 1 1 1 1]

[1 0 0 1] 9

3.2 Exportando la Red Neuronal Generada al Simulink®

Teniendo la red entrenada, se puede exportar al Simulink® para verificar su comportamiento de una manera completamente gráfica. Exporte la red al Simulink y valide su desempeño con un diagrama de simulación adecuado.

3.3 Reconocimiento de Caracteres con UVSRNA

En UVSRNA se ha diseñado un modulo especial para verificar la capacidad de un Perceptrón en el reconocimiento de caracteres.

Universidad del Valle – P.S.I. RNA - 7

Page 8: Guias_RNA_02

Fig. 2.4 Interfaz gráfica con el usuario del módulo de reconocimiento de caracteres de UVSRNA

Reconocimiento de los números del 0-9 con UVSRNA

Para realizar esta tarea con UVSRNA, inicialmente se debe crear un archivo texto con los patrones que se desean usar para el proceso de entrenamiento. Este archivo se guarda con la extensión *.pat., siguiendo el formato que se presenta en la Tabla 4. Complete el archivo de patrones con los patrones necesarios para reconocer los números decimales (0-9).

Tabla No.4 Ejemplo de codificación de los patrones de entrenamiento para el reconocimiento de números

Datos en el archivo Significado10 Número de patrones de entrenamiento35 Número de entradas de cada patrón4 Número de salidas de cada patrón1 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 0 0

Patrón No. 1 . Que corresponde al numero cero

Universidad del Valle – P.S.I. RNA - 8

Page 9: Guias_RNA_02

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

Patrón No. 2 Que corresponde al numero uno

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

Patrón No. 3 Que corresponde al numero dos

Una vez creado el archivo, cargue el archivo de patrones desde UV-SRNA ( leer patrones del menú de archivo ).

Con los patrones cargados se procede a inicializar la red, para esto solo es necesario oprimir el botón de inicializar.

Una vez inicializada la red se procede a su entrenamiento, lo cual se logra oprimiendo el botón entrenar. Observe como va evolucionando el error de entrenamiento en la ventana que la aplicación tiene dispuesta para este menester. Este procedimiento se dará por terminado cuando se alcance un error igual a cero.

Fig. 2.5 Evolución del error de entrenamiento en UVSRNA

Universidad del Valle – P.S.I. RNA - 9

Page 10: Guias_RNA_02

Validación del entrenamiento con UVSRNA

Para validar el entrenamiento de la red, el módulo de reconocimiento de caracteres de UVSRNA permite que el usuario en una matriz de check box (casillas de verificación) de 7*5, genere el carácter con el cual desea probarla. Teniendo el carácter definido, con el botón de validar se hace el feedforward de dicha información para visualizar en código binario y decimal la salida que está generando la red. Un ejemplo de esta validación se puede visualizar en la figura 2.3, donde se observa que el patrón de validación corresponde al número cinco y la red efectivamente genera la salida correcta.

Creación de un archivo de red y su carga en UVSRNA

Luego de entrenada la red genere el archivo de red. Con esta información realice un esquema donde muestre el valor del peso con que quedó cada conexión de la red.

4. EJERCICIOS

1. Entrenar una red neuronal tipo Perceptrón tanto en MATLAB® como en UVSRNA que sirva para reconocer las vocales.

2. Entrenar una red neuronal tipo Perceptrón tanto en MATLAB® como en UVSRNA que sirva para reconocer el código hexadecimal.

3. Entrenar una red neuronal tipo Perceptrón tanto en MATLAB® como en UVSRNA que sirva para reconocer las letras del nombre de algún integrante del grupo.

4. Entrenar una red neuronal tipo Perceptrón tanto en MATLAB® como en UVSRNA que sirva para reconocer cuatro figuras geométricas sencillas (un cuadrado, un triángulo, un rectángulo y un rombo).

5. INFORME

1. Consigne las soluciones a las preguntas que aparecen en el transcurso de la guía.

2. Presente el desarrollo de los ejercicios propuestos en el numeral 4 de la guía.

3. Presente conclusiones y comentarios.

Universidad del Valle – P.S.I. RNA - 10