actividad no10 1er parcial lema evelyn

5

Click here to load reader

Upload: evelyn-gabriela-lema-vinueza

Post on 12-Jul-2015

18 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Actividad no10 1er parcial lema evelyn

Página 1

UNIVERSIDAD DE FUERZAS ARMADAS “ESPE” DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA

ASIGNATURA: CONTROL INTELIGENTE

Actividad No10. Mejoras al aprendizaje del perceptrón multicapa mediante retro

propagación. Aprendizaje por descenso más pronunciado. Entrenamiento de una red

neuronal con patrones de XOR.

Fecha: Miércoles, 07 de Mayo del 2014.

Nombre alumno: Evelyn Gabriela Lema Vinueza.

NRC: 2055

Introducción. El método de descenso más 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 actualización preliminar de los pesos. El Error medio

cuadrático 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 continúa el entrenamiento. Si el MSE

todavía 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 búsqueda continua en esta forma y

termina dentro de un número predefinido de épocas de entrenamiento. Si la disminución en el error

con respecto al paso previo es más pequeña que un nivel especificado o si el valor del factor

de aprendizaje cae bajo un límite especificado el proceso se detiene.

( ) ( )

( ) ;

, son especificados por el usuario

1. De acuerdo al enunciado, dibuje un diagrama de flujo que resuelva el aprendizaje de una red neuronal

por descenso más pronunciado.

INICIO

Patrones de entrenamiento

Pesos aleatorios iniciales

Parámetros iniciales: ŋ, ŋmin, E

Tomar un patrón de entrenamiento

Calcular salida de ANN

Calcular Δw, aΔw, MSE

Último patrón de

entrenamiento

NO

error_total < error_ originalSI

Fin de época

n>nminNO

FIN

SI SI

ANO

A

Actualización

del Error

Actualizaciones preliminares w

Calcular MSE_N con pesos

actualizadoss

MSE_N<MSE

Recuperar pesos w

no

ŋ=1/2ŋ

Época

++si

ŋ=2ŋ

Page 2: Actividad no10 1er parcial lema evelyn

Página 2

2. Transcriba el código para considerar que “El Error medio cuadrático MSE se calcula para los pesos

actualizados que corresponden a la tasa de aprendizaje actual”. Indique como su código considera la idea

de que si el MSE no decrece los pesos deben retornar a sus valores iniciales.

3. Escriba las líneas de código 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

continúa el entrenamiento. Si el MSE todavía 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 err_T<err_p n =n*2; else w(5)=w(5)-dw(5); w(6)=w(6)-dw(6); w(9)=w(9)-dw(9); w(1)=w(1)-dw(1); w(2)=w(2)-dw(2); w(3)=w(3)-dw(3); w(4)=w(4)-dw(4);

Actualización de los Pesos

w(5)=w(5)+dw(5); w(6)=w(6)+dw(6); w(9)=w(9)+dw(9); w(1)=w(1)+dw(1); w(2)=w(2)+dw(2); w(3)=w(3)+dw(3); w(4)=w(4)+dw(4); w(7)=w(7)+dw(7); w(8)=w(8)+dw(8);

for i=1:4

net1=in1(i)*w(1)+in2(i)*w(3)+in0*w(7); out1=1/(1+exp(-alfa*net1)); net2=in2(i)*w(4)+in1(i)*w(2)+in0*w(8); out2=1/(1+exp(-alfa*net2)); net=w(5)*out1+w(6)*out2+in0*w(9); out=1/(1+exp(-alfa*net)); err_i=0.5*(targ(i)-out)^2; err_T=err_T+err_i; end

if err_T<err_p

n =n*2; else w(5)=w(5)-dw(5); w(6)= w(6)-dw(6); w(9)= w(9)-dw(9); w(1)= w(1)-dw(1); w(2)= w(2)-dw(2); w(3)= w(3)-dw(3); w(4)= w(4)-dw(4); w(7)= w(7)-dw(7); w(8)= w(8)-dw(8); %si factor aprendizaje no cumple if n > nmin n = n*0.5; end err_T = err_p; end

Cálculo del error para los pesos actualizados

Comparación de errores total y error

original

Recuperación de pesos si la condición de

errores no se cumple

Si el MSE no decrece (si err_T no es

menor que err_p) los pesos deben retornar

a sus valores iniciales, por lo que se resta

a cada peso actualizado su valor de

actualización.

Factor de aprendizaje doblado

Si la condición no se cumple los pesos el error no

decrece los pesos retornan a sus valores originales y por

ende se dobla el valor del factor de aprendizaje

Page 3: Actividad no10 1er parcial lema evelyn

Página 3

4. Escriba el código que resuelve la idea final del enunciado: “La búsqueda continua en esta forma y termina dentro de un número predefinido de épocas de

entrenamiento. Si la disminución en el error con respecto al paso previo es más pequeña que un nivel

especificado o si el valor del factor de aprendizaje cae bajo un límite especificado el proceso

se detiene. “ ( ) ( )

( ) ;

, son especificados por el usuario

Código del Programa:

in1 = [0 1 0 1]; in2 = [0 0 1 1]; [in3,in4] = meshgrid(0:.01:1,0:.01:1); targ = [0.1 0.9 0.9 0.1]; w = [rand(1) rand(1) rand(1) rand(1) rand(1) rand(1) rand(1) rand(1) rand(1)]; dw(1)=0;dw(2)=0;dw(3)=0;dw(4)=0;dw(5)=0;dw(6)=0;dw(7)=0;dw(8)=0;dw(9)=0; in0 = 1; n = 0.3; nmin =0.001; Emin =0.001; err_p = 1; err_T = 1; alfa = 4;

for j=1:500 n if err_T > Emin err_p=0; err_T=0; for i=1:4 net1=in1(i)*w(1)+in2(i)*w(3)+in0*w(7); out1=1/(1+exp(-alfa*net1)); net2=in2(i)*w(4)+in1(i)*w(2)+in0*w(8); out2=1/(1+exp(-alfa*net2));

net=w(5)*out1 + w(6)*out2 + in0*w(9); out=1/(1+exp(-alfa*net));

dw(5)=dw(5)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*out1; dw(6)=dw(6)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*out2; dw(9)=dw(9)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1);

dw(1)=dw(1)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*w(5)*(alfa*out1*(1-out1)+0.1)*in1(i); dw(2)=dw(2)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*w(6)*(alfa*out2*(1-out2)+0.1)*in1(i); dw(3)=dw(3)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*w(5)*(alfa*out1*(1-out1)+0.1)*in2(i); dw(4)=dw(4)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*w(6)*(alfa*out2*(1-out2)+0.1)*in2(i);

dw(7)=dw(7)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*w(5)*(alfa*out1*(1-out1)+0.1);

dw(8)=dw(8)+n*(targ(i)-out)*(alfa*out*(1-out)+0.1)*w(6)*(alfa*out2*(1-out2)+0.1);

err_i=0.5*(targ(i)-out)^2;

err_p=err_p+err_i;

end

w(5)=w(5)+dw(5);

w(6)=w(6)+dw(6);

w(9)=w(9)+dw(9);

w(1)=w(1)+dw(1);

w(2)=w(2)+dw(2);

w(3)=w(3)+dw(3);

w(4)=w(4)+dw(4);

w(7)=w(7)+dw(7);

w(8)=w(8)+dw(8);

w(7)=w(7)-dw(7); w(8)=w(8)-dw(8);

if n>nmin n=n*0.5; end err_T = err_p; %hasta que el valor sea doblado end

Si factor aprendizaje no cumple factor se reduce a la mitad

Page 4: Actividad no10 1er parcial lema evelyn

Página 4

5. Presente los resultados obtenidos en dos gráficos: el error en cada época y la función de la

red neuronal versus las entradas. Realice la corrida del programa por varias veces y

determine la efectividad de la convergencia: Número de veces que converge/Número de

corridas

Gráfica de la Curva deAprendizaje

for i=1:4 net1=in1(i)*w(1)+in2(i)*w(3)+in0*w(7); out1=1/(1+exp(-alfa*net1)); net2=in2(i)*w(4)+in1(i)*w(2)+in0*w(8); out2=1/(1+exp(-alfa*net2)); net=w(5)*out1+w(6)*out2+in0*w(9); out=1/(1+exp(-alfa*net));

err_i=0.5*(targ(i)-out)^2; err_T=err_T+err_i; end

if err_T<err_p n =n*2; else w(5)=w(5)-dw(5); w(6)= w(6)-dw(6); w(9)= w(9)-dw(9); w(1)= w(1)-dw(1); w(2)= w(2)-dw(2); w(3)= w(3)-dw(3); w(4)= w(4)-dw(4); w(7)= w(7)-dw(7); w(8)= w(8)-dw(8); if n > nmin % Si el valor del factor de aprendizaje cae bajo un límite especificado el proceso se detiene n = n*0.5; end err_T = err_p; end vector_epocas(j)=j; vector_err(j)=err_T;

dw(1)=0;dw(2)=0;dw(3)=0;dw(4)=0;dw(5)=0;dw(6)=0;dw(7)=0;dw(8)=0;dw(9)=0;

net1=in3*w(1)+in4*w(3)+in0*w(7); out1=1./(1+exp(-alfa*net1)); net2=in4*w(4)+in3*w(2)+in0*w(8); out2=1./(1+exp(-alfa*net2));

net=w(5)*out1+w(6)*out2+in0*w(9); CV_out=1./(1+exp(-alfa*net));

Page 5: Actividad no10 1er parcial lema evelyn

Página 5

Yo Evelyn Gabriela Lema Vinueza afirmo que esta actividad es de mi autoría y establezco que

para la elaboración de la misma he seguido los lineamientos del Código de Ética de la

Universidad de las Fuerzas Armadas ESPE

( )

Para determinar la efectividad de la convergencia se empleó la siguiente fórmula

Concluyendo que aproximadamente cada diez corridas se tiene una convergencia en el algoritmo.

Gráfica de la Función de la Neurona

Gráfica de la Línea de la Frontera