Aprendizaje del perceptrón
-
Upload
evelyn-gabriela-lema-vinueza -
Category
Documents
-
view
33 -
download
1
Transcript of Aprendizaje del perceptrón
Página 1
UNIVERSIDAD DE FUERZAS ARMADAS “ESPE” DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA
ASIGNATURA: CONTROL INTELIGENTE
Actividad No 5. Aprendizaje del perceptrón
Fecha: Lunes, 16 de abril de 2014
Nombre alumno: Evelyn Gabriela Lema – Fernando Javier Villalba Portilla.
NRC: 2055
Entrenamiento de un perceptrón para que realice clasificación de aviones
Desarrollo en MATLAB
A. Regla de aprendizaje del perceptrón
1. Escriba en un vector “inputs” de dimensión nx2 las entradas de los patrones de
entrenamiento. Cada fila tiene un patrón de entrenamiento. Escriba el vector “tag” de
dimensión nx1 con las salidas de cada patrón de entrenamiento
2. Escriba una línea de código para tomar el primer patrón de aprendizaje y encontrar la
actualización de los pesos. Factor de aprendizaje=0.5.
Vector inputs: inputs=[1.0 0.1 ;2.0 0.2; 0.1 0.3; 2.0 0.3; 0.2 0.4 ; 3.0 0.4; 0.1
0.5; 1.5 0.5 ;0.5 0.6 ;1.6 0.7]
Vector tag: target=[1 1 0 1 0 1 0 1 0 0]
w2=rand(); w1=rand(); w0=rand(); in0=1; n=0.5; inputs=[1.0 0.1 ;2.0 0.2; 0.1 0.3; 2.0 0.3; 0.2 0.4 3.0 0.4; 0.1 0.5; 1.5 0.5 ;0.5 0.6 ;1.6 0.7]; out=hardlim(inputs(1,1)*w1+inputs(1,2)*w2+w0*in0); target =[1 1 0 1 0 1 0 1 0 0]; delta_w0=n*(target(1)-out)*in0; delta_w1=n*(target(1)-out)*inputs(1,1); delta_w2=n*(target(1)-out)*inputs(1,2); w0=w0+ delta_w0; w1=w1+ delta_w1; w2=w2+ delta_w2; w0 w1 w2
Página 2
3. Escriba las líneas de código para calcular la actualización de pesos y completar una
época.
4. Utilice un lazo for para que el programa ejecute 50 épocas. Dibuje el diagrama de flujo y
transcriba el programa:
w2=rand(); w1=rand(); w0=rand(); in0=1; n=0.5; inputs=[1.0 0.1 ;2.0 0.2; 0.1 0.3; 2.0 0.3; 0.2 0.4 ; 3.0 0.4; 0.1
0.5; 1.5 0.5 ;0.5 0.6 ;1.6 0.7]; tag=[1 1 0 1 0 1 0 1 0 0];
for i=1:10
out=hardlim(inputs(i,1)*w1+inputs(i,2)*w2+w0*in0); Dw0=0.5*(tag(i)-out)*in0; Dw1=0.5*(tag(i)-out)*inputs(i,1); Dw2=0.5*(tag(i)-out)*inputs(i,2); w0=w0+Dw0; w1=w1+Dw1; w2=w2+Dw2;
end
w0 w1 w2
w2=rand(); w1=rand(); w0=rand(); in0=1; n=0.5; inputs=[1.0 0.1 ;2.0 0.2; 0.1 0.3; 2.0 0.3; 0.2 0.4 ; 3.0 0.4; 0.1 0.5;
1.5 0.5 ;0.5 0.6 ;1.6 0.7]; tag=[1 1 0 1 0 1 0 1 0 0];
for j=1:50 for i=1:10 out=hardlim(inputs(i,1)*w1+inputs(i,2)*w2+w0*in0);
Dw0=0.5*(tag(i)-out)*in0; Dw1=0.5*(tag(i)-out)*inputs(i,1); Dw2=0.5*(tag(i)-out)*inputs(i,2); w0=w0+Dw0; w1=w1+Dw1; w2=w2+Dw2;
end end w0 w1 w2
Página 3
Inicio
w0=rand();
w1=rand();
w2=rand();
in0=1;
n=0.5;
inputs=[Nx2]
target=[NX1]
j=j+1
J <=50
i=i+1
i <=50
out=hardlim(inputs(i,1)*w1+inputs(i,2)*w2+w0*in0);
delta_w0=n*(tag(i)-out)*in0;
delta_w1=n*(tag(i)-out)*inputs(i,1);
delta_w2=n*(tag(i)-out)*inputs(i,2);
w0=w0+Dw0;
w1=w1+Dw1;
w2=w2+Dw2;
w0
w1
w2
si
no
si
Página 4
5. Complete el programa para que se grafique el error cuadrático total versus la época.
Transcriba el programa y el gráfico obtenido
Valores Obtenidos: Gráfica de Resultados:
B. Aprendizaje por descenso de gradiente
0 5 10 15 20 25 30 35 40 45 500
1
2
3
4
5
6
ER
RO
R C
UA
DR
AT
ICO
EPOCA
w0=rand(); w1=rand(); w2=rand(); in0=1; n=0.5;
inputs=[1.0 0.1 ;2.0 0.2; 0.1 0.3; 2.0 0.3; 0.2 0.4 ; 3.0 0.4; 0.1 0.5; 1.5
0.5 ;0.5 0.6 ;1.6 0.7]; target=[1 1 0 1 0 1 0 1 0 0];
for j=1:50 err_T=0; for i=1:10 out=hardlim(inputs(i,1)*w1+inputs(i,2)*w2+w0*in0);
delta_w0=0.5*(target(i)-out)*in0; delta_w1=0.5*(target(i)-out)*inputs(i,1); delta_w2=0.5*(target(i)-out)*inputs(i,2); w0=w0+ delta_w0; w1=w1+ delta_w1; w2=w2+ delta_w2; err_i=(target(i)-out)^2; err_T=err_T+err_i;
end vector_epocas(j)=j; vector_err(j)=err_T; plot(vector_epocas,vector_err); ylabel('ERROR CUADRATICO') xlabel('EPOCA') end w0 w1 w2
Página 5
6. Escriba en detalle la ecuación de cálculo de actualización de cada peso
7. Modifique el programa de la regla de aprendizaje para que ejecute el entrenamiento por
descenso de gradiente. Transcriba el programa y el gráfico del aprendizaje
w0=rand(); w1=rand(); w2=rand(); in0=1; n=0.5; alpha=4; inputs=[1.0 0.1 ;2.0 0.2; 0.1 0.3; 2.0 0.3; 0.2 0.4 ; 3.0 0.4; 0.1 0.5; 1.5 0.5 ;0.5 0.6
;1.6 0.7]; target=[1 1 0 1 0 1 0 1 0 0];
for j=1:50 errT=0; for i=1:10 net=(inputs(i,1)*w1+inputs(i,2)*w2+w0*in0); out=1/1+exp(-alpha*net); delta_w0=0.5*(target(i)-out)*in0*alpha*out*(1-out); delta_w1=0.5*(target(i)-out)*alpha*out*(1-out)*inputs(i,1); delta_w2=0.5*(target(i)-out)*alpha*out*(1-out)*inputs(i,2);
w0=w0+ delta_w0; w1=w1+ delta_w1; w2=w2+ delta_w2;
erri=(target(i)-out)^2; errT=errT+erri;
end vector_epocas(j)=j; vector_err(j)=errT; plot(vector_epocas,vector_err); ylabel('ERROR CUADRATICO') xlabel('EPOCA') end
∑
Página 6
Valores Obtenidos: Gráfica de Resultados
Evelyn Gabriela Lema y Fernando Javier Villalba Portilla afirmamos que esta actividad es de
nuestra autoría y establecemos que para la elaboración de la misma se ha seguido los
lineamientos del Código de Ética de la Universidad de las Fuerzas Armadas ESPE.
0 5 10 15 20 25 30 35 40 45 505
5.05
5.1
5.15
5.2
5.25
ER
RO
R C
UA
DR
AT
ICO
EPOCA
w0 w1 w2