Você está na página 1de 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


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 =
[X1i, X2i, ..., Xni]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


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.
ESPACIO DE
CARACTERÍSTICAS

ESPACIO DE ESPACIO DE
PATRONES DECISIÓN
Extractor
Salida
Señal
Sensor Clasificador
Digitalizada

Selector

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á:
1 1 1
0 0 1
1 1 1
1 0 0
1 1 1
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


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 Patrones
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15
1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1
1 0 1
1 0 1
1 0 1
1 1 1

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

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

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

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

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

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

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

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

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


1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 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

Patrón de Entradas Patrón Salidas


X D
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 0
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1
2 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 0 1 0
3 1 1 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 1 1
4 1 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 0 0
5 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1
6 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0
7 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1
8 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0
9 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1

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


Tabla 3 Código en MATLAB®

COMANDOS COMENTARIOS
X=[ Patrones de Entrada.
Escriba los valores que debe tener la
]; matriz X
D=[ 0 0 0 0 0 0 0 0 1 1; Patrones de Salida
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];
red=newp(minmax(X),4); Definición de la red
red.iw{1,1}=rand(4,10); Asignación de pesos aleatorios
red.b{1}=rand(4,1);
red.trainParam.show=1; Evolución de la red en cada iteración
disp('los pesos inciales son:') Muestra los pesos asignados por la función
Pesos=red.iw{1,1} random.
Bias=red.b{1}
pause(2);
red = train(red,X,D) Entrenamiento de la red
disp('para validar la red, digite el Validación de la red.
vector de patrones de entrada') Se pide digitar un patrón para verificar el
disp('Numero de 10 binarios entre [ ]') funcionamiento de la red entrenada.
X1=input('X1=') Entrada del patrón
Y = sim(red, X1'); Simulación de la red
disp('el numero resultante, en binario, leído de Presentación del valor correspondiente
arriba para abajo es:') digitado por el usuario ( se presenta en
Y 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
Performance is 0, Goal is 0
10
Training­Blue

­1
10

­2
10
0 5 10 15 20 25 30
34 Epochs

Fig. 2.2 Evolución del error de entrenamiento

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


Patrón de Entrada Vector de Entrada Valor de Salida
Para Validación X1 Y
0
0
0 0
0 1
[1 1 1 0 0 1 0 0 1 0 0 [0 1 1 1]  7
0 0 0 1 0 0 1]
0 0 1
0 0 1

 Segunda ejecución:

0
Performance is 0, Goal is 0
10
Training­Blue

­1
10

­2
10
0 5 10 15 20 25 30 35 40
42 Epochs

Fig. 2.3 Evolución del error de entrenamiento

Patrón de Entrada Vector de Entrada Valor de Salida


Para Validación X1 Y
1 1
1 0
1
1
[1 1 1 1 0 1 1 1 1 0 0 [1 0 0 1] 9
1 1 1 1 1 1 1]
0 0 1
1 1 1

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


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 Significado


10 Número de patrones de entrenamiento
35 Número de entradas de cada patrón
4 Número de salidas de cada patrón
11111 Patrón No. 1 . Que corresponde al numero
10001 cero
10001
10001
10001
10001
111110000

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


00100 Patrón No. 2 Que corresponde al numero
01100 uno
10100
00100
00100
00100
001000001
11111 Patrón No. 3 Que corresponde al numero
00001 dos
00001
11111
10000
10000
111110010

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


 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

Você também pode gostar