Taller1 Matlab
Taller1 Matlab
Taller1 Matlab
GUIA No. 1
IMPLEMENTACION DEL PERCEPTRON CON EL MATLAB
1. OBJETIVOS
2. PROCEDIMIENTO
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
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
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
X1 X2 D
0 0 0
0 1 0
1 0 0
1 1 1
>> plotpv(X,D)
P(2)
0.5
-0.5
-0.5 0 P(1) 0.5 1 1.5
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) = +
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};
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
P(2
) 0.5
-0.5
-0.5 0 0.5 1 1.5
P(1)
• 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í:
Al entrenar MATLAB nos grafica la manera como va evolucionando error al transcurrir las
iteraciones
0
Performance is 0, Goal is 0
10
Tr
ain
ing
-
Blu
e
-1
10
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
5 Epochs
P(2
) 0.5
-0.5
-0.5 0 0.5 1 1.5
P(1)
• 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:
a=
a=
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
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.