Está en la página 1de 4

1

UNIVERSIDAD DEL VALLE


REDES NEURONALES
ESCUELA DE INGENIERIA ELECTRICA Y ELECTRONICA
REDES NEURONALES ARTIFICIALES
PROFESOR: JESUS ALFONSO LOPEZ S.

GUIA No. 2
RECONOCIMIENTO DE CARACTERES CON UN PERCEPTRON

1. OBJETIVOS
1.1 Conocer la manera como se puede usar una red neuronal tipo Perceptron para reconocimiento de
caracteres
1.2 Realizar un reconocimiento de caracteres usando el Perceptron del MATLAB

2. INTRODUCCION TEORICA

Como ya se ha mencionado anteriormente, el Perceptron 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 caracteres como se mostrar en el desarrollo de esta gua.

3. PROCEDIMIENTO

3.1 Perceptron para realizar un reconocimiento de caracteres en MATLAB

El objetivo es entrenar un Perceptron que pueda identificar los nmeros del 0 al 9 donde cada nmero se
puede definir en una matriz de 5*3, por ejemplo el nmero 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 nmero, y
asignarles el respectivo valor de salida. En nuestro caso, definiremos por patrn, un vector de entrada de
15 elementos y un vector de salida de 4 elementos, correspondientes a el nmero binario equivalente.

Entonces, primero analicemos los patrones:

Patron Vector Patron


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
2
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

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

Como se ha observado cada nmero se ha codificado con 15 bits.

Ahora se necesita definir la salida que deseamos genere la red. Para esto se debe codificar de alguna
manera la informacin que generar la red en sus neuronas de salida. Una alternativa consiste en que la
salida de la red esta formada por el cdigo binario del nmero que se le esta presentando a la entrada. Es
decir si a la red le llegan como entrada los 15 bits correspondientes al nmero 0 ella genera el cdigo
binario del cero expresado en 4 bits (0 0 0 0), si en cambio le llegan como entrada los 15 bits
correspondientes al nmero 1 ella genera el cdigo binario del uno expresado en 4 bits (0 0 0 1) y as con
el resto de patrones.

Teniendo en cuenta lo anterior los patrones de entrenamiento para los diez nmeros correspondern a la
siguiente tabla.
3

Tabla No.1 Codificacin de los patrones de entrenamiento para el reconocimiento de nmeros en


MATLAB

Patrn de Entradas Patrn Salidas


X D
3 2
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 2 2 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

A continuacin se detalla el cdigo en MATLAB para lograr el entrenamiento indicado

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); Definicin de la red
red.iw{1,1}=rand(4,10); Asignacin de pesos aleatorios
red.b{1}=rand(4,1);
red.trainParam.show=1; Evolucin de la red cada iteracin
disp('los pesos inciales son:') Muestra los pesos asignanados por la funcin
Pesos=red.iw{1,1} rand.
Bias=red.b{1}
pause(2);
figure; Entrenamiento de la red
red = train(red,X,D)
disp('para validar la red, digite el Validacin de la red.
vector de patrones de entrada') Se pide digitar un patrn para verificar el
disp('Numero de 10 binarios entre [ ]') funcionamiento de la red entrenada.
X1=input('X1=') Entrada del patrn
Y = sim(red, X1'); Simulacin de la red
disp('el numero resultante, en binario, Presentacin del valor correspondiente digitado
ledo de arriba para abajo es:') por el usuario ( se presenta en forma binaria 4
Y bits)

Se presenta a continuacin dos entrenamientos de la red; para cada uno se ilustra la grfica de evolucin
en el entrenamiento, y el patrn introducido para el proceso de validacin.

a. Primera ejecucin:
4

0
10

-1
10

-2
10
0 5 10 15 20 25 30

Fig. 1 Evolucin del error de entrenamiento

Patrn de Entrada Vector de Entrada Valor de Salida


Para Validacin X1 Y
1 1 1 [1 1 1 0 0 1 0 0 1 0 0 1 0 [0 1 1 1] 7
0 0 1
0 0 1
0 1]
0 0 1
0 0 1

b. Segunda ejecucin:

0
10

-1
10

-2
10
0 5 10 15 20 25 30 35 40

Fig. 2 Evolucin del error de entrenamiento

Patrn de Entrada Vector de Entrada Valor de Salida


Para Validacin X1 Y
1 1 1 [1 1 1 1 0 1 1 1 1 0 0 1 1 [1 0 0 1] 9
1 0 1
1 1 1
1 1]
0 0 1
1 1 1

Exportando la Red Neuronal a Simulink

Teniendo la red entrenada, se puede exportar al Simulink para verificar el comportamiento de la misma de
una manera completamente grfica.