actividades8-10fernandovillalba

14
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: 14 de enero 2015 Nombre alumno: Fernando Villalba 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. ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ 1 ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ 2 ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ ∗∝∗ ( − ) ∗ ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ ∗∝∗ ( − ) ∗ ∆ = (−) ∗ (−) ∗ ( − ) ∗ ∗∝∗ ( − ) ∗ ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ ∗∝∗ ( − ) ∗ ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ ∗∝∗ ( − ) ∗ ∆ = (−) ∗ (−) ∗ ( − ) ∗∝∗ ( − ) ∗ ∗∝∗ ( − ) ∗

Upload: fernando-villalba

Post on 18-Nov-2015

17 views

Category:

Documents


0 download

DESCRIPTION

Articulo sobre redes redes neuronales

TRANSCRIPT

  • 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