Taller1 Matlab

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Taller1 Matlab as PDF for free.

More details

  • Words: 1,287
  • Pages: 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;

2 for i=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; 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 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 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;

3

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 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 AND La función lógica se define como : X1 0 0 1 1

X2 0 1 0 1

D 0 0 0 1

Con lo siguientes pasos se puede resolver este problema con el MATLAB : • Definición del problema Definir el problema que una red neuronal va a resolver es proporcionarle a la misma la información 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 patrón de aprendizaje se define por columnas, los comandos necesarios para lo anterior son: >> % Definición de la función lógica AND >> X=[0 0 1 1 ; 0101]; >> 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 :

4 1.5

Vectors to be Classified

P(2)

1

0.5

0

-0.5 -0.5

0 P(1) 0.5

1

1.5

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ímbolo para la clasificación dependiendo de la salida deseada, en esta caso: Para salida deseada cero (0) = o Para salida deseada uno (1) = + • Inicialización 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 función initp 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 número de filas de esta matriz lo utilizará 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 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 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áfica quedaría así:

5 Vectors to be Classified 1.5

1

P(2 0.5 )

0

-0.5 -0.5

0

0.5 P(1)

1

1.5

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

• Entrenamiento de la red El entrenamiento de la red se realiza con el comando train 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 Performance is 0, Goal is 0

0

10

Tr ain ing Blu e

-1

10

0

0.5

1

1.5

2

2.5 5 Epochs

3

3.5

4

4.5

5

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ínea 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)

6 Vectors to be Classified 1.5

1

P(2 ) 0.5

0

-0.5 -0.5

0

0.5 P(1)

1

1.5

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

• Validación 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 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 por finalizado el entrenamiento.

7

3. EJERCICIOS 1. Realice la siguiente clasificación usando un Perceptron y con ayuda del toolbox de redes neuronales del MATLAB X1 X2 D -0.5 -1.0 0 1.0 1.0 1 1.0 0.5 1 -1.0 -0.5 0 -1.0 -1.0 0 0.5 1.0 1 2. Diseñe y entrene usando el toolbox de redes neuronales del MATLAB un Perceptron 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ía : 1 1 1 0 0 1 1 1 1 1 0 0 1 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 un Perceptron de N neuronas en la capa de entrada y de M neuronas en la capa de salida, pruebe el Perceptron codificado con el ejercicio descrito en el punto 2.

Related Documents

Taller1 Matlab
May 2020 7
Taller1
June 2020 5
Taller1.pdf
June 2020 5
Taller1.pdf
November 2019 16
Taller1.docx
May 2020 9
Taller1.docx
December 2019 11