0% encontró este documento útil (0 votos)
123 vistas11 páginas

Algoritmos de Aprendizaje en ESPE

1) El documento describe tres tareas relacionadas con redes neuronales y aprendizaje por descenso de gradiente. La primera tarea grafica la función sigmoide y su derivada para diferentes valores de alfa y compara con la función signo. La segunda tarea aplica descenso de gradiente para clasificar aviones, mejorando los resultados al aumentar las épocas de 200. La tercera tarea desarrolla el algoritmo para XOR con tres neuronas.

Cargado por

Ronald Romero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
123 vistas11 páginas

Algoritmos de Aprendizaje en ESPE

1) El documento describe tres tareas relacionadas con redes neuronales y aprendizaje por descenso de gradiente. La primera tarea grafica la función sigmoide y su derivada para diferentes valores de alfa y compara con la función signo. La segunda tarea aplica descenso de gradiente para clasificar aviones, mejorando los resultados al aumentar las épocas de 200. La tercera tarea desarrolla el algoritmo para XOR con tres neuronas.

Cargado por

Ronald Romero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad de las Fuerzas Armadas “ESPE”

Control Inteligente
Descenso de Gradiente
Nombre: Jordy Cevallos
Fecha: 03/05/2018
 Tarea1
1
Graficar f ( x )= (función sigmoide) y su derivada para los valores de
1+e−α . x
α =1,2,4 . Comparar con la función signo

En la Figura1 se muestra la gráfica de la función sigmoide para los 3 valores de alfa.

1
alfa=1
0.9 alfa=2
alfa=4
0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
-3 -2 -1 0 1 2 3

Figura 1. Función sigmoide.

En donde pondemos observar que mientras mayor es el número de alfa , la función


se aproxima más a la funcion signo, con la gran ventaja que la funcion sigmoide si
es derivable en todo si rango.
En la Figura2 se observa la grafica de la derivada de la funcion sigmoide para los 3
alfas.

1
alfa=1
0.9 alfa=2
alfa=4
0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
-3 -2 -1 0 1 2 3

Figura 2. Derivada de la función sigmoide

 Tarea2
Realizar el algoritmo de aprendizaje por descenso de gradiente para la clasificación
de aviones (online).
Para determinar los pesos se utilizó los datos presentados en la siguiente tabla.
Para la clasificación de aviones mediante el método de descenso de gradiente se
procede primero a seleccionar un factor de aprendizaje, en este caso 0.6 y a crear
una matriz que contenga los valores de masa y velocidad ya que estos conformaran
las entradas como se puede observar en la Figura3.

Figura 3. Representación de una neurona

Donde In1 es la “Mass”, In2 es la “Speed” y In0 es el Sesgo que tendrá un valor de
1; mediante el algoritmo presentado a continuación se encuentra los valores de los
pesos para lograr el “Target” requerido.

%Descenso de gradientes Aviones


n=0.6 %FACTOR DE APRENDIZAJE
in0=1; %SESGO
alfa=4;
w0=rand;w1=rand;w2=rand;
p=[1 0.1;2 0.2;0.1 0.3;2 0.3;0.2 0.4;3 0.4;0.1 0.5;1.5 0.5;0.5 0.6; 1.6 0.7;];
targ=[ 1 1 0 1 0 1 0 1 0 0];
errorv=[]; epocav=[];
for epoca=[Link] %EPOCAS
Error=0;
for i=[Link]
in1=p(i,1);
in2=p(i,2);
net=w0*in0+w1*in1+w2*in2;
out=sigmoidev(net,alfa);
e=targ(i)-out;
deltaw0=-n*e*(-1)*alfa*out*(1-out)*in0;
deltaw1=-n*e*(-1)*alfa*out*(1-out)*in1;
deltaw2=-n*e*(-1)*alfa*out*(1-out)*in2;
%Actualizacion de Pesos
w0=w0+deltaw0;
w1=w1+deltaw1;
w2=w2+deltaw2;
Error=Error+(targ(i)-out)^2;
end
errorv=[errorv Error];
epocav=[epocav epoca];
plot(epocav,errorv)
grid on
title('Evolucion del error por época')
end

for i=1:10
in1=p(i,1);
in2=p(i,2);
out=hardlim(w0+w1*p(i,1)+w2*p(i,2));
outf(i)=out;
end
outf

En el algoritmo presentado se entiende que si el valor es 1 corresponde a un avión


“Bomber” y si el valor es 0 el avión es “Figther”.

Al ejecutar el algoritmo con 20 décadas tenemos la evolución del error de la


Figura4.

Evolucion del error por época


5

4.5

3.5

2.5

1.5

1
0 2 4 6 8 10 12 14 16 18 20

Figura 4. Evolución del Error en 20 épocas

Donde si bien el error converge este no llega a cero, lo que se ve representado en


que las respuestas son diferentes al target como se muestra en la Figura5.
Figura 5. Resultados en 20 épocas

Al incrementar el número de décadas a 200 se puede observar que el error converge


a cero como muestra la Figura6.
Evolucion del error por época
5

4.5

3.5

2.5

1.5

0.5

0
0 20 40 60 80 100 120 140 160 180 200

Figura [Link]ón del error en 200 épocas.

Corroborando en los resultados mostrados en la Figura7 donde los resultados finales


son iguales al target.
Figura 7. Resultados en 200 épocas

 Tarea3
Realizar el algoritmo de aprendizaje por descenso de gradiente para XOR

Para realizar el algoritmo de la compuerta XOR se crea 3 neuronas como se observa


en la Figura8.

Para el algoritmo se calculan los pesos de las dos entradas w1, w2, w3, w4 y los
pesos de las dos salidas correspondientes w5, w6 y el peso de los sesgos b0, b1, b2.
Las nets están definidas de la siguiente manera:
net=out 1∗w5+ out 2∗w 6+ b 2
net 1=¿ 1∗w 1+ ¿2∗w 3+ b 0
net 2=¿ 1∗w 2+ ¿ 2∗w 4+ b 1
Mediante aprendizaje “On line” el Error es:
1
E= e2
2
Donde:
e=targ−out
Las salidas de cada neurona están definidas:
out 1=sigmoide (net 1)
out 2=sigmoide(net 2)
out=sigmoide(net )
Y para el cálculo de los pesos tenemos que:
W i ( t+1 ) =W i (t ) +∆ W i (t)
Donde:
−η∗∂ E
∆ W i ( t )=
∂Wi
Para el cálculo de estos pesos se realizan las derivadas parciales como se muestra a
continuación:
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
∂net
∗∂ out 1
∂ out 1
∗∂ net 1
−η∗∂ E ∂ net 1
∆ b 0= =
∂b0 ∂b 0
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
∂ net
∗∂ out 2
∂ out 2
∗∂ net 2
−η∗∂ E ∂ net 2
∆ b 1= =
∂ b1 ∂b 1
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
−η∗∂ E ∂ net
∆ b 2= =
∂b2 ∂b2
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
∂ net
∗∂ out 1
∂ out 1
∗∂ net 1
−η∗∂ E ∂ net 1
∆ W 1= =
∂W 1 ∂W 1
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
∂ net
∗∂ out 2
∂ out 2
∗∂ net 2
−η∗∂ E ∂ net 2
∆ W 2= =
∂W 2 ∂W 2
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
∂ net
∗∂ out 1
∂ out 1
∗∂ net 1
−η∗∂ E ∂ net 1
∆ W 3= =
∂W 3 ∂W 3
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
∂ net
∗∂ out 2
∂ out 2
∗∂ net 2
−η∗∂ E ∂ net 2
∆ W 4= =
∂W 4 ∂W 4
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
−η∗∂ E ∂ net
∆ W 5= =
∂W 5 ∂W 5
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
−η∗∂ E ∂ net
∆ W 6= =
∂W 5 ∂W 6

Resolviendo las fracciones parciales tenemos las siguientes ecuaciones:


∆ b 0=−η∗( targ−out )∗−1∗(α∗out ( 1−out ) )∗W 5∗( α∗out 1 ( 1−out 1 ) )∗1
∆ b 1=−η∗( targ−out )∗−1∗(α∗out ( 1−out ))∗W 5∗(α∗out 2 ( 1−out 2 ) )∗1

∆ b 2=−η∗( targ−out )∗−1∗(α∗out ( 1−out ))∗1

∆ W 1=−η∗ (targ−out )∗−1∗( α∗out ( 1−out ) )∗W 5∗α∗out 1 ( 1−out 1 )∗¿ 1

∆ W 2=−η∗ ( targ−out )∗−1∗( α∗out ( 1−out ) )∗W 6∗α∗out 1 ( 1−out 1 )∗¿ 1

∆ W 3=−η∗( targ−out )∗−1∗(α∗out ( 1−out ))∗W 5∗out 2 ( 1−out 2 )∗¿ 2

∆ W 4=−η∗( targ−out )∗−1∗(α∗out (1−out ))∗W 6∗out 2 ( 1−out 2 )∗¿ 2

∆ W 5=−η∗( targ−out )∗−1∗( α∗out ( 1−out ))∗out 1

∆ W 6=−η∗( targ−out )∗−1∗( α∗out ( 1−out ) )∗out 2

Mediante el software MatLab se implementa el algoritmo para realizar el número de


épocas necesarias para que el error converja en 0.

%GradienteCompuertaXOR
n=0.5 %FACTOR DE APRENDIZAJE
in0=1; %SESGO
alfa=4;
b0=rand;b1=rand;b2=rand;w1=rand;w2=rand;w3=rand;w4=rand;w5=rand;w6=rand;
p=[0 0;0 1;1 0;1 1];
targ=[ 0 1 1 0];
errorv=[]; epocav=[];
for epoca=[Link] %EPOCAS
Error=0;
for i=[Link]
in1=p(i,1);
in2=p(i,2);
net1=in1*w1+in2*w2+b0;
net2=in1*w3+in2*w4+b1;
out1=sigmoidev(net1,alfa);
out2=sigmoidev(net2,alfa);
net=out1*w5+out2*w6+b2;
out=sigmoidev(net,alfa);
e=targ(i)-out;
deltab0=-n*e*(-
1)*dersigmoidev(net,alfa)*w5*dersigmoidev(net1,alfa)*1;
deltab1=-n*e*(-
1)*dersigmoidev(net,alfa)*w5*alfa*dersigmoidev(net2,alfa)*1;
deltab2=-n*e*(-1)*alfa*out*(1-out)*1;
deltaw1=-n*e*(-
1)*dersigmoidev(net,alfa)*w5*dersigmoidev(net1,alfa)*in1;
deltaw2=-n*e*(-
1)*dersigmoidev(net,alfa)*w6*dersigmoidev(net1,alfa)*in1;
deltaw3=-n*e*(-
1)*dersigmoidev(net,alfa)*w5*dersigmoidev(net2,alfa)*in2;
deltaw4=-n*e*(-
1)*dersigmoidev(net,alfa)*w6*dersigmoidev(net2,alfa)*in2;
deltaw5=-n*e*(-1)*dersigmoidev(net,alfa)*out1;
deltaw6=-n*e*(-1)*dersigmoidev(net,alfa)*out2;
%Actualizacion de Pesos
b0=b0+deltab0;
b1=b1+deltab1;
b2=b2+deltab2;
w1=w1+deltaw1;
w2=w2+deltaw2;
w3=w3+deltaw3;
w4=w4+deltaw4;
w5=w5+deltaw5;
w6=w6+deltaw6;
Error=Error+(targ(i)-out)^2;
end
errorv=[errorv Error];
epocav=[epocav epoca];
plot(epocav,errorv)
grid on
title('Evolucion del error por época')
end

for i=1:4
in1=p(i,1);
in2=p(i,2);
out=hardlim(w1*p(i,1)+w2*p(i,2));
outf(i)=out;
end
outf
targ

Se obtiene la evolucion del error mostrada en la siguiente Figura


Evolucion del error por época
2.5

1.5

0.5

0
0 50 100 150 200 250 300 350 400 450 500

Y se obtiene los siguientes valores:


b0=-0.3198
b1=0.6357
b2=-0.3754
w1=2.1450
w2=1.4320
w3=1.8250
w4=-0.7923
w5=1.7372
w6=-1.3050

También podría gustarte