Escolar Documentos
Profissional Documentos
Cultura Documentos
out
in1
LW11
I
W
2
1
I
W
1
2
IW11
In2
IW22 LW21
o
u
t
1
o
u
t
2
net1
net2
2=-b2
1=-b1
net3
3=-b3
1. Escriba la frmula de clculo de la red neuronal.
2. Escriba la frmula de actualizacin de los pesos
3. Escriba la frmula de actualizacin de los pesos
4. Escriba el algoritmo de entrenamiento on-line(muestre curva de entrenamiento).
In
1
In
2
Target
0 0 0
0 1 1
1 0 1
1 1 0
Funcin sigmoide
function y=sigmoide(x)
y=1/(1+exp(-4*x))
end
Funcin sigmoide prima
function y=sigmoideprima(x)
y=4*sigmoide(x)*(1-sigmoide(x))
end
%% Algoritmo de entrenamiento ON-LINE
clc
clear all
%%Pesos
IW11=0.2;
IW12=0.1;
IW21=0.2;
IW22=0.1;
LW11=0.2;
LW21=0.1;
%%Factor de Aprendizaje
b1=1;
b2=1;
b3=1;
%Patrones de entrenamiento
in1=[0 0 1 1];
in2=[0 1 0 1];
target=[0 1 1 0];
x=1;
errorv=[];
epocav=[];
epoca=0;
n=0.7;
while (x==1)
err=0;
fori=1:length(target)
%Calculo de la red neuronal
net1=in1(i)*IW11+in2(i)*IW21+b1;
out1=sigmoide(net1);
net2=in1(i)*IW12+in2(i)*IW22+b2;
out2=sigmoide(net2);
net3=out1*LW11+out2*LW21+b3;
out=sigmoide(out1*LW11+out2*LW21+b3);
error=target(i)-out;
%Actualizacion de pesos
dLW11=-n*(error)*(-1)*sigmoideprima(net3)*out1;
dLW21=-n*(error)*(-1)*sigmoideprima(net3)*out2;
db3=-n*(error)*(-1)*sigmoideprima(net3)*(1);
dIW11=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*in1(i);
dIW12=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*in1(i);
dIW21=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*in2(i);
dIW22=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*in2(i);
db1=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*(1);
db2=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*(1);
IW11=IW11+dIW11;
IW12=IW12+dIW12;
IW21=IW21+dIW21;
IW22=IW22+dIW22;
LW11=LW11+dLW11;
LW21=LW21+dLW21;
b1=b1+db1;
b2=b2+db2;
b3=b3+db3;
%Calculo del error
ep=error^2;
err=err+ep;
end
if(err<=1e-2)
break
end
%Grafica del perceptron
epoca=epoca+1;
epocav=[epocavepoca];
errorv=[errorverr];
plot (epocav,errorv)
title('Curva de aprendizaje');
xlabel('Epocas');
ylabel('Error Total');
end
5. Escriba el algoritmo para entrenamiento batch.
%% Algoritmo de entrenamiento BATCH
clc
clear all
%%Pesos
IW11=0.2;
IW12=0.1;
IW21=0.2;
IW22=0.1;
LW11=0.2;
LW21=0.1;
%%Factor de Aprendizaje
b1=1;
b2=1;
b3=1;
%Patrones de entrenamiento
in1=[0 0 1 1];
in2=[0 1 0 1];
target=[0 1 1 0];
x=1;
errorv=[];
epocav=[];
epoca=0;
n=0.7;
while (x==1)
err=0;
fori=1:length(target)
%Calculo de la red neuronal
net1=in1(i)*IW11+in2(i)*IW21+b1;
0 20 40 60 80 100 120 140 160 180
0
0.5
1
1.5
2
2.5
3
Curva de aprendizaje
Epocas
E
r
r
o
r
T
o
t
a
l
out1=sigmoide(net1);
net2=in1(i)*IW12+in2(i)*IW22+b2;
out2=sigmoide(net2);
net3=out1*LW11+out2*LW21+b3;
out=sigmoide(out1*LW11+out2*LW21+b3);
error=target(i)-out;
%Actualizacion de pesos
dLW11=-n*(error)*(-1)*sigmoideprima(net3)*out1;
dLW21=-n*(error)*(-1)*sigmoideprima(net3)*out2;
db3=-n*(error)*(-1)*sigmoideprima(net3)*(1);
dIW11=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*in1(i);
dIW12=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*in1(i);
dIW21=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*in2(i);
dIW22=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*in2(i);
db1=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*(1);
db2=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*(1);
end
IW11=IW11+dIW11;
IW12=IW12+dIW12;
IW21=IW21+dIW21;
IW22=IW22+dIW22;
LW11=LW11+dLW11;
LW21=LW21+dLW21;
b1=b1+db1;
b2=b2+db2;
b3=b3+db3;
%Calculo del error
ep=error^2;
err=err+ep;
if(err<=1e-2)
break
end
%Grafica del perceptron
epoca=epoca+1;
epocav=[epocavepoca];
errorv=[errorverr];
plot (epocav,errorv)
title('Curva de aprendizaje');
xlabel('Epocas');
ylabel('Error Total');
end
6. Escriba el algoritmo que evolucione la tasa de aprendizaje.
%% Algoritmo que evolucione la tasa de aprendizaje
clc
clear all
%%Pesos
IW11=0.2;
IW12=0.1;
IW21=0.2;
IW22=0.1;
LW11=0.2;
LW21=0.1;
%%Factor de Aprendizaje
b1=1;
b2=1;
b3=1;
%Patrones de entrenamiento
in1=[0 0 1 1];
in2=[0 1 0 1];
target=[0 1 1 0];
x=1;
errorv=[];
epocav=[];
epoca=0;
while (x==1)
err=0;
fori=1:length(target)
n=0.7;
%Calculo de la red neuronal
1 2 3 4 5 6 7 8
0.65
0.7
0.75
0.8
0.85
0.9
0.95
1
Curva de aprendizaje
Epocas
E
r
r
o
r
T
o
t
a
l
net1=in1(i)*IW11+in2(i)*IW21+b1;
out1=sigmoide(net1);
net2=in1(i)*IW12+in2(i)*IW22+b2;
out2=sigmoide(net2);
net3=out1*LW11+out2*LW21+b3;
out=sigmoide(out1*LW11+out2*LW21+b3);
error=target(i)-out;
%Actualizacion de pesos
dLW11=-n*(error)*(-1)*sigmoideprima(net3)*out1;
dLW21=-n*(error)*(-1)*sigmoideprima(net3)*out2;
db3=-n*(error)*(-1)*sigmoideprima(net3)*(1);
dIW11=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*in1(i);
dIW12=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*in1(i);
dIW21=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*in2(i);
dIW22=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*in2(i);
db1=-n*(error)*(-
1)*sigmoideprima(net3)*LW11*sigmoideprima(net1)*(1);
db2=-n*(error)*(-
1)*sigmoideprima(net3)*LW21*sigmoideprima(net2)*(1);
IW11=IW11+dIW11;
IW12=IW12+dIW12;
IW21=IW21+dIW21;
IW22=IW22+dIW22;
LW11=LW11+dLW11;
LW21=LW21+dLW21;
b1=b1+db1;
b2=b2+db2;
b3=b3+db3;
%Calculo del error
ep=error^2;
err=err+ep;
%Taza de aprendizaje
n=n/i;
end
if(err<=1e-2)
break
end
%Grafica del perceptron
epoca=epoca+1;
epocav=[epocavepoca];
errorv=[errorverr];
plot (epocav,errorv)
title('Curva de aprendizaje');
xlabel('Epocas');
ylabel('Error Total');
end
7. Escriba el algoritmo que utilice la funcin tank como funcin de activacin.
Funcin de la tanghiperbolica
function y=tanghiperbolica(x)
y=(exp(x)-exp(-x))/(exp(x)+exp(-x))
end
Funcin de la tanghiperbolica prima
function y=tanghiperbolicaprima(x)
y=1-(((exp(x)-exp(-x))/(exp(x)+exp(-x)))^2)
end
%% Algoritmo que utiliza la tangente hiperbolica
clc
clear all
%%Pesos
IW11=0.2;
IW12=0.1;
IW21=0.2;
IW22=0.1;
LW11=0.2;
LW21=0.1;
%%Factor de Aprendizaje
b1=1;
b2=1;
0 20 40 60 80 100 120 140 160 180
0
0.5
1
1.5
2
2.5
3
Curva de aprendizaje
Epocas
E
r
r
o
r
T
o
t
a
l
b3=1;
%Patrones de entrenamiento
in1=[0 0 1 1];
in2=[0 1 0 1];
target=[0 1 1 0];
x=1;
errorv=[];
epocav=[];
epoca=0;
n=0.7;
while (x==1)
err=0;
fori=1:length(target)
%Calculo de la red neuronal
net1=in1(i)*IW11+in2(i)*IW21+b1;
out1=tanghiperbolica(net1);
net2=in1(i)*IW12+in2(i)*IW22+b2;
out2=tanghiperbolica(net2);
net3=out1*LW11+out2*LW21+b3;
out=tanghiperbolica(out1*LW11+out2*LW21+b3);
error=target(i)-out;
%Actualizacion de pesos
dLW11=-n*(error)*(-1)*tanghiperbolicaprima(net3)*out1;
dLW21=-n*(error)*(-1)*tanghiperbolicaprima(net3)*out2;
db3=-n*(error)*(-1)*tanghiperbolicaprima(net3)*(1);
dIW11=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW11*tanghiperbolicaprima(net1)
*in1(i);
dIW12=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW21*tanghiperbolicaprima(net2)
*in1(i);
dIW21=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW11*tanghiperbolicaprima(net1)
*in2(i);
dIW22=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW21*tanghiperbolicaprima(net2)
*in2(i);
db1=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW11*tanghiperbolicaprima(net1)
*(1);
db2=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW21*tanghiperbolicaprima(net2)
*(1);
end
IW11=IW11+dIW11;
IW12=IW12+dIW12;
IW21=IW21+dIW21;
IW22=IW22+dIW22;
LW11=LW11+dLW11;
LW21=LW21+dLW21;
b1=b1+db1;
b2=b2+db2;
b3=b3+db3;
%Calculo del error
ep=error^2;
err=err+ep;
if(err<=1e-2)
break
end
%Grafica del perceptron
epoca=epoca+1;
epocav=[epocavepoca];
errorv=[errorverr];
plot (epocav,errorv)
title('Curva de aprendizaje');
xlabel('Epocas');
ylabel('Error Total');
end
8. Escriba un programa que desordene los datos de entrenamiento (muestre curva de
aprendizaje).
%% Algoritmo que utiliza la tangente hiperbolica
clc
clear all
%%Pesos
IW11=0.2;
IW12=0.1;
IW21=0.2;
IW22=0.1;
LW11=0.2;
LW21=0.1;
%%Factor de Aprendizaje
b1=1;
1 1.5 2 2.5 3 3.5 4 4.5 5
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Curva de aprendizaje
Epocas
E
r
r
o
r
T
o
t
a
l
b2=1;
b3=1;
%Patrones de entrenamiento
in1=[randi(2)-1 randi(2)-1 randi(2)-1 randi(2)-1]
in2=[randi(2)-1 randi(2)-1 randi(2)-1 randi(2)-1]
if (in1(1)==0 && in2(1)==1) || (in1(1)==1 && in2(1)==0)
target(1)=1
else
target(1)=0
end
if (in1(2)==0 && in2(2)==1) || (in1(2)==1 && in2(2)==0)
target(2)=1
else
target(2)=0
end
if (in1(3)==0 && in2(3)==1) || (in1(3)==1 && in2(3)==0)
target(3)=1
else
target(3)=0
end
if (in1(4)==0 && in2(4)==1) || (in1(4)==1 && in2(4)==0)
target(4)=1
else
target(4)=0
end
x=1;
errorv=[];
epocav=[];
epoca=0;
n=0.7;
while (x==1)
err=0;
for i=1:length(target)
%Calculo de la red neuronal
net1=in1(i)*IW11+in2(i)*IW21+b1;
out1=tanghiperbolica(net1);
net2=in1(i)*IW12+in2(i)*IW22+b2;
out2=tanghiperbolica(net2);
net3=out1*LW11+out2*LW21+b3;
out=tanghiperbolica(out1*LW11+out2*LW21+b3);
error=target(i)-out;
%Actualizacion de pesos
dLW11=-n*(error)*(-1)*tanghiperbolicaprima(net3)*out1;
dLW21=-n*(error)*(-1)*tanghiperbolicaprima(net3)*out2;
db3=-n*(error)*(-1)*tanghiperbolicaprima(net3)*(1);
dIW11=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW11*tanghiperbolicaprima(net1)
*in1(i);
dIW12=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW21*tanghiperbolicaprima(net2)
*in1(i);
dIW21=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW11*tanghiperbolicaprima(net1)
*in2(i);
dIW22=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW21*tanghiperbolicaprima(net2)
*in2(i);
db1=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW11*tanghiperbolicaprima(net1)
*(1);
db2=-n*(error)*(-
1)*tanghiperbolicaprima(net3)*LW21*tanghiperbolicaprima(net2)
*(1);
IW11=IW11+dIW11;
IW12=IW12+dIW12;
IW21=IW21+dIW21;
IW22=IW22+dIW22;
LW11=LW11+dLW11;
LW21=LW21+dLW21;
b1=b1+db1;
b2=b2+db2;
b3=b3+db3;
%Calculo del error
ep=error^2;
err=err+ep;
end
if(err<=1e-2)
break
end
%Grafica del perceptron
epoca=epoca+1;
epocav=[epocavepoca];
errorv=[errorverr];
plot (epocav,errorv)
title('Curva de aprendizaje');
xlabel('Epocas');
ylabel('Error Total');
end
0 20 40 60 80 100 120 140
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Curva de aprendizaje
Epocas
E
r
r
o
r
T
o
t
a
l