Está en la página 1de 5

1

UNIVERSIDAD POLITCNICA SALESIANA Rosero Juan atlenando@hotmail.com Backpropagation

es la entrada a la segunda y la salida de la segunda red es la entrada a la tercera. Cada capa puede tener diferente nmero de neuronas, e incluso distinta funcin de transferencia. Regla de Aprendizaje La red Backpropagation trabaja bajo aprendizaje supervisado y por tanto necesita un set de entrenamiento que le describa cada salida y su valor de salida esperado de la siguiente forma:

OBJETIVO GENERAL: Observar el aprendizaje del Backpropagation como utilizando las formulas determinadas para su aprendizaje para reforzar los conocimientos adquiridos en clase OBJETIVO ESPECIFICO: Disear un Backpropagation utilizando para ello la herramienta informtica Matlab, para observar como la neurona aprende. Definir los pesos, bias, umbral adecuado para que nuestro Backpropagation aprenda utilizando nmeros aleatorios para que el Backpropagation aprenda Observar si la el Backpropagation aprende o no, observando el nmero de iteraciones en que se demor en aprender o sino aprendi. Palabras clave: Backpropagation, bias, momento, funcin. Resumen: El siguiente trabajo muestra paso a paso como se utiliza la herramienta informtica llamada Matlab parea que nuestro Backpropagation aprenda. Abstract: The following paper shows step by step how to use the Matlab software tool called Backpropagation learn I. INTRODUCCIN Propagacin hacia atrs de errores o retropropagacin (del ingls Backpropagation) es un algoritmo de aprendizaje supervisado que se usa para entrenar redes neuronales artificiales. El algoritmo emplea un ciclo propagacin adaptacin de dos fases. Marco Terico: Estructura de la Red

Donde es una entrada a la red y es la correspondiente salida deseada para el patrn q-simo. El algoritmo debe ajustar los parmetros de la red para minimizar el error cuadrtico medio. Es importante recalcar que no existe una tcnica para determinar el nmero de capas ocultas, ni el nmero de neuronas que debe contener cada una de ellas para un problema especifico, esta eleccin es determinada por la experiencia del diseador, el cual debe cumplir con las limitaciones de tipo computacional. Cada patrn de entrenamiento se propaga a travs de la red y sus parmetros para producir una respuesta en la capa de salida, la cual se compara con los patrones objetivo o salidas deseadas para calcular el error en el aprendizaje, este error marca el camino mas adecuado para la actualizacin de los pesos y ganancias que al final del entrenamiento producirn una respuesta satisfactoria a todos los patrones de entrenamiento, esto se logra minimizando el error cuadrtico medio en cada iteracin del proceso de aprendizaje.

q: Nm.de componentes del vector de entrada. m: Nmero de neuronas de la capa oculta. Minimizacin del Error Los algoritmos en Aprendizaje Automtico pueden ser clasificados en dos categoras: supervisados y no supervisados. Los algoritmos en aprendizaje supervisado son usados para construir "modelos" que generalmente predicen ciertos valores deseados. Para ello, los algoritmos supervisados requieren que se especifiquen los valores de salida (output) u objetivo (target) que se asocian a ciertos valores de entrada (input). Ejemplos de objetivos pueden ser valores que indican xito/fallo, venta/no-venta, prdida/ganancia, o bien ciertos atributos multi-clase como cierta gama de colores o las letras del alfabeto. El conocer los valores de salida deseados permite determinar la calidad de la aproximacin del modelo obtenido por el algoritmo. Un mtodo general para minimizar el error es el actualizar

Puede notarse que esta red de tres capas equivale a tener tres redes tipo Perceptrn en cascada; la salida de la primera red,

los parmetros de manera iterativa. El valor nuevo de los parmetros se calcula al sumar un incremento al valor actual: El algoritmo se detiene cuando converge o bien cuando el error alcanza un mnimo valor deseado. Si la funcin usada para aproximar los valores de salida es diferenciable respecto a los parmetros , podemos usar como algoritmo de aprendizaje el mtodo de gradiente descendiente. En este caso, el incremento de los parmetros se expresa como

es una matriz de tamao valores unidades y

cuyos

son los pesos de la conexin entre las .

De estos elementos, nicamente las matrices son consideradas como los parmetros de la red, ya que los valores son el resultado de clculos que dependen de las matrices de pesos, del valor de entrada y de la funcin de transferencia . La funcin de transferencia que consideraremos en nuestro algoritmo es conocida como funcin sigmoidal, y est definida como

Donde parmetro conocido como factor de aprendizaje.

es un

Antes de continuar introduciremos un poco de notacin. Definimos extendido del vector como el vector . El esta funcin adems de ser diferenciable, tiene la particularidad de que su derivada se puede expresar en trminos de s misma:

par representar a un elemento del conjunto de entrenamiento y una relacin de entrada-salida, a menos que se indique otra cosa. Red Neuronal con una Capa Oculta La funcin la usaremos para aproximar los valores de salida de una red neuronal artificial con una capa oculta. La red est constituida por una capa de entrada (input layer), una capa oculta (hidden layer) y una capa de salida (output layer), tal como se ilustra con la siguiente figura:

esto nos servir para simplificar los clculos en el algoritmo de aprendizaje aqu descrito. Descripcin del Algoritmo A grandes rasgos: Calcular la salida de la red a partir de uno de los conjuntos de valores de prueba . Comparar con la salida correcta y calcular el error segn la frmula:

Calcular las derivadas parciales del error con respecto a los pesos que unen la capa oculta con la de salida. Calcular las derivadas parciales del error con respecto a los Los elementos que constituyen la red neuronal son los siguientes: es una funcin de valores reales, conocida como la funcin de transferencia. es la capa de entrada, considerado como el vector extendido del ejemplo es de la capa oculta, el . . vector extendido pesos que unen la capa de entrada con la oculta. Ajustar los pesos de cada neurona para reducir el error. Repetir el proceso varias veces por cada par de entradassalidas de prueba. O = Xj*F(netj) II. PROCEDIMIENTO Utilizando el algoritmo de aprendizaje procedemos a desarrollar el Backpropagation.

es la capa de salida, considerado como el vector que aproxima al valor deseado es una matriz de tamao valores unidades y . cuyos

son los pesos de la conexin entre las .

Figura 1.1 Diseo de un Backpropagation A Continuacin mostramos el programa desarrollado en Matlab. clear clc; M1=[1 0 0 0 0 M2=[1 1 1 1 0 all;% Limpia la pantalla % borra la pantalla 1 1 1 1 1 % Declara la matriz 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 ]; 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 % Declara la matriz 2 0 1 0 0];

if a==2 % opcion 2 M=M2; end

while var==1 % utiliza un while para que se ejecute el algoritmo de aprendizaje hasta que el bacpropagation aprenda for i=1:5 % numer de filas H1(i)=(P(1)*M(i,1)+P(3)*M(i,2)+P(5)*M(i, 3)+P(7)*M(i,4))+bias1; % calcula el valor H1 para la capa oculta H2(i)=(P(2)*M(i,1)+P(4)*M(i,2)+P(6)*M(i, 3)+P(8)*M(i,4))+bias2; % calcula el valor H2 para la capa oculta H11=1/(1+exp(-H1(i))) %Calcula la funcion del bacpropagation para la capa oculta H12=1/(1+exp(-H2(i))) %Calcula la funcion del bacpropagation para la capa oculta if H11 >= umbral % crea las nuevas entradas para la capa de salida a1(i)=1; end if H11< umbral a1(i)=0; end if H12 >= umbral a2(i)=1; end if H12< umbral a2(i)=0; end P(1) = P(1)+(((LR*(M(i,5)a1(i))*M(i,1)))*momento); %actuliza los pesos ara la capa oculta P(2) = P(2)+(((LR*(M(i,6)a2(i))*M(i,2)))*momento); P(3) = P(3)+(((LR*(M(i,5)a1(i))*M(i,3)))*momento); P(4) = P(4)+(((LR*(M(i,6)a2(i))*M(i,4)))*momento); P(5) = P(5)+(((LR*(M(i,5)a1(i))*M(i,1)))*momento); P(6) = P(6)+(((LR*(M(i,6)a2(i))*M(i,2)))*momento); P(7) = P(7)+(((LR*(M(i,5)a1(i))*M(i,3)))*momento); P(8) = P(8)+(((LR*(M(i,6)a2(i))*M(i,4)))*momento);

umbral = 0.5; % decllara el unmbral de aprendzaje LR = 0.05; % declara la velocidad con la q va aprender var = 1; % declaracion de una variable suma= 0; % declaracion de un acumulador momento=0.15; % declaracion de el momento iteracion = 0; % declaracion del contador bias1=0.4; % declaracion del bias1 bias2=0.4; % declaracion del bias2 P(1)=0.3; % declaracion cada uno de los pesos P(2)=0.3; P(3)=0.3; P(4)=0.3; P(5)=0.3; P(6)=0.3; P(7)=0.3; P(8)=0.3; P(9)=0.3; P(10)=0.3; P(11)=0.3; P(12)=0.3; variable=input('\nSI DESEA SALIR ESCRIBA ''SI'', SI DESEA CONTINUAR ESCRIBA ''NO''\n')% nos da elegir una opcion para ingresar o salir del programa while variable=='NO' Utiliza % Crea un While para entrar o no al programa a=input('\nEscriba 1 para la 1ra opci?n \nEscriba 2 para la 2da opci?n \nLuego ENTER\n')% Elige una opcion pa elegir la matriz con la que deseas trbajar if a==1 % opcion 1 M=M1; end

I1(i)=(a1(i)*P(9)+a1(i)*P(11))+bias1; %calcula I1 para la capa de salida I2(i)=(a2(i)*P(10)+a2(i)*P(12))+bias2;%c alcula I2 para la capa de salida

I11=1/(1+exp(-I1(i))) %Calcula la funcion del bacpropagation para la capa de salida I12=1/(1+exp(-I2(i))) %Calcula la funcion del bacpropagation para la capa de salida if I11>=umbral %Crea comparcion para ver si ya aprendido y1(i)=1; end if I11<=umbral y1(i)=0; end if I12>=umbral y2(i)=1; end if I12<umbral y2(i)=0; end la

suma=0; %el acumulador lo pone en cero iteracion = iteracion inicializa el contador end fprintf ('EL BACKPROPAGATION APRENDIO EN : %d', iteracion) % desplega la salida final del programa disp(' ITERACIONES') disp('JUAN ROSERO') variable=input('\nSI DESEA SALIR ESCRIBA ''SI'', SI DESEA CONTINUAR ESCRIBA ''NO''\n') end + 1; %

A continuacin mostraremos un grfico de la ejecucin del programa.

P(9) = P(9)+(((LR*(M(i,5)y1(i))*a1(i)))*momento); % actualiza los pesos de la capa de salida P(10) = P(10)+(((LR*(M(i,6)y2(i))*a1(i)))*momento); P(11) = P(11)+(((LR*(M(i,5)y1(i))*a2(i)))*momento); P(12) = P(12)+(((LR*(M(i,6)y2(i))*a2(i)))*momento);

bias1=bias1+2*LR*(M(i,5)-y1(i)); %actuliza el bias bias2=bias2+2*LR*(M(i,6)-y2(i)); Error1(i)=abs(M(i,5)-y1(i)); calcula el error Error2(i)=abs(M(i,6)-y2(i)); end y1 % desplega el error y2 for j=1:5 suma = suma + Error1(j)+ Error2(j) % hace la sumatoria del error end if suma == 0 % compra si el error es cero aprendio disp('La neurona ya aprendio') var = 2; end if suma ~= 0 % compra si el error es 1 no aprendio disp('La neurona no aprende') var = 1; end % II.IIPRUEBAS Y RESULTADOS Como se muestra en el programa realizado observamos que el Backpropagation aprendi III. CONCLUSIONES El Backpropagation es un Red neuronal asistido que puede ser utilizada para clculos complejos. Matlab nos permite el desarrollo de grandes clculos en cuestin de segundos por esto es una herramienta muy poderosa para la creacin de redes neuronales. El Backpropagation utiliza capas ocultas lo que le permite resolver operaciones complejas lo que una simple neurona lo hara tardara mucho tiempo o ms probable es que la neurona simple no aprendera.

IV. RECOMENDACIONES Utilizar comentarios de las lneas de cdigo en Matlab. Disear primero el modelo del Bacpropagation que se desee realizar.

IV. BIBLIOGRAFIA http://es.wikipedia.org/wiki/Propagaci%C 3%B3n_hacia_atr%C3%A1s Apuntes de Clase