Upload
fernando-villalba
View
17
Download
0
Embed Size (px)
DESCRIPTION
Articulo sobre redes redes neuronales
Citation preview
Pgina 1
UNIVERSIDAD DE FUERZAS ARMADAS ESPE DEPARTAMENTO DE ELCTRICA Y ELECTRNICA
ASIGNATURA: CONTROL INTELIGENTE
Actividad No8. Aprendizaje del perceptrn multicapa mediante retropropagacin del error
Fecha: 14 de enero 2015
Nombre alumno: Fernando Villalba
1. Dibuje un perceptrn multicapa con 2 entradas, 2 neuronas escondidas y una neurona de salida.
2. Escriba las frmulas de actualizacin de cada uno de los pesos de conexin entre las neuronas de la capa oculta y la capa de salida. Utilice la nomenclatura del ejercicio 1.
3. Escriba las frmulas de actualizacin de cada uno de los pesos de conexin entre las entradas y las neuronas de la capa oculta. Utilice la nomenclatura del ejercicio 1.
= () () ( ) ( ) 1 = () () ( ) ( ) 2 = () () ( ) ( )
= () () ( ) ( ) ( ) = () () ( ) ( ) ( ) = () () ( ) ( ) = () () ( ) ( ) ( ) = () () ( ) ( ) ( ) = () () ( ) ( ) ( )
Pgina 2
4. Escriba el programa para realizar el aprendizaje por retropropagacin 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 lnea (ejemplo por ejemplo).
Grafique las lneas de frontera de la red neuronal de acuerdo a lo realizado en la
actividad 7.
w1=rand(); w2=rand(); w3=rand(); w4=rand(); w5=rand(); w6=rand(); w7=rand(); w8=rand(); w9=rand(); %VALOR UMBRAL in0=1; %Factor de aprendizaje n=0.1; %Patrones de entrenamiento in1=[0 0 1 1]; in2=[0 1 0 1]; targ=[0 1 1 0]; %Numero de epocas numEpoca=1000; errorVec=[]; epoca=[]; alpha=4;
for k=1:1:numEpoca errorTot=0; %Enceramiento de Variables dw1Ac=0; dw2Ac=0; dw3Ac=0; dw4Ac=0; dw5Ac=0; dw6Ac=0; dw7Ac=0; dw8Ac=0; dw9Ac=0; for i=1:1:4 %Estructura de la Red net1=in0*w7+in1(i)*w1+in2(i)*w3; net2=in0*w8+in1(i)*w2+in2(i)*w4; out1 = 1/(1+exp(-alpha*net1)); out2 = 1/(1+exp(-alpha*net2)); net=in0*w9+out1*w5+out2*w6; out= 1/(1+exp(-alpha*net)); %Calculo del error% error = (0.5)*((targ(i)-out).^2); errorTot=(errorTot+error); %Regla de aprendizaje, por retropropagacin% dw1=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in1(i); dw2=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in1(i); dw3=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in2(i); dw4=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in2(i);
Pgina 3
dw5=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*out1; dw6=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*out2; dw7=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in0; dw8=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in0; dw9=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*in0;
%ACTUALIZACION DE PESOS w1=(w1+dw1); w2=(w2+dw2); w3=(w3+dw3); w4=(w4+dw4); w5=(w5+dw5); w6=(w6+dw6); w7=(w7+dw7); w8=(w8+dw8); w9=(w9+dw9); end %Acumulacin de Error en vector errorVec=[errorVec errorTot]; epoca=[epoca k]; end %Grfica [in1,in2] = meshgrid(0:.01:1, 0:.01:1); net1=in0*w7+in1.*w1+in2.*w3; net2=in0*w8+in1.*w2+in2.*w4; out1 = 1./(1+exp(-alpha*net1)); out2 = 1./(1+exp(-alpha*net2)); net=in0*w9+out1.*w5+out2.*w6; out= 1./(1+exp(-alpha*net)); subplot(3,1,1) mesh(in1,in2,out) aux = round(out); %Para graficar la linea de frontera subplot(3,1,2) mesh(in1,in2,aux) view(0,90);xlabel('in1');ylabel('in2'); subplot(3,1,3) plot(epoca, errorVec);
Pgina 4
5. Repita el numeral 4 pero con aprendizaje en paquete (batch). Grafique las lneas de frontera de la red neuronal de acuerdo a lo realizado en la actividad 7.
w1=rand(); w2=rand(); w3=rand(); w4=rand(); w5=rand(); w6=rand(); w7=rand(); w8=rand(); w9=rand(); %Entrada umbral in0=1; %Factor de aprendizaje n=0.1; %Patrones de entrenamiento in1=[0 0 1 1]; in2=[0 1 0 1]; targ=[0.1 0.9 0.9 0.1]; %Numero de epocas numEpoca=1000; errorVec=[]; epoca=[]; alpha=4;
for k=1:1:numEpoca errorTot=0; %Enceramiento de Variables dw1Ac=0; dw2Ac=0; dw3Ac=0; dw4Ac=0; dw5Ac=0; dw6Ac=0; dw7Ac=0; dw8Ac=0; dw9Ac=0; for i=1:1:4 %Estructura de la Red net1=in0*w7+in1(i)*w1+in2(i)*w3; net2=in0*w8+in1(i)*w2+in2(i)*w4; out1 = 1/(1+exp(-alpha*net1)); out2 = 1/(1+exp(-alpha*net2)); net=in0*w9+out1*w5+out2*w6; out= 1/(1+exp(-alpha*net)); %Calculo del error% error = (0.5)*((targ(i)-out).^2); errorTot=(errorTot+error); %Regla de aprendizaje, por retropropagacin% dw1=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in1(i); dw2=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in1(i); dw3=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in2(i); dw4=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in2(i); dw5=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*out1; dw6=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*out2;
Pgina 5
dw7=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in0; dw8=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in0; dw9=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*in0; %Acumulacin de Variaciones dw1Ac=(dw1Ac+dw1); dw2Ac=(dw2Ac+dw2); dw3Ac=(dw3Ac+dw3); dw4Ac=(dw4Ac+dw4); dw5Ac=(dw5Ac+dw5); dw6Ac=(dw6Ac+dw6); dw7Ac=(dw7Ac+dw7); dw8Ac=(dw8Ac+dw8); dw9Ac=(dw9Ac+dw9); end %Actualizacin de valores w1=(w1+dw1Ac); w2=(w2+dw2Ac); w3=(w3+dw3Ac); w4=(w4+dw4Ac); w5=(w5+dw5Ac); w6=(w6+dw6Ac); w7=(w7+dw7Ac); w8=(w8+dw8Ac); w9=(w9+dw9Ac); %Acumulacin de Error en vector errorVec=[errorVec errorTot]; epoca=[epoca k]; end %Grfica [in1,in2] = meshgrid(0:.01:1, 0:.01:1); net1=in0*w7+in1.*w1+in2.*w3; net2=in0*w8+in1.*w2+in2.*w4; out1 = 1./(1+exp(-alpha*net1)); out2 = 1./(1+exp(-alpha*net2)); net=in0*w9+out1.*w5+out2.*w6; out= 1./(1+exp(-alpha*net)); subplot(3,1,1) mesh(in1,in2,out) aux = round(out); %Para graficar la linea de frontera subplot(3,1,2) mesh(in1,in2,aux) view(0,90);xlabel('in1');ylabel('in2'); subplot(3,1,3) plot(epoca, errorVec);
Pgina 6
Pgina 7
UNIVERSIDAD DE FUERZAS ARMADAS ESPE DEPARTAMENTO DE ELCTRICA Y ELECTRNICA
ASIGNATURA: CONTROL INTELIGENTE
Actividad No10. Mejoras al aprendizaje del perceptrn multicapa mediante
retropropagacin. Aprendizaje por descenso ms pronunciado. Entrenamiento de una red
neuronal con patrones de XOR.
Fecha: 12-01-2015
Nombre alumno: Fernando Villalba
NRC:
Introduccin. El mtodo de descenso ms pronunciado consiste en el siguiente procedimiento:
El factor de aprendizaje es el mismo para todos los pesos. Iniciar el factor de aprendizaje con un
valor y doblarlo cada poca. Esto conduce a una actualizacin preliminar de los pesos. El Error
medio cuadrtico MSE se calcula para los pesos actualizados que corresponden a la tasa de
aprendizaje actual. Si el MSE no decrece con esta tasa de aprendizaje, los pesos retornan a sus
valores originales, la tasa de aprendizaje se reduce a la mitad y se contina el entrenamiento. Si
el MSE todava no decrece, se parte el factor de aprendizaje a la mitad repetidamente hasta
encontrar una tasa de aprendizaje que reduzca el MSE. En este punto el factor de aprendizaje es
doblado otra vez y se inicia un nuevo paso. El proceso se repite una y otra vez. La bsqueda
contina en esta forma y termina dentro de un nmero predefinido de pocas de entrenamiento.
Si la disminucin en el error con respecto al paso previo es ms pequea que un nivel especificado
o si el valor del factor de aprendizaje cae bajo un lmite especificado el proceso se detiene.
()()
()< ; <
, son especificados por el usuario
Pgina 8
1. De acuerdo al enunciado, dibuje un diagrama de flujo que resuelva el aprendizaje de una red neuronal por descenso ms pronunciado.
Inicio
Definir patrones
de entrenamiento
Inicio con pesos
Aleatorios
Parmetros iniciales: n, nmin
Emin, nmero de pocas
Formar un patrn de
entrenamiento
Calcular la salida de la Red
neuronal
Calcular la actualizacin de
pesos, el error medio cuadrtico
Ultimo patron de
entrenamiento?
MSE
Pgina 9
2. Transcriba el cdigo para considerar que El Error medio cuadrtico MSE se calcula para los pesos actualizados que corresponden a la tasa de aprendizaje actual. Indique como su
cdigo considera la idea de que si el MSE no decrece los pesos deben retornar a sus valores
iniciales.
3. Escriba las lneas de cdigo que toman en cuenta la idea de que: Si el MSE no decrece con esta tasa de aprendizaje, los pesos retornan a sus valores originales, la tasa de aprendizaje se
reduce a la mitad y se contina el entrenamiento. Si el MSE todava no decrece, se parte el
factor de aprendizaje a la mitad repetidamente hasta encontrar una tasa de aprendizaje que
reduzca el MSE. En este punto el factor de aprendizaje es doblado otra vez y se inicia un
nuevo paso
if errorTot>errorTot1 n=n*2; else w1=(w1-dw1); w2=(w2-dw2); w3=(w3-dw3); w4=(w4-dw4); w5=(w5-dw5); w6=(w6-dw6); w7=(w7-dw7); w8=(w8-dw8); w9=(w9-dw9); if n>nmin n=n*0.5; % tasa de aprendizaje reducida a la mitad end errorTot=errorTot1; end
for i=1:4 net1=in0*w7+in1(i)*w1+in2(i)*w3; net2=in0*w8+in1(i)*w2+in2(i)*w4; out1 = 1/(1+exp(-alpha*net1)); out2 = 1/(1+exp(-alpha*net2)); net=in0*w9+out1*w5+out2*w6; out= 1/(1+exp(-alpha*net)); error = (0.5)*((targ(i)-out).^2); errorTot1=(errorTot1+error); end % Si el MSE no decrece los pesos deben %retornar a sus valores iniciales, %por lo que se resta a cada peso actualizado %su valor de actualizacin.
if errorTot>errorTot1 n=n*2; else w1=(w1-dw1); w2=(w2-dw2); w3=(w3-dw3); w4=(w4-dw4); w5=(w5-dw5); w6=(w6-dw6); w7=(w7-dw7); w8=(w8-dw8); w9=(w9-dw9);
Pgina 10
4. Escriba el cdigo que resuelve la idea final del enunciado: La bsqueda contina en esta forma y termina dentro de un nmero predefinido de pocas de
entrenamiento. Si la disminucin en el error con respecto al paso previo es ms pequea que un
nivel especificado o si el valor del factor de aprendizaje cae bajo un lmite especificado el proceso se detiene.
()()
()< ; <
, son especificados por el usuario
w1=rand(); w2=rand(); w3=rand(); w4=rand(); w5=rand(); w6=rand(); w7=rand(); w8=rand(); w9=rand(); %entrada umbral in0=1; %Factor de aprendizaje n=0.1; %Patrones de entrenamiento in1=[0 0 1 1]; in2=[0 1 0 1]; targ=[0.1 0.9 0.9 0.1]; %Numero de epocas numEpoca=1000; errorVec=[]; epoca=[]; alpha=4; %Variables Emin=0.01; nmin=0.01; errorTot=1;errorTot1=0;
for k=1:1:numEpoca if errorTot>Emin errorTot=0; %Enceramiento de Variables dw1Ac=0; dw2Ac=0; dw3Ac=0; dw4Ac=0; dw5Ac=0; dw6Ac=0; dw7Ac=0; dw8Ac=0; dw9Ac=0;
Pgina 11
for i=1:1:4 %Estructura de la Red net1=in0*w7+in1(i)*w1+in2(i)*w3; net2=in0*w8+in1(i)*w2+in2(i)*w4; out1 = 1/(1+exp(-alpha*net1)); out2 = 1/(1+exp(-alpha*net2)); net=in0*w9+out1*w5+out2*w6; out= 1/(1+exp(-alpha*net)); %Calculo del error% error = (0.5)*((targ(i)-out).^2); errorTot=(errorTot+error); %Regla de aprendizaje, por retropropagacin% dw1=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in1(i); dw2=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in1(i); dw3=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in2(i); dw4=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in2(i); dw5=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*out1; dw6=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*out2; dw7=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w5*((alpha*out1*(1-out1))+0.1)*in0; dw8=-n*(-1)*(targ(i)-out)*((alpha*out*(1-
out))+0.1)*w6*((alpha*out2*(1-out2))+0.1)*in0; dw9=-n*(-1)*(targ(i)-out)*((alpha*out*(1-out))+0.1)*in0; %Acumulacin de Variaciones dw1Ac=(dw1Ac+dw1); dw2Ac=(dw2Ac+dw2); dw3Ac=(dw3Ac+dw3); dw4Ac=(dw4Ac+dw4); dw5Ac=(dw5Ac+dw5); dw6Ac=(dw6Ac+dw6); dw7Ac=(dw7Ac+dw7); dw8Ac=(dw8Ac+dw8); dw9Ac=(dw9Ac+dw9); end %Actualizacin de valores w1=(w1+dw1Ac); w2=(w2+dw2Ac); w3=(w3+dw3Ac); w4=(w4+dw4Ac); w5=(w5+dw5Ac); w6=(w6+dw6Ac); w7=(w7+dw7Ac); w8=(w8+dw8Ac); w9=(w9+dw9Ac); errorVec=[errorVec errorTot]; epoca=[epoca k];
for i=1:4 net1=in0*w7+in1(i)*w1+in2(i)*w3; net2=in0*w8+in1(i)*w2+in2(i)*w4; out1 = 1/(1+exp(-alpha*net1)); out2 = 1/(1+exp(-alpha*net2)); net=in0*w9+out1*w5+out2*w6; out= 1/(1+exp(-alpha*net)); error = (0.5)*((targ(i)-out).^2); errorTot1=(errorTot1+error); end % Si el MSE no decrece los pesos deben
Pgina 12
%retornar a sus valores iniciales, %por lo que se resta a cada peso actualizado %su valor de actualizacin.
if errorTot>errorTot1 n=n*2; else w1=(w1-dw1); w2=(w2-dw2); w3=(w3-dw3); w4=(w4-dw4); w5=(w5-dw5); w6=(w6-dw6); w7=(w7-dw7); w8=(w8-dw8); w9=(w9-dw9); if n>nmin n=n*0.5; % tasa de aprendizaje reducida a la mitad end errorTot=errorTot1; end end end [in1,in2] = meshgrid(0:.01:1, 0:.01:1); net1=in0*w7+in1.*w1+in2.*w3; net2=in0*w8+in1.*w2+in2.*w4; out1 = 1./(1+exp(-alpha*net1)); out2 = 1./(1+exp(-alpha*net2)); net=in0*w9+out1.*w5+out2.*w6; out= 1./(1+exp(-alpha*net)); subplot(3,1,1) mesh(in1,in2,out) aux = round(out); %Para graficar la linea de frontera subplot(3,1,2) mesh(in1,in2,aux) view(0,90);xlabel('in1');ylabel('in2'); subplot(3,1,3) plot(epoca, errorVec);
5. Presente los resultados obtenidos en dos grficos: el error en cada poca y la funcin de la red neuronal versus las entradas. Realice la corrida del programa por varias veces y
determine la efectividad de la convergencia: Nmero de veces que converge/Nmero de
corridas
Pgina 13
Yo Fernando Villalba afirmo que esta actividad es de mi autora y establezco que para la
elaboracin de la misma he seguido los lineamientos del Cdigo de tica de la Universidad de
las Fuerzas Armadas ESPE
Para determinar la efectividad de la convergencia se realiz la siguiente frmula
=
3
20= 0.15
Se puede afirmar por cada 6 veces aproximadamente que se ejecute el programa se
obtiene una convergencia
Gracias a esto se puede decir que aproximadamente cada diez corridas se tiene una
convergencia en el algoritmo.
Pgina 14
Yo Fernando Villalba afirmo que esta actividad es de mi autora y establezco que para la
elaboracin de la misma he seguido los lineamientos del Cdigo de tica de la Universidad de
las Fuerzas Armadas ESPE