You are on page 1of 5

1

UNIVERSIDAD POLITÉCNICA 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 número de neuronas, e incluso distinta función 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: Diseñar un Backpropagation utilizando para ello la herramienta informática Matlab, para observar como la neurona aprende. Definir los pesos, bias, umbral adecuado para que nuestro Backpropagation aprenda utilizando números aleatorios para que el Backpropagation aprenda Observar si la el Backpropagation aprende o no, observando el número de iteraciones en que se demoró en aprender o sino aprendió. Palabras clave: Backpropagation, bias, momento, función. Resumen: El siguiente trabajo muestra paso a paso como se utiliza la herramienta informática 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. INTRODUCCIÓN Propagación hacia atrás de errores o retropropagación (del inglés Backpropagation) es un algoritmo de aprendizaje supervisado que se usa para entrenar redes neuronales artificiales. El algoritmo emplea un ciclo propagación – adaptación de dos fases. Marco Teórico: Estructura de la Red

Donde es una entrada a la red y es la correspondiente salida deseada para el patrón q-ésimo. El algoritmo debe ajustar los parámetros de la red para minimizar el error cuadrático medio. Es importante recalcar que no existe una técnica para determinar el número de capas ocultas, ni el número de neuronas que debe contener cada una de ellas para un problema especifico, esta elección es determinada por la experiencia del diseñador, el cual debe cumplir con las limitaciones de tipo computacional. Cada patrón de entrenamiento se propaga a través de la red y sus parámetros 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 actualización de los pesos y ganancias que al final del entrenamiento producirán una respuesta satisfactoria a todos los patrones de entrenamiento, esto se logra minimizando el error cuadrático medio en cada iteración del proceso de aprendizaje.

q: Núm.de componentes del vector de entrada. m: Número de neuronas de la capa oculta. Minimización del Error Los algoritmos en Aprendizaje Automático pueden ser clasificados en dos categorías: 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, pérdida/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 aproximación del modelo obtenido por el algoritmo. Un método general para minimizar el error es el actualizar

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

una capa oculta (hidden layer) y una capa de salida (output layer). Calcular las derivadas parciales del error con respecto a los Los elementos que constituyen la red neuronal son los siguientes: es una función de valores reales. el .2 los parámetros de manera iterativa. De estos elementos. ya que los valores son el resultado de cálculos que dependen de las matrices de pesos. vector extendido pesos que unen la capa de entrada con la oculta. tiene la particularidad de que su derivada se puede expresar en términos de sí misma: par representará a un elemento del conjunto de entrenamiento y una relación de entrada-salida. del valor de entrada y de la función de transferencia . . es la capa de entrada. La red está constituida por una capa de entrada (input layer). es un Antes de continuar introduciremos un poco de notación. cuyos son los pesos de la conexión entre las . es la capa de salida. Definimos extendido del vector como el vector . Ajustar los pesos de cada neurona para reducir el error. a menos que se indique otra cosa. únicamente las matrices son consideradas como los parámetros de la red. considerado como el vector que aproxima al valor deseado es una matriz de tamaño valores unidades y . O = Xj*F(netj) II. el incremento de los parámetros se expresa como es una matriz de tamaño valores unidades y cuyos son los pesos de la conexión entre las . La función de transferencia que consideraremos en nuestro algoritmo es conocida como función sigmoidal. considerado como el vector extendido del ejemplo es de la capa oculta. En este caso. tal como se ilustra con la siguiente figura: esto nos servirá para simplificar los cálculos en el algoritmo de aprendizaje aquí descrito. Descripción del Algoritmo A grandes rasgos: Calcular la salida de la red a partir de uno de los conjuntos de valores de prueba . conocida como la función de transferencia. podemos usar como algoritmo de aprendizaje el método de gradiente descendiente. y está definida como Donde parámetro conocido como factor de aprendizaje. Repetir el proceso varias veces por cada par de entradassalidas de prueba. PROCEDIMIENTO Utilizando el algoritmo de aprendizaje procedemos a desarrollar el Backpropagation. El esta función además de ser diferenciable. Comparar con la salida correcta y calcular el error según la fórmula: Calcular las derivadas parciales del error con respecto a los pesos que unen la capa oculta con la de salida. . Red Neuronal con una Capa Oculta La función la usaremos para aproximar los valores de salida de una red neuronal artificial con una capa oculta. Si la función usada para aproximar los valores de salida es diferenciable respecto a los parámetros . El valor nuevo de los parámetros se calcula al sumar un incremento al valor actual: El algoritmo se detiene cuando converge o bien cuando el error alcanza un mínimo valor deseado.

3)))*momento).3. 3)+P(7)*M(i. P(7)=0.5)a1(i))*M(i. P(4) = P(4)+(((LR*(M(i.1)+P(4)*M(i. P(5) = P(5)+(((LR*(M(i. % declaracion del bias1 bias2=0. %calcula I1 para la capa de salida I2(i)=(a2(i)*P(10)+a2(i)*P(12))+bias2. variable=input('\nSI DESEA SALIR ESCRIBA ''SI''.6)a2(i))*M(i.4))+bias2. 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.3. P(6)=0. % declara la velocidad con la q va aprender var = 1.6)a2(i))*M(i.6)a2(i))*M(i.2)))*momento). % calcula el valor H1 para la capa oculta H2(i)=(P(2)*M(i. P(6) = P(6)+(((LR*(M(i. % 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.2)+P(5)*M(i. P(5)=0. end if H11< umbral a1(i)=0. 3)+P(8)*M(i. P(3) = P(3)+(((LR*(M(i.3 Figura 1.3. % decllara el unmbral de aprendzaje LR = 0. P(9)=0. P(10)=0.5)a1(i))*M(i.1)))*momento). % declaracion del contador bias1=0. P(3)=0. P(8) = P(8)+(((LR*(M(i. % declaracion cada uno de los pesos P(2)=0.6)a2(i))*M(i.3.3. clear clc.%c alcula I2 para la capa de salida .1)))*momento).1 Diseño de un Backpropagation A Continuación mostramos el programa desarrollado en Matlab.2)))*momento).3.3)))*momento).5.5)a1(i))*M(i. end I1(i)=(a1(i)*P(9)+a1(i)*P(11))+bias1.4)))*momento). % declaracion de el momento iteracion = 0. %actuliza los pesos ara la capa oculta P(2) = P(2)+(((LR*(M(i. umbral = 0.4))+bias1. end if H12 >= umbral a2(i)=1.3.3.5)a1(i))*M(i.05.3. % declaracion de una variable suma= 0.3. P(12)=0.3. end P(1) = P(1)+(((LR*(M(i. P(8)=0.4)))*momento). P(4)=0. P(11)=0.4. M1=[1 0 0 0 0 M2=[1 1 1 1 0 all.15.1)+P(3)*M(i. 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. P(7) = P(7)+(((LR*(M(i.2)+P(6)*M(i. if a==2 % opcion 2 M=M2. % declaracion de un acumulador momento=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]. end if H12< umbral a2(i)=0.3. % declaracion del bias2 P(1)=0.% 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 ].4.

end % II.   .IIPRUEBAS Y RESULTADOS Como se muestra en el programa realizado observamos que el Backpropagation aprendió III. end if suma ~= 0 % compra si el error es 1 no aprendio disp('La neurona no aprende') var = 1. Matlab nos permite el desarrollo de grandes cálculos en cuestión de segundos por esto es una herramienta muy poderosa para la creación de redes neuronales. Error1(i)=abs(M(i. % actualiza los pesos de la capa de salida P(10) = P(10)+(((LR*(M(i. end if I11<=umbral y1(i)=0.6)y2(i))*a2(i)))*momento).5)-y1(i)).6)-y2(i)). end la suma=0. bias1=bias1+2*LR*(M(i. %el acumulador lo pone en cero iteracion = iteracion inicializa el contador end fprintf ('EL BACKPROPAGATION APRENDIO EN : %d'. %actuliza el bias bias2=bias2+2*LR*(M(i.5)y1(i))*a1(i)))*momento). P(9) = P(9)+(((LR*(M(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. P(12) = P(12)+(((LR*(M(i.6)y2(i))*a1(i)))*momento). SI DESEA CONTINUAR ESCRIBA ''NO''\n') end + 1. CONCLUSIONES  El Backpropagation es un Red neuronal asistido que puede ser utilizada para cálculos complejos. El Backpropagation utiliza capas ocultas lo que le permite resolver operaciones complejas lo que una simple neurona lo haría tardaría mucho tiempo o más probable es que la neurona simple no aprendería. % A continuación mostraremos un gráfico de la ejecución del programa.4 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 I12<umbral y2(i)=0. iteracion) % desplega la salida final del programa disp(' ITERACIONES') disp('JUAN ROSERO') variable=input('\nSI DESEA SALIR ESCRIBA ''SI''.5)-y1(i)).6)-y2(i)). P(11) = P(11)+(((LR*(M(i. calñcula el error Error2(i)=abs(M(i. end if I12>=umbral y2(i)=1.5)y1(i))*a2(i)))*momento).

wikipedia.org/wiki/Propagaci%C 3%B3n_hacia_atr%C3%A1s Apuntes de Clase . IV.5 IV. Diseñar primero el modelo del Bacpropagation que se desee realizar. BIBLIOGRAFIA   http://es. RECOMENDACIONES   Utilizar comentarios de las líneas de código en Matlab.