actividad no8. 1er parcial lema evelyn

7

Click here to load reader

Upload: evelyn-gabriela-lema-vinueza

Post on 12-Jul-2015

27 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Actividad no8. 1er parcial lema evelyn

Página 1

UNIVERSIDAD DE FUERZAS ARMADAS “ESPE” DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA

ASIGNATURA: CONTROL INTELIGENTE

Actividad No8. Aprendizaje del perceptrón multicapa mediante retropropagación del error

Fecha: Lunes, 28 de Abril del 2014.

Nombre alumno: Evelyn Gabriela Lema Vinueza.

NRC: 2055

1. Dibuje un perceptrón multicapa con 2 entradas, 2 neuronas escondidas y una neurona de salida.

2. Escriba las fórmulas de actualización de cada uno de los pesos de conexión entre las neuronas de la

capa oculta y la capa de salida. Utilice la nomenclatura del ejercicio 1.

3. Escriba las fórmulas de actualización de cada uno de los pesos de conexión entre las entradas y

las neuronas de la capa oculta. Utilice la nomenclatura del ejercicio 1.

) ) ) )

) )

Actualización de los pesos entre las neuronas de la capa oculta y la capa de salida.

) ) ) ) ) )

) ) ) ) ) )

) ) ) ) ) )

Page 2: Actividad no8. 1er parcial lema evelyn

Página 2

4. Escriba el programa para realizar el aprendizaje por retropropagación del error para que la red

neuronal del ejercicio 1 aprenda a partir de los patrones de entrenamiento de una compuerta

XOR. Considere un factor de aprendizaje de 0.1; alfa=4. Grafique la curva de aprendizaje.

Considere aprendizaje en línea (ejemplo por ejemplo).

Grafique las líneas de frontera de la red neuronal de acuerdo a lo realizado en la actividad 7.

title('Funcion de la neurona z') xlabel('in1') ylabel('in2')

subplot(3,2,6); z11=round(z); %redondeo de la salida para q sea como funcion step mesh(in11,in22,z11) title('Linea de frontera') xlabel('in1') ylabel('in2')

Código del Programa:

in1=[0;0;1;1];

in2=[0;1;0;1];

inputs=[0 0;0 1;1 0;1 1];

targ=[0;1;1;0];

w=randn(1,9);

a01=w(1,1);

a11=w(1,2);

a12=w(1,3);

a21=w(1,4);

a22=w(1,5);

a02=w(1,6);

b0=w(1,7);

b1=w(1,8);

b2=w(1,9);

n=0.1;

alfa=4;

for j=1:500

serror=0;

for i=1:4

net1=a01+in1(i)*a11+in2(i)*a21;

y1=1./(1+exp(-alfa*net1));

net2=a02+in1(i)*a12+in2(i)*a22;

y2=1./(1+exp(-alfa*net2));

net=b0+y1*b1+y2*b2;

z=1./(1+exp(-alfa*net));

e=0.5*(targ(i)-z)^2;

db0=n*(targ(i)-z)*alfa*z*(1-z);

db1=n*(targ(i)-z)*alfa*z*(1-z)*y1;

db2=n*(targ(i)-z)*alfa*z*(1-z)*y2;

b0=b0+db0;

b1=b1+db1;

b2=b2+db2;

da01=n*(targ(i)-z)*(alfa^2)*z*(1-z)*b1*(1-y1)*y1;

da11=n*(targ(i)-z)*(alfa^2)*z*(1-z)*b1*(1-y1)*y1*in1(i);

da12=n*(targ(i)-z)*(alfa^2)*z*(1-z)*b2*(1-y2)*y2*in1(i);

a01=a01+da01;

a11=a11+da11;

a12=a12+da12;

da02=n*(targ(i)-z)*(alfa^2)*z*(1-z)*b2*(1-y2)*y2;

da21=n*(targ(i)-z)*(alfa^2)*z*(1-z)*b1*(1-y1)*y1*in2(i);

da22=n*(targ(i)-z)*(alfa^2)*z*(1-z)*b2*(1-y2)*y2*in2(i);

a02=a02+da02;

a21=a21+da21;

a22=a22+da22;

serror=serror+e;

end

E(j)=serror;

end

Page 3: Actividad no8. 1er parcial lema evelyn

Página 3

plot(E);xlabel('Épocas');ylabel('Error cuadrático medio');title('Error')

[in11,in22]=meshgrid(0:0.01:1,0:0.01:1);

net1=a01+in11*a11+in22*a21; y1=1./(1+exp(-alfa*net1));

net2=a02+in11*a12+in22*a22; y2=1./(1+exp(-alfa*net2));

net=b0+y1*b1+y2*b2; z=1./(1+exp(-alfa*net));

figure subplot(1,2,1); mesh(in11,in22,z); title('funcion de la neurona');xlabel('in1');ylabel('in2')

subplot(1,2,2); z11=round(z); %redondeo de la salida para q sea como funcion step mesh(in11,in22,z11) title('linea de frontera');xlabel('in1');ylabel('in2')

subplot(3,2,1); mesh(in11,in22,y1); title('Funcion de la neurona y1');xlabel('in1');ylabel('in2')

subplot(3,2,2); y11=round(y1); %redondeo de la salida para q sea como funcion step mesh(in11,in22,y11) title('Linea de frontera');xlabel('in1');ylabel('in2')

subplot(3,2,3); mesh(in11,in22,y2); title('Funcion de la neurona y2');xlabel('in1');ylabel('in2')

subplot(3,2,4);

y22=round(y2); %redondeo de la salida para q sea como funcion step mesh(in11,in22,y22) title('Linea de frontera') xlabel('in1') ylabel('in2') % %z subplot(3,2,5); mesh(in11,in22,z); title('Funcion de la neurona z');xlabel('in1');ylabel('in2')

subplot(3,2,6); z11=round(z); %redondeo de la salida para q sea como funcion step mesh(in11,in22,z11) title('Linea de frontera');xlabel('in1');ylabel('in2')

0 50 100 150 200 250 300 350 400 450 5000

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Épocas

Err

or

cuadrá

tico m

edio

Page 4: Actividad no8. 1er parcial lema evelyn

Página 4

5. Repita el numeral 4 pero con aprendizaje en paquete (“batch”). Grafique las líneas de

frontera de la red neuronal de acuerdo a lo realizado en la actividad 7.

En esta caso en la actualización en paquete solamente se modifica la siguiente parte del

código, de manera que la actualización de pesos de produzca al finalizar una época.

Código del Programa:

in1=[0;0;1;1]; in2=[0;1;0;1]; inputs=[0 0;0 1;1 0;1 1]; targ=[0;1;1;0]; w=randn(1,9); a01=w(1,1); a11=w(1,2); a12=w(1,3); a21=w(1,4); a22=w(1,5); a02=w(1,6); b0=w(1,7); b1=w(1,8); b2=w(1,9); n=0.1; alfa=4;

Page 5: Actividad no8. 1er parcial lema evelyn

Página 5

for j=1:1000

serror=0;

db0=0;

db1=0;

db2=0;

da01=0;

da11=0;

da12=0;

da02=0;

da21=0;

da22=0;

for i=1:4

net1=a01+in1(i)*a11+in2(i)*a21;

y1=1./(1+exp(-alfa*net1));

net2=a02+in1(i)*a12+in2(i)*a22;

y2=1./(1+exp(-alfa*net2));

net=b0+y1*b1+y2*b2;

z=1./(1+exp(-alfa*net));

e=0.5*(targ(i)-z)^2;

db0=db0+n*(targ(i)-z)*alfa*z*(1-z);

db1=db1+n*(targ(i)-z)*alfa*z*(1-z)*y1;

db2=db2+n*(targ(i)-z)*alfa*z*(1-z)*y2;

da01=da01+n*(targ(i)-z)*(alfa^2)*z*(1-z)*b1*(1-y1)*y1;

da11=da11+n*(targ(i)-z)*(alfa^2)*z*(1-z)*b1*(1-y1)*y1*in1(i);

da12=da12+n*(targ(i)-z)*(alfa^2)*z*(1-z)*b2*(1-y2)*y2*in1(i);

da02=da02+n*(targ(i)-z)*(alfa^2)*z*(1-z)*b2*(1-y2)*y2;

da21=da21+n*(targ(i)-z)*(alfa^2)*z*(1-z)*b1*(1-y1)*y1*in2(i);

da22=da22+n*(targ(i)-z)*(alfa^2)*z*(1-z)*b2*(1-y2)*y2*in2(i);

serror=serror+e;

end

b0=b0+db0;

b1=b1+db1;

b2=b2+db2;

a01=a01+da01;

a11=a11+da11;

a12=a12+da12;

a02=a02+da02;

a21=a21+da21;

a22=a22+da22;

E(j)=serror;

end

plot(E);xlabel('Épocas');ylabel('Error cuadrático medio');title('Error')

[in11,in22]=meshgrid(0:0.01:1,0:0.01:1);

net1=a01+in11*a11+in22*a21;

y1=1./(1+exp(-alfa*net1));

net2=a02+in11*a12+in22*a22;

y2=1./(1+exp(-alfa*net2));

net=b0+y1*b1+y2*b2;

z=1./(1+exp(-alfa*net));

figure

subplot(3,2,1);

mesh(in11,in22,y1);

title('Funcion de la neurona y1');xlabel('in1');ylabel('in2')

subplot(3,2,2);

y11=round(y1); %redondeo de la salida para q sea como funcion step

mesh(in11,in22,y11)

title('Linea de frontera');xlabel('in1');ylabel('in2')

subplot(3,2,4);

y22=round(y2); %redondeo de la salida para q sea como funcion step

mesh(in11,in22,y22)

title('Linea de frontera')

Page 6: Actividad no8. 1er parcial lema evelyn

Página 6

subplot(3,2,3); mesh(in11,in22,y2);

title('Funcion de la neurona y2');xlabel('in1');ylabel('in2')

subplot(3,2,4); y22=round(y2); %redondeo de la salida para q sea como funcion step mesh(in11,in22,y22)

title('Linea de frontera');xlabel('in1');ylabel('in2')

subplot(3,2,5); mesh(in11,in22,z);

title('Funcion de la neurona z');xlabel('in1');ylabel('in2')

subplot(3,2,6); z11=round(z); %redondeo de la salida para q sea como funcion step mesh(in11,in22,z11)

title('Linea de frontera');xlabel('in1');ylabel('in2')

0 100 200 300 400 500 600 700 800 900 10000

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Épocas

Err

or

cuadrá

tico m

edio

Page 7: Actividad no8. 1er parcial lema evelyn

Página 7

Yo Evelyn Gabriela Lema Vinueza afirmo que esta actividad es de mi autoría y establezco que

para la elaboración de la misma he seguido los lineamientos del Código de Ética de la

Universidad de las Fuerzas Armadas ESPE