Actividad no9. 1er parcial lema evelyn
Click here to load reader
-
Upload
evelyn-gabriela-lema-vinueza -
Category
Education
-
view
74 -
download
0
Transcript of Actividad no9. 1er parcial lema evelyn
Página 1
UNIVERSIDAD DE FUERZAS ARMADAS “ESPE” DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA
ASIGNATURA: CONTROL INTELIGENTE
Actividad No9. Lectura 6
Fecha: Lunes, 28 de Abril del 2014.
Nombre alumno: Evelyn Gabriela Lema Vinueza.
NRC: 2055.
1. Describa en detalle el aprendizaje por descenso de gradiente.
2. Describa el procedimiento para entrenar una red neuronal de una capa.
Para efectuar el aprendizaje por descenso de gradiente se efectúan los siguientes pasos:
1. El propósito del aprendizaje y entrenamiento de una red neuronal es minimizar el
error a la salida en un determinado conjunto de datos de entrenamiento mediante el
ajuste de los pesos de la red.
2. Se define una función de error que mide que tan lejos están la red actualmente de lo
deseado
3. Las derivadas parciales de la función error nos dicen en qué dirección nos debemos
mover en el espacio de pesos para reducir el error.
4. La tasa de aprendizaje especifica los tamaños de pasos que damos en el espacio de
peso para cada interacción en la ecuación de actualización de pesos.
5. Nos mantenemos dando pasos a través del espacio de peso hasta que los errores sean
lo suficientemente pequeños.
6. La actualización de los pesos se vuelve eficiente si escogemos funciones de
activación de la neurona que tengan derivadas de forma simple.
Para efectuar el procedimiento para entrenar una red neuronal se debe efectuar los
siguientes pasos:
1. Tomar el conjunto de patrones de entrenamiento que desee que la red aprenda.
2. Configurar su red neuronal con n unidades de entradas conectadas a n unidades de
salidas mediante conexiones ponderadas.
3. Generar pesos aleatorios en un rango
4. Seleccionar una función de error apropiada y una tasa de aprendizaje n
5. Aplicar una actualización de pesos a cada peso para cada patrón de entrenamiento.
Un conjunto de actualizaciones de todos los pesos para todos los patrones de
entrenamiento se llama una época de entrenamiento.
6. Repetir el paso 5 hasta que la función de error de la red sea suficientemente
pequeña.
Página 2
3. Describa el procedimiento para entrenar un perceptrón multicapa
4. Realice un cuadro sinóptico de las consideraciones prácticas para el aprendizaje por
descenso de gradiente.
Para efectuar el procedimiento para entrenar un perceptrón multicapa se debe efectuar los
siguientes pasos:
1. Tomar el conjunto de patrones de entrenamiento que desee que la red aprenda.
2. Configurar su red neuronal con n unidades de entradas conectadas a n unidades
de salidas mediante conexiones ponderadas.
3. Generar pesos aleatorios en un rango
4. Seleccionar una función de error apropiada y una tasa de aprendizaje n
5. Aplicar una actualización de pesos a cada peso para cada patrón de entrenamiento.
Un conjunto de actualizaciones de todos los pesos para todos los patrones de
entrenamiento se llama una época de entrenamiento. Aquí se puede considerar
técnicas como que la implica una retro propagación del error.
6. Repetir el paso 5 hasta que la función de error de la red sea suficientemente
pequeña.
Co
nsi
der
acio
nes
Prá
ctic
as p
ara
el A
pre
nd
izaj
e
¿Necesitamos pre-procesar los datos de entrenamiento? Si es así, ¿cómo?
¿Cómo elegimos los pesos iniciales de los cuales empezaremos el
entrenamiento?
¿Cómo elegimos una tasa de aprendizaje apropiado ?
¿Hay que cambiar los pesos después de cada patrón de entrenamiento, o
después de todo el conjunto?
¿Son algunas de las funciones de activación / transferencia mejores que
otras?
¿Cómo podemos evitar puntos planos en la función de error?
¿Cómo podemos evitar los mínimos locales en la función de error?
¿Cómo sabemos cuándo debemos parar el entrenamiento?
Página 3
Co
nsi
der
aci
on
es p
ráct
icas
para
el
ap
ren
diz
aje
por
des
cen
so d
e gra
die
nte
. Pre- procesamiento de los
datos de entrenamiento
Si se utiliza el entrenamiento on- line en lugar de entrenamiento por paquetes, por lo general debemos asegurarnos de que cambiar el orden de los datos de entrenamiento de cada época.
Se debe Asegurar que los datos de entrenamiento sean representativos y que no contengan demasiados ejemplos de un tipo a expensas de otro.
Elección de los pesos iniciales
Este algoritmo trata a los pesos de la misma manera, por lo que si se tiene los mismos valores de pesos la red acabará haciendo lo mismo y esta jamás aprenderá. Se debe comenzar todos los pesos con pequeños valores aleatorios.
Los pesos se los toma de una distribución plana en torno a cero [-smwt,+ smwt ] , o de una distribución Gaussiana alrededor de cero con smwt desviación estándar. La elección de un buen valor de smwt deberá ser tan grande como sea posible sin saturar cualquiera de los sigmoids
Elección de la tasa de aprendizaje
Si h es demasiado pequeño, se tardará demasiado tiempo para llegar a cualquier lugar cerca del mínimo de la función de error.y si h es demasiado grande, los cambios de peso se sobre-disparan el mínimo error y los pesos oscilarán, o incluso divergirán.
Batch Training vs. On-line Training
En el aprendizaje en online las actualizaciones de peso individuales pueden ser bastante irregulares.Una patrón de aprendizaje mucho más bajo h será necesario que para el aprendizaje por paquetes. Debido a que tiene n patrones de actualizaciones por época. Este tipo de aprendizaje suele ser mucho más rápido.
La elección de la función de transferencia
Una alternativa conveniente a la función logística es la tangente hiperbólica. Cuando las salidas requeridas son no binarias, es decir los valores reales continuos con la función de transferencia sigmoide ya no tiene sentido. En este caso, una simple función de transferencia lineal f (x) = x es apropiada.
Puntos planos en la función de error
Los cambios de los pesos por descenso de gradiente dependen de la pendiente de la función de error. En consecuencia, si la función de error tiene puntos planos, el algoritmo de aprendizaje puede tardar mucho tiempo para pasar a través de ellos. Mantener a los pesos iniciales de la red lo suficientemente pequeños es necesario para que la función no se sature antes del entrenamiento. El Off- setting de la target también tiene el efecto de detener que los pesos de la red crezcan demasiado.
Mínimo local Si se parte en las proximidades de los mínimos locales, se puede terminar en el mínimo local en lugar del mínimo global. Empezando con un rango de diferentes conjuntos de pesos iniciales, nosotros aumentamos las posibilidades de encontrar el mínimo global.
Paro del entrenamiento Si el algoritmo de entrenamiento puede en realidad nunca alcanzar el mínimo, se tiene que detener el proceso de formación cuando es " lo suficientemente cerca". Lo que constituye " lo suficientemente cerca " depende del problema.
Página 4
5. Escriba el código para implementar las consideraciones prácticas.
a) Puntos planos en la función de error
Código del Programa: clear all
in0=1;
in1=[0 1 0 1];
in2=[0 0 1 1];
targ=[0.1 0.9 0.9 0.1];
w1=rand();
w2=rand();
w3=rand();
w4=rand();
w5=rand();
w6=rand();
w7=rand();
w8=rand();
w9=rand();
n=0.1;
alpha=4;
dw1=0;dw2=0;dw3=0;dw4=0;dw5=0;dw6=0;dw7=0;dw8=0;dw9=0;
for j=1:1000
err_T=0;
for i=1:4
net1=in1(i)*w1+in2(i)*w3+in0*w7;
net2= in2(i)*w4+in1(i)*w2+in0*w8;
out1=1/(1+exp(-alpha*net1));
out2=1/(1+exp(-alpha*net2));
net= w5*out1+w6*out2+ in0*w9;
out=1/(1+ exp(-alpha*net) );
D_w1= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*w5*[alpha*out1*(1-out1)+0.1]*in1(i);
D_w2= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*w6*[alpha*out2*(1-out2)+0.1]*in1(i);
D_w3= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*w5*[alpha*out1*(1-out1)+0.1]*in2(i);
D_w4= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*w6*[alpha*out2*(1-out2)+0.1]*in2(i);
D_w5= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*out1;
D_w6= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*out2;
D_w7= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*w5*[alpha*out1*(1-out1)+0.1]*1;
D_w8= n*(targ(i)-out)*[alpha*out*(1-out)+0.1]*w6*[alpha*out2*(1-out2)+0.1]*1;
D_w9= n*(targ(i)-out)*[alpha*out*(1-out)+0.1];
dw1=dw1+D_w1;
dw2=dw2+D_w2;
dw3=dw3+D_w3;
dw4=dw4+D_w4;
dw5=dw5+D_w5;
dw6=dw6+D_w6;
dw7=dw7+D_w7;
dw8=dw8+D_w8;
dw9=dw9+D_w9;
err_i=(targ(i)-out)^2;
err_T=err_T+err_i;
end
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;
dw1=0;dw2=0;dw3=0;dw4=0;dw5=0;dw6=0;dw7=0;dw8=0;dw9=0;
vector_epocas(j)=j;
vector_err(j)=err_T;
plot(vector_epocas,vector_err);
ylabel('ERROR CUADRATICO')
xlabel('EPOCA')
end
Página 5
w11=w1;
w12=w2;
w21=w3;
w22=w4;
lw1=w5;
lw2=w6;
b1=w7;
b2=w8;
b3=w9;
[in11,in22]= meshgrid (0:.01:1,0:.01:1);
alpha=4;
net1a= in11*w11+in22*w21+in0*b1;
net2b= in11*w12+in22*w22+in0*b2;
out1a=1./(1+exp(-alpha*net1a));
out2b=1./(1+exp(-alpha*net2b));
net3c= out1a*lw1+out2b*lw2+in0*b3;
outxr= 1./(1+exp(-alpha*net3c))
figure(9);
out21xr= round (outxr);
subplot(2,1,1);
mesh(in11,in22,outxr);
xlabel('in2');ylabel('in1');zlabel('out')
subplot(2,1,2);
mesh(in11,in22,out21xr);
xlabel('in2');ylabel('in1');zlabel('out')
Curva de aprendizaje
Función de Aprendizaje de la Neurona
Gráfica de las Líneas de Frontera
Página 6
b) Uso de la función de activación tanh.
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
Código del Programa: close all
clear all
in0=1;
in1=[0 1 0 1];
in2=[0 0 1 1];
targ=[-1 1 1 -1];
w1=rand();
w2=rand();
w3=rand();
w4=rand();
w5=rand();
w6=rand();
w7=rand();
w8=rand();
w9=rand();
n=0.1;
alpha=4;
dw1=0;dw2=0;dw3=0;dw4=0;dw5=0;dw6=0;dw7=0;dw8=0;dw9=0;
for j=1:2000
err_T=0;
for i=1:4
net1=in1(i)*w1+in2(i)*w3+in0*w7;
net2= in2(i)*w4+in1(i)*w2+in0*w8;
out1=(2/pi)*tanh(alpha*net1);
out2=(2/pi)*tanh(alpha*net2);
net= w5*out1+w6*out2+ in0*w9;
out=(2/pi)*tanh(alpha*net);
D_w1= n*(targ(i)-out)*[1-out*out+0.1]*w5*[1-out1*out1+0.1]*in1(i);
D_w2= n*(targ(i)-out)*[1-out*out+0.1]*w6*[1-out2*out2+0.1]*in1(i);
D_w3= n*(targ(i)-out)*[1-out*out+0.1]*w5*[1-out1*out1+0.1]*in2(i);
D_w4= n*(targ(i)-out)*[1-out*out+0.1]*w6*[1-out2*out2+0.1]*in2(i);
D_w5= n*(targ(i)-out)*[1-out*out+0.1]*out1;
D_w6= n*(targ(i)-out)*[1-out*out+0.1]*out2;
D_w7= n*(targ(i)-out)*[1-out*out+0.1]*w5*[1-out1*out1+0.1]*1;
D_w8= n*(targ(i)-out)*[1-out*out+0.1]*w6*[1-out2*out2+0.1]*1;
D_w9= n*(targ(i)-out)*[1-out*out+0.1];
dw1=dw1+D_w1;
dw2=dw2+D_w2;
dw3=dw3+D_w3;
dw4=dw4+D_w4;
dw5=dw5+D_w5;
dw6=dw6+D_w6;
dw7=dw7+D_w7;
dw8=dw8+D_w8;
dw9=dw9+D_w9;
err_i=(targ(i)-out)^2;
err_T=err_T+err_i;
end
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;
dw1=0;dw2=0;dw3=0;dw4=0;dw5=0;dw6=0;dw7=0;dw8=0;dw9=0;
vector_epocas(j)=j;
vector_err(j)=err_T;
plot(vector_epocas,vector_err);
ylabel('ERROR CUADRATICO')
xlabel('EPOCA')
end
w11=w1;
w12=w2;
w21=w3;
w22=w4;
Página 7
Página 7
w21=w3;
w22=w4;
lw1=w5;
lw2=w6;
b1=w7;
b2=w8;
b3=w9;
[in11,in22]= meshgrid (0:.005:1,0:.005:1);
net1a= in11*w11+in22*w21+in0*b1;
net2b= in11*w12+in22*w22+in0*b2;
out1a=(2/pi)*tanh(alpha*net1a)
out2b=(2/pi)*tanh(alpha*net2b)
net3c= out1a*lw1+out2b*lw2+in0*b3;
outxr=(2/pi)*tanh(alpha*net3c)
figure(9);
out21xr= round (outxr);
subplot(2,1,1);
mesh(in11,in22,outxr);
xlabel('in2')
ylabel('in1')
zlabel('out')
subplot(2,1,2);
mesh(in11,in22,out21xr);
xlabel('in2')
ylabel('in1')
zlabel('out')
Función de Aprendizaje de la Neurona
Gráfica de la Líenas de Frontera
Página 8
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