Está en la página 1de 7

Email:

IEEE,{mime214,
Universidad
espartaco113}@hotmail.com
del Valle, Cali, Colombia
El Perceptrón aplicado a la clasificación de
Caracteres
Luz Karime Ramírez – 0711078,
Iván Hernando González - 0611129

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 FIG.1. IMAGEN GUIDE DESARROLLADA
reconocimiento de patrones en general (Números 0 - 9) y de
caracteres especiales (Vocales). La figura muestra como esta diseñada la interfaz grafica, la
cual esta compuesta de:
La Clasificación de Patrones puede definirse como la
asignación de una muestra, correspondiente a un objeto o Panel de Entrada:
evento físico, a una de varias categorías o clases previamente - Dibujar: Inicializa la red
especificadas. Entiéndase por clase un conjunto de patrones - Entrenar: Entrena la red
que poseen características comunes que los diferencian de - Guardar: Guarda la red ya entrenada
otros elementos pertenecientes a un mismo conjunto universo. - Cargar : Carga una red al validador ya entrenada
Frecuentemente los problemas de clasificación se han dirigido - Salir: Termina el programa
hacia un modelo matemático abstracto que proporciona las - Alfa: Tasa de aprendizaje
bases teóricas para el diseño de un clasificador. Por supuesto, - Patrones de reconocimiento
cualquier aplicación en concreto está íntimamente ligada a las  Hexadecimal
características especiales del problema a solucionar; por  Vocales
ejemplo, el tipo de sensor utilizado y las características físicas  Nombre
que unen o separan las clases del universo de trabajo.  Figuras
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 Panel de Salida
desconocida. [1] Encontramos la determinada casilla donde podemos se registra
el valor que la red arroja después de la validación.

II. DESARROLLO DEL LABORATORIO Para poder realizar el entrenamiento y la posterior


a. Interfaz Grafica (GUIDE) identificación de caracteres se definió una matriz 7x5. A
continuación se muestran algunos de los patrones utilizados:


0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 red=newp(minmax(X),4); % Definicion de la red
1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 red.iw{1,1}=rand(4,15); % Asignación de pesos aleatorios
1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 red.b{1}=rand(4,1);
1 1 1 1 1 1 1 1 1 1 0 0 1 0 0
red.trainParam.show=1; %Evolución de la red en cada iteración
1 0 0 0 1 1 0 0 0 0 0 0 1 0 0
disp('los pesos iníciales son:') %Visualizamos los valores
1 0 0 0 1 1 0 0 0 0 0 0 1 0 0
1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 aleatorios que asume %la primera vez
Pesos=red.iw{1,1}
FIG.2. CARACTERES CORRESPONDIENTES A LAS VOCALES
Bias=red.b{1}
pause(2);
1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 red = train(red,X,D)
1 0 0 0 0 1 0 0 0 1 0 0 0 0 1
1 0 0 0 0 1 0 0 0 1 0 0 0 1 0
1 0 0 0 0 1 0 0 0 1 0 0 1 0 0
1 0 0 0 0 1 0 0 0 1 0 1 0 0 0
1 0 0 0 0   1 0 0 0 1 1 0 0 0 0
 Reconocimiento de las Vocales
1 1 1 1 1   1 1 1 1 1 1 1 1 1 1 Las vocales a identificar y su respectiva forma se presenta en
la Figura No. 2.
1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0
0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 1 1 1
0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0
0 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0
0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0
0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0
1 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 1
1 0 0 0 1 0 0 1 0 0 0 0 0 0 1
1 0 0 0 1 0 0 1 0 0 0 0 0 0 1
1 0 0 0 1 0 0 1 0 0 1 1 1 1 1
1 0 0 0 1 0 0 1 0 0 1 0 0 0 0
1 0 0 0 1 0 0 1 0 0 1 0 0 0 0
1 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 1
1 0 0 0 0 1 0 0 0 0 0 0 0 0 1
1 0 0 0 0 1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 0 0 0 0 1 1 1 1 1
1 0 0 0 1 1 0 0 0 0 1 0 0 0 1
1 0 0 0 1 1 0 0 0 0 1 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
FIG.5. CARACTERES CORRESPONDIENTES A LOS CARACTERES
HEXADECIMALES FIG.7. VALIDACIÓN PARA LA LETRA ‘I’

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 1 0 0
1 0 0 0 1 1 1 1 1 1 0 1 0 1 0
1 0 0 0 1 1 1 1 1 1 0 1 0 1 0
1 0 0 0 1 1 1 1 1 1 1 0 0 0 1
1 1 1 1 1 0 0 0 0 0 1 1 1 1 1
0 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ón
A continuación se muestra el código general desarrollado en
Matlab®, utilizado para la creación de la red neuronal. Este set FIG.8. EVOLUCIÓN DEL ERROR DURANTE EL
de instrucciones nos será de utilidad para los diferentes ENTRENAMIENTO DE LA RED EN LAS VOCALES

patrones de entrada.
Podemos encontrar en la primera parte la definición del De acuerdo a la Figura No. 7 y a las diferentes
problema (Entradas y Salidas); seguido de la definición de la pruebas echas (introducir patrón por patrón y validar)
red y su respectivo entrenamiento. se obtuvieron resultados satisfactorios: Error = 0.

X = [‘Patrones de entrada de la red’]; %Patrones de entrada  Reconocimiento del Código Hexadecimal


X=X';
D=[‘Patrones de Salida’]; %Patrones de salida
FIG.11. VALIDACIÓN PARA LA LETRA ‘I’
FIG.9. VALIDACIÓN PARA EL NUMERO ‘3’
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.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 FIG.12. VALIDACIÓN PARA LA FIGURA ROMBO
que se esta introduciendo pertenece al nombre
verdaderamente. Los respectivos patrones se encuentran en la
Figura No. 3.
10001
10001
111110100
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.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á FIG.14. VALIDACIÓN DE LA LETRA ‘U’
determinar su clasificación. (Ver Observaciones).

Con UV-SRNA2.0 En la anterior figura observamos el modulo con el


primer patrón a introducir (‘A’). Al validar en el
 Reconocimiento de las Vocales espacio de salidas obtenemos cero (0) el cual es el
Se procedió a cargar la red con los patrones de entrenamiento valor correspondiente a su salida (verdadero).
previamente digitados:
Datos del Archivo Significado
35 # de neuronas en la capa de
Datos en el Significado
entrada
Archivo
4 # de neuronas en la capa de
5 # Patrones de entrenamiento
salida
35 # Entradas de cada patrón
0.0780 0.4200 Pesos Wij
4 # Salidas de cada patrón 0.2040 0.4380 Donde i=# neuronas capas
11111 Patrón No. 1 corresponde a la vocal ‘A’ -0.1020 0.2820 de entrada
10001 -0.3240 -0.1080
j=# neuronas capa
10001 -0.7200 0.3210
0.5700 0.3960 de salida
11111 W11
10001 0.6060 -0.3060
10001 -0.0930 0.4980
100010000 -0.7080 0.2040
11111 Patrón No.2 corresponde a la vocal ‘E’ -0.6180 -0.4200
10000 0.3360 -0.5940
10000 0.6600 0.9000
11111 -0.2190 -0.6360
10000 -0.8820 -0.4740
10000 0.7560 -0.4350
111110001 -0.7500 -0.5850
0.3330 -0.6570
11111 Patrón No.3 corresponde a la vocal ‘I’
-0.6600
00000
00100 -0.7500 θ1
00100 -0.0600 -0.7740 W12
00100 -0.3420 0.3060
00100 -0.9780 0.6270
111110010 0.3780 -0.6300
11111 Patrón No. 4 corresponde a la vocal ‘O’ 0.7020 -0.4470
10001 -0.2010 0.5940
10001 0.7530 -0.5760
10001 0.6150 0.4470
10001 -1.1070 -0.0300
10001 -0.3150 0.8070
111110011 -0.3450 -0.5760
10001 Patrón No. 5 corresponde a la vocal ‘U’ -0.1470 -0.6840
10001 -0.7170 0.6630
10001 0.3240 -0.0390
10001 0.9000 -0.3750
0.5880 0.5010 FIG.15. GRAFICA DE EVOLUCION DEL ERROR PARA LA RED
0.3210 -0.4710 ENTRENADA
0.6240
-0.9780 θ2
-0.7380 -0.3300 W13  Reconocimiento de las letras del nombre
0.6240 0.8580
-0.8280 -0.9630
0.5040 0.8460 Datos en el Significado
0.7920 0.3570 archivo
-0.5850 0.6840 3 # Patrones de entrenamiento
0.2070 -0.3240 35 # Entradas de cada patrón
0.3930 0.5670 # Salidas de cada patrón
0.1320 0.1950 4
-0.0660 -0.4230 10000 Patrón No. 1 corresponde a la vocal ‘L’
-0.2610 0.3240 10000
0.7110 -0.4140 10000
-0.2370 0.0630
-0.1800 -0.6030 10000
0.9000 0.1590 10000
-0.7380 0.0960 10000
0.1140 0.9780
111110000
0.7560
10001 Patrón No. 2 corresponde a la vocal ‘U’
0.1980 θ3
0.4860 0.0690 10001
W14
-0.1650 1.0770 10001
-0.8100 0.4920 10001
0.0180 0.7380 10001
0.0360 0.7320
-0.4800 -0.3600 10001
-0.4200 0.5040 111110001
-0.8520 0.4560 11111 Patrón No. 3 corresponde a la vocal ‘Z’
0.2640 0.2220
-0.5820 0.4380
00001
0.6000 -0.6300 00010
-0.9600 0.0900 00100
0.0120 -0.6960 01000
0.7380 0.5700
-0.0360 -0.7800
10000
-0.0180 -0.0720 111110010
0.0900 0.3060 TABLA 3. CODIFICACIÓN DE LOS PATRONES DE ENTRENAMIENTO
-0.8460 PARA EL RECONOCIMIENTO DE LOS NOMBRES
0.3600 θ4
TABLA 2. ESTRUCTURA Y VALORES DEL ARCHIVO QUE ALMACENA Después de inicializar y entrenar la red (buscar el mejor
UNA RED NEURONAL TIPO PERCEPTRÓN resultado), pasamos a validar una entrada determinada. Para
ello introducimos la letra ‘U’, obteniendo una salida
Como se observa en la Figura 15, el error para la red es cero verdadera. Después se procedió a quitarle información a la
(0); lo cual inicialmente nos indica que se cumplió con el valor entrada y pasamos a validar la red, de lo cual obtuvimos que
ideal. Se llego a este valor ya que los patrones de la red continua identificando el patrón de entrada.
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.16. VALIDACION PARA LA LETRA ‘U’


III. OBSERVACIONES [1] Guía de Laboratorio No.2. Perceptrón Aplicado a la
 Es muy difícil proporcionarle a una red neural todos Clasificación de Caracteres. Universidad del Valle. 2010.
los patrones de entrenamiento, cuando estamos
realizando la clasificación de caracteres; esto se debe [2] Caicedo, Eduardo. López, Jesús. Una Aproximación a
a que las personas o usuarios pueden interpretar de las Redes Neuronales Artificiales. Programa Editorial
diferentes maneras los caracteres, por ejemplo para Universidad del Valle. 2009.
una persona x el cuadrado es un rectángulo y [3] Diego Barragan. Manual para interfaz grafica de
viceversa para una persona y. usuario en Matlab®. diegokillemall@yahoo.com.
www.matpic.com.
 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

También podría gustarte