105543578 Diseno de Una Red Neuronal en Matlab

7
1 UNIVERSIDAD DEL VALLE MAESTRIA EN AUTOMATICA CONTROL INTELIGENTE PROFESOR: JESUS ALFONSO LOPEZ S. GUIA No. 1 IMPLEMENTACION DEL PERCEPTRON CON EL MATLAB 1. OBJETIVOS 1.1 Conocer el algoritmo de entrenamiento del Perceptron y su codificación 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 complicación en un lenguaje de programación como el MATLAB, por ejemplo el siguiente código implementa un Perceptron para resolver el problema de la función lógica AND % ANDPER.M % Programa que implementa un Perceptron que resuelve % la funcion AND % Autor: % Jesús Alfonso López S. % Versión: % 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;

Transcript of 105543578 Diseno de Una Red Neuronal en Matlab

Page 1: 105543578 Diseno de Una Red Neuronal en Matlab

1

UNIVERSIDAD DEL VALLEMAESTRIA EN AUTOMATICACONTROL INTELIGENTEPROFESOR: JESUS ALFONSO LOPEZ S.

GUIA No. 1IMPLEMENTACION DEL PERCEPTRON CON EL MATLAB

1. OBJETIVOS

1.1 Conocer el algoritmo de entrenamiento del Perceptron y su codificación en MATLAB1.2 Conocer la manera como se pueden simular redes neuronales con el MATLAB1.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 mayorcomplicación en un lenguaje de programación como el MATLAB, por ejemplo el siguiente códigoimplementa un Perceptron para resolver el problema de la función lógica AND

% ANDPER.M% Programa que implementa un Perceptron que resuelve% la funcion AND% Autor:% Jesús Alfonso López S.% Versión:% 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 onplot(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;

Page 2: 105543578 Diseno de Una Red Neuronal en Matlab

2

for i=1:NNeta=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;

if sum((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 onplot(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 función de activación% tipo escalón, invocada des ANDPER:M% Autor:% Jesús Alfonso López S.% Versión:% Septiembre 2001

for i=1:4 if in(i)>=0 out(i)=1; else out(i)=0; end ;end ;

Page 3: 105543578 Diseno de Una Red Neuronal en Matlab

3

2.2 Perceptron para solucionar el problema de la AND usando el toolbox de redesneuronales

El Perceptron es una RNA que está en capacidad de realizar separaciones lineales veamos como sepuede 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 línea de clasificación que genera el Perceptron.TRAIN - Entrena la red con el algoritmo del Perceptron.SIM - Simula o prueba la red.

Solución del problema de función lógica ANDLa función lógica se define como :

X1 X2 D0 0 00 1 01 0 01 1 1

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

• Definición del problemaDefinir el problema que una red neuronal va a resolver es proporcionarle a la misma la informaciónnecesaria para que puede llevar la tarea con éxito, en otras palabras en este paso se le define a redneuronal 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 salidasdonde cada patrón de aprendizaje se define por columnas, los comandos necesarios para loanterior son:

>> % Definición de la función lógica AND>> X=[0 0 1 1 ; 0 1 0 1 ] ;>> D=[0 0 0 1] ;

Para ver la gráfica de estos patrones se usa el comando plotpv

>> plotpv(X,D)

La gráfica resultante es la siguiente :

Page 4: 105543578 Diseno de Una Red Neuronal en Matlab

4

-0.5 0 0.5 1 1.5-0.5

0

0.5

1

1.5Vectors to be Classified

P(1)P

(2)

Figura No. 1 Patrones a clasificar

Como se puede observar MATLAB gráfica los puntos dados en el vector X y le asigna un símbolopara la clasificación dependiendo de la salida deseada, en esta caso:Para salida deseada cero (0) = oPara salida deseada uno (1) = +

• Inicialización de la red neuronalYa teniendo los patrones de entrenamiento que definen el problema a resolver, se procede ainicializar la red neuronal, para el caso del Perceptron se usa la función initp de la siguientemanera:

>> 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 número de filas de esta matriz loutilizará MATLAB para definir el número de entradas que tiene la red neuronal.1 = Número de neuronas que tiene la red neuronal en la capa de salidaX = Entrada de los patrones de aprendizaje

Ahora se procederá a generar unos pesos iniciales a la red, este paso no es necesario hacerlo peropermite generar un perceptron con un superficie de separación 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 línea de separación que tiene el Perceptron>>plotpc(Pesos,Bias)

El comando anterior adiciona la recta clasificadora al gráfico generado por plotpv, la gráficaquedaría así:

Page 5: 105543578 Diseno de Una Red Neuronal en Matlab

5

-0.5 0 0.5 1 1.5-0.5

0

0.5

1

1.5Vectors to be Classified

P(1)

P(2)

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

• Entrenamiento de la redEl entrenamiento de la red se realiza con el comando train el cual implementa un entrenamientocon la regla de aprendizaje tipo Perceptron, en MATLAB el entrenamiento se hace así:

>> red = train(red,X,D)Dondered = 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 lasiteraciones

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 510

-1

100

Performance is 0, Goal is 0

5 Epochs

Training-Blue

Figura No. 3 Evolución del error durante el entrenamiento de la red

Cuando se ha entrenado la red, se puede visualizar en la gráfica donde se muestra la líneaclasificadora 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)

Page 6: 105543578 Diseno de Una Red Neuronal en Matlab

6

-0.5 0 0.5 1 1.5-0.5

0

0.5

1

1.5Vectors to be Classified

P(1)

P(2)

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

• Validación de la redLuego de tener una red entrenada se procede a validar si el comportamiento de la misma escorrecto o no, para esto se usa el comando sim como se muestra a continuación:

>> in_prueba=[0;0]; % Patrón de prueba>> % Prueba de la red ante el patrón de prueba, W,b son los pesos y el boas de la red entrenada>> a = sim(red, in_prueba)

a =

0

>> % Otro patón de prueba>> in_prueba=[1;1]; % Patrón 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 porfinalizado el entrenamiento.

Page 7: 105543578 Diseno de Una Red Neuronal en Matlab

7

3. EJERCICIOS

1. Realice la siguiente clasificación usando un Perceptron y con ayuda del toolbox de redesneuronales del MATLAB

X1 X2 D-0.5 -1.0 01.0 1.0 11.0 0.5 1-1.0 -0.5 0-1.0 -1.0 00.5 1.0 1

2. Diseñe y entrene usando el toolbox de redes neuronales del MATLAB un Perceptron quepueda identificar los números del 0 al 9 donde cada número se puede definir en una matriz de5*3, por ejemplo el número 2 sería :

1 1 10 0 11 1 11 0 01 1 1

3. Trate de resolver el problema de la XOR con un Perceptron, a que conclusión llega?

4. Modifique el programa del Perceptron presentado de tal forma que permita trabajar unPerceptron de N neuronas en la capa de entrada y de M neuronas en la capa de salida, pruebeel Perceptron codificado con el ejercicio descrito en el punto 2.