You are on page 1of 6

TALLER No. 1 IMPLEMENTACION DEL PERCEPTRON CON EL MATLAB 1. OBJETIVOS 1.

1 Conocer el algoritmo de entrenamiento del Perceptron y su codificacin en MATLAB 1.2 Conocer la manera como se pueden simular redes neuronales con el MATLAB 1.3 Conocer las funciones con las cuales se implementa en el MATLAB las redes tipo Perceptron. 2. PROCEDIMIENTO 2.1 Algoritmo del Perceptron para solucionar el problema de la AND El Perceptron es una red neuronal que por su simplicidad se puede implementar sin mayor complicacin en un lenguaje de programacin como el MATLAB, por ejemplo el siguiente cdigo implementa un Perceptron para resolver el problema de la funcin lgica AND
% ANDPER.M % Programa que implementa un Perceptron que resuelve % la funcion AND % Autor: % Jess Alfonso Lpez S. % Versin: %Septiembre 2001 X=[0 0 1 1;0 1 0 1]; Yd=[0 0 0 1]; W=rand(2,1); B=rand(1,1); Neta=W'*X+B*ones(1,4); Yred=escalon(Neta); disp('La salida inicial de la red es') disp(Yred) N=50; figure; plot(X(1,1:3),X(2,1:3),'ob'); axis([-0.2 1.2 -0.2 1.2]) hold on plot(X(1,4),X(2,4),'or'); m=W(1)/W(2); b=B/W(2); x1=-0.2:0.2:1.2; x2=-m*x1-b; plot(x1,x2,'k'); hold off; fori=1:N Neta=W'*X+B*ones(1,4); Yred=escalon(Neta); Waux=W'+0.5*(Yd-Yred)*X'; W=Waux'; B=B+0.5*(Yd-Yred)*ones(4,1); Error=Yd-Yred; ifsum((Error.^2))==0 break; end; end;

Neta=W'*X+B*ones(1,4); Yred=escalon(Neta);

disp('La salida final de la red es') disp(Yred) disp('Numero de iteraciones realizadas') disp(i) figure; plot(X(1,1:3),X(2,1:3),'ob'); axis([-0.2 1.2 -0.5 1.2]) hold on plot(X(1,4),X(2,4),'or'); m=W(1)/W(2); b=B/W(2); x1=-0.2:0.2:1.2; x2=-m*x1-b; plot(x1,x2,'k'); hold off; % Fin Perceptron function out=escalon(in) % ESCALON:M % Programa que implementa una funcin de activacin % tipo escaln, invocada des ANDPER:M % Autor: % Jess Alfonso Lpez S. % Versin: %Septiembre 2001 fori=1:4 ifin(i)>=0 out(i)=1; elseout(i)=0; end; end;

2.2 Perceptron para solucionar el problema de la AND usando el toolbox de redes neuronales El Perceptron es una RNA que est en capacidad de realizar separaciones lineales veamos como se puede realizar un problema de estos con ayuda del toolbox de redes neuronales del MATLAB Entre las funciones utilizadas por el MATLAB para el Perceptron se tienen : NEWP - Inicializa el Perceptron. PLOTPV - Grafica los vectores de entrada cuando la salida es 1/0. PLOTPC - Grafica la lnea de clasificacin que genera el Perceptron. TRAIN - Entrena la red con el algoritmo del Perceptron. SIM - Simula o prueba la red. Solucin del problema de funcin lgica AND La funcin lgica se define como :
X1 0 0 1 1 X2 0 1 0 1 AND 0 0 0 1

Con lo siguientes pasos se puede resolver este problema con el MATLAB :

Definicin del problema Definir el problema que una red neuronal va a resolver es proporcionarle a la misma la informacin necesaria para que puede llevar la tarea con xito, en otras palabras en este paso se le define a red neuronal los patrones de aprendizaje que se van a utilizar el proceso de entrenamiento. En MATLAB esto se hace definiendo dos matrices una para las entradas y otra para las salidas donde cada patrn de aprendizaje se define por columnas, los comandos necesarios para lo anterior son: >> % Definicin de la funcin lgica AND >> X=[0 0 1 1 ; 0 1 0 1 ] ; >> D=[0 0 0 1] ; Para ver la grfica de estos patrones se usa el comando plotpv >> plotpv(X,D) La grfica resultante es la siguiente

Figura No. 1 Patrones a clasificar

Como se puede observar MATLAB grfica los puntos dados en el vector X y le asigna un smbolo para la clasificacin dependiendo de la salida deseada, en esta caso: Para salida deseada cero (0) = o Para salida deseada uno (1) = + Inicializacin de la red neuronal Ya teniendo los patrones de entrenamiento que definen el problema a resolver, se procede a inicializar la red neuronal, para el caso del Perceptron se usa la funcininitp de la siguiente manera: >> red = newp([0 1;0 1],1) Donde: red = objeto donde se va almacenar la red creada por el MATLAB [0 1;0 1] = Rango del valor de la entrada de la red neuronal, el nmero de filas de esta matriz lo utilizar MATLAB para definir el nmero de entradas que tiene la red neuronal. 1 = Nmero de neuronas que tiene la red neuronal en la capa de salida X = Entrada de los patrones de aprendizaje Ahora se proceder a generar unos pesos iniciales a la red, este paso no es necesario hacerlo pero permite generar un perceptron con un superficie de separacin conocida >> red.iw{1,1}=[1 1]; >> red.b{1}=0.5; >> Pesos=red.iw{1,1};

>> Bias=red.b{1}; Con el siguiente comando se grafica la lnea de separacin que tiene el Perceptron >> plotpc(Pesos,Bias) El comando anterior adiciona la recta clasificadora al grfico generado porplotpv, la grfica quedara as:

Figura No. 2 Patrones a clasificar y la recta clasificadora inicial

Entrenamiento de la red El entrenamiento de la red se realiza con el comandotrain el cual implementa un entrenamiento con la regla de aprendizaje tipo Perceptron, en MATLAB el entrenamiento se hace as: >> red = train(red,X,D) Donde red = red a ser entrenada por el MATLAB. X = Entrada de los patrones de aprendizaje. D = Salida deseada de los patrones de aprendizaje. Al entrenar MATLAB nos grafica la manera como va evolucionando error al transcurrir las iteraciones

Figura No. 3 Evolucin del error durante el entrenamiento de la red

Cuando se ha entrenado la red, se puede visualizar en la grfica donde se muestra la lnea clasificadora que la red ha llevado a cabo la tarea. >> figure; >> Pesos=red.iw{1,1};

>> Bias=red.b{1}; >> plotpv(X,D) >> plotpc(Pesos,Bias)

Figura No. 4 Patrones a clasificar y la recta clasificadora final

Validacin de la red Luego de tener una red entrenada se procede a validar si el comportamiento de la misma es correcto o no, para esto se usa el comando sim como se muestra a continuacin: >> in_prueba=[0;0]; % Patrn de prueba >> % Prueba de la red ante el patrn de prueba, W,b son los pesos y el boas de la red entrenada >> a = sim(red, in_prueba) a= 0 >> % Otro patn de prueba >> in_prueba=[1;1]; % Patrn de prueba >> a = sim(red, in_prueba) a= 1 Como se puede observar el comportamiento de la red es el adecuado por lo que se da por finalizado el entrenamiento.

3. EJERCICIOS 1. Realice la siguiente clasificacin usando un Perceptron y con ayuda del toolbox de redes neuronales del MATLAB
X1 -0.5 1 1 -1 -1 0.5 X2 -1 1 0.5 -0.5 -1 1 D 0 1 1 0 0 1

2. Disee y entrene usando el toolbox de redes neuronales del MATLAB 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 sera: 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1

3. Trate de resolver el problema de la XOR con un Perceptron, qu se puede concluir al respecto? 4. Modifique el programa del Perceptron presentado de tal forma que permita trabajar un Perceptron de N nodos en la entrada y de M neuronas en la capa de salida, pruebe el Perceptron codificado con el ejercicio descrito en el punto 2. 5. Con la base de datos entregada en clase, implemente un clasificador con un perceptron, donde se tenga como entrada el nmero de variables del problema y nmero de neuronas igual al nmero de clases.