Capítulo 1 Red Backpropagation ..........................................................................1 Algoritmo...................................................................................................................................... 1.1 Estructura……………………………………………………………………………………………………………………………1.2 Gradiente descendiente………………………………………………………………………………………………………1.3 Derivada de la función sigmoidal………………………………………………………………………………………..1.4 Demostración de reglas de actualización…………………………………………………………………………….1.5 Razón de aprendizaje …………………………………………………………………………………………………………1.6 Momento………………………………………………………………………………………………………………………….1.7 Sesgo……………………………………………………………………………………………………………………………….1.8 Control de convergencia …………………………………………………………………………………………………..1.9 Condiciones de finalización .................................................................................................. 1.2.1 Capítulo 2 Desarrollo del Programa ................................................................................................. 2 Problema que resuelve ................................................................................................................ 2.1 Diseño y desarrollo……………………………………………………………………………………………………………2.2 Funcionamiento ………………………………………………………………………………………………………………..2.3 Evidencias (imagnes y código)…………………………………………………………………………………………….2.4 COMENTARIO …………………………………………………………………………………………………………………….2.5 REFERENCIAS ........................................................................................................................... 2.6 Algoritmo 1.1 ALGORITMO Paso 1. Inicializar los pesos de la red con valores pequeños aleatorios. Paso 2. Presentar un patrón de entrada y especificar la salida deseada que debe generar la red. Paso 3. Calcular la salida actual de la red. Para ello se presentan las entradas a la red y se calcula la salida de cada capa hasta llegar a la capa de salida, ésta será la salida de la red. Los pasos son los siguientes: Se calculan las entradas netas para las neuronas ocultas procedentes de las neuronas de entrada. Para una neurona j oculta: Paso 4. Calcular los términos de error para todas las neuronas. Paso 5. Actualización de los pesos: para ello utilizamos un algoritmo recursivo, comenzando por las neuronas de salida y trabajando hacia atrás hasta llegar a la capa de entrada, ajustando los pesos de la siguiente forma: Paso 6. El proceso se repite hasta que el término de error resulta aceptablemente pequeño para cada uno de los patrones aprendidos. Estructura 1.2 >Paso 1. Inicializar los pesos de la red con valores pequeños aleatorios. >Paso 2. Presentar un patrón de entrada y especificar la salida deseada que debe generar la red. >Paso 3. Calcular la salida actual de la red. Para ello se presentan las entradas a la red y se calcula la salida de cada capa hasta llegar a la capa de salida, ésta será la salida de la red. Los pasos son los siguientes: Se calculan las entradas netas para las neuronas ocultas procedentes de las neuronas de entrada. Para una neurona j oculta: En donde el índice h se refiere a magnitudes de la capa oculta; el subíndice p, al p-ésimo vector de entrenamiento, y j a la j-ésima neurona oculta. El término puede ser opcional, pues actúa como una entrada más. θ Se calculan las salidas de las neuronas ocultas: Se realizan los mismos cálculos para obtener las salidas de las neuronas de salida: Paso 4 . Calcular los términos de error para todas las neuronas. Si la neurona k es una neurona de la capa de salida, el valor de la delta es: La función f debe ser derivable. En general disponemos de dos formas de función de salida: La función lineal: La función sigmoidal: La selección de la función depende de la forma que se decida representar la salida: si se desea que las neuronas de salida sean binarias, se utiliza la función sigmoidal, en otros casos, la lineal. Para una función lineal, tenemos mientras que la derivada de una función sigmoidal es: por lo que los términos de error para las neuronas de salida quedan: Para la salida lineal. Para la salida sigmoidal. Si la neurona j no es de salida, entonces la derivada parcial del error no puede ser evaluada directamente, por tanto se obtiene el desarrollo a partir de valores que son conocidos y otros que pueden ser evaluados. La expresión obtenida en este caso es: donde observamos que el error en las capas ocultas depende de todos los términos de error de la capa de salida. De aquí surge el término propagación hacia atrás. Paso 5. Actualización de los pesos: para ello utilizamos un algoritmo recursivo, comenzando por las neuronas de salida y trabajando hacia atrás hasta llegar a la capa de entrada, ajustando los pesos de la siguiente forma: Para los pesos de las neuronas de la capa de salida: Para los pesos de las neuronas de la capa oculta: En ambos casos, para acelerar el proceso de aprendizaje se puede añadir un término momento. Paso 6. El proceso se repite hasta que el término de error resulta aceptablemente pequeño para cada uno de los patrones aprendidos. Estructura y Aprendizaje de la Red Backpropagation 1.3 En una red Backpropagation existe una capa de entrada con n neuronas y una capa de salida con m neuronas y al menos una capa oculta de neuronas internas. Cada neurona de una capa (excepto las de entrada) recibe entradas de todas las neuronas de la capa anterior y envía su salida a todas las neuronas de la capa posterior (excepto las de salida). No hay conexiones hacia atrás feedback ni laterales entre las neuronas de la misma capa. La aplicación del algoritmo tiene dos fases, una hacia delante y otra hacia atrás. Durante la primera fase el patrón de entrada es presentado a la red y propagado a través de las capas hasta llegar a la capa de salida. Obtenidos los valores de salida de la red, se inicia la segunda fase, comparándose éstos valores con la salida esperada para así obtener el error. Se ajustan los pesos de la última capa proporcionalmente al error. Se pasa a la capa anterior con una retropopagación del error, ajustando los pesos y continuando con este proceso hasta llegar a la primera capa. De esta manera se han modificado los pesos de las conexiones de la red para cada patrón de aprendizaje del problema, del que conocíamos su valor de entrada y la salida deseada que debería generar la red ante dicho patrón. La técnica Backpropagation requiere el uso de neuronas cuya función de activación sea continua, y por lo tanto, diferenciable. Generalmente, la función utilizada será del tipo sigmoidal. Derivada de la función sigmoidal 1.4 1 1+𝑒 −𝑥 𝜎(𝑥)=función Sigmoidal = 𝛿 𝛿 1 𝜎(𝑥) = ( ) 𝑑𝑥 𝑑𝑥 1 + 𝑒 −𝑥 𝑒 −𝑥 =(1+𝑒 −𝑥 )2 1+𝑒 −𝑥 −1 =(1+𝑒 −𝑥 )² 1+𝑒 −𝑥 1 1+𝑒 −𝑥 1 =(1+𝑒 −𝑥 )² − (1+𝑒 −𝑥 )² =(1+𝑒 −𝑥 )² − (1+𝑒 −𝑥 )² = 𝜎(𝑥) − 𝜎(𝑥) 𝜎 1 = 𝜎(1 − 𝜎) 𝛿 =(1 𝑑𝑥 + 𝑒 −𝑥 )¯¹ 𝛿 =-1=(1 + 𝑒 −𝑥 )¯2 . 𝑑𝑥 (1 + 𝑒 −𝑥 ) 𝑑1 𝑑𝑥 =-(1 + 𝑒 −𝑥 )¯2 . ( + 𝑑𝑒 −𝑥 ) 𝑑𝑥 = (1 + 𝑒 −𝑥 )¯2 . ( 𝑒 −𝑥 . (−1)) =(1 + 𝑒 −𝑥 )¯2 𝑒 −𝑥 𝑒 −𝑥 =(1+𝑒 −𝑥 )¯2 Demostración de reglas de actualización 1.5 𝜕𝐸 𝜕𝛴 1 = (0𝑘 − 𝑇𝑘)² 𝜕𝑊𝑖𝑗 𝜕𝑤𝑦𝑘𝐸²𝐾 2 2 𝑑 ∑ (0k − tk) ( 0k − tk) 2 𝑑𝑤𝑖𝑗 𝑘𝑡𝑘 ∑ (0k − tk) ( 𝑑0𝑘 𝑑𝑡𝑘 − ) 𝑑𝑤𝑖𝑗 𝑑𝑤𝑖𝑗 𝑘𝑡𝑘 ∑ (0k − tk) ( 𝑑0𝑘 ) 𝑑𝑤𝑖𝑗 𝑘𝑡𝑘 Si 0 k =𝜎 (Xk) 𝑑0𝑘 𝑑𝑥𝑘 = 𝜎(𝑋𝑘)(1 − 𝜎(𝑋𝑘)) 𝑑𝑤𝑖𝑗 𝑑𝑤𝑖𝑗 ∑(0k − tk)σ Xk ) (1 − 𝜎(𝑋 𝑘)) 𝑘𝑡𝑘 𝑑𝑥𝑘 𝑑𝑤𝑖𝑗 Si X k=dwjk-0j 𝑑 𝑥 𝑘 𝑑 𝑤𝑖 𝑘 = : 0𝑗 𝑑𝑤𝑖𝑗 𝑑𝑤𝑖𝑗 = 𝑑𝑤𝑗 𝑑𝑜𝑗 𝑑0𝑗 𝑘. 0 𝑗 . 𝑑𝑤𝑖𝑗 Si 0j=𝜎 (wij.xj) = Wjk ∗ 𝑑 (𝜎(𝑤𝑖𝑗 𝑥𝑗)) 𝑑𝑤𝑖𝑗 𝑑𝑤𝑖 𝑗 = wjk ∗ σ (wijxj) (1 − σ(wij x))j 𝑑𝑤𝑖𝑗 = w j k*0j (1-0 jj) xj Si xj=0j Wjk. 0 j (1-0 j) 0 i 𝑑𝐸 = (∑(0k − tk)σ Xk ) (1 − 𝜎(𝑋 𝑘)) − (𝑊𝑗𝑘 ∗ 0 𝑗(1 − 0)0𝑖) 𝑑𝑤𝑖𝑗 𝑘𝑡𝑘 Si 𝜎 (X k) (0 j (1 − 0j)0 i) ∗ ∑(0k − tk)0 k (1 − 0 k) ) ∗ 𝑄 𝑗 𝑘 𝑘𝑡𝑘 Si 𝝏k=0 k (0 k-t k) (1-0 k) 𝑑𝐸 = 0𝑖 0 𝑗(1 − 0𝑗) ∑ ∂k ∗ W j k 𝑑𝑤𝑖 𝑘𝑡𝑘 Si σj = 0j(1 − 0j) ∑ ∂k Wj k = 0iσj 𝑘𝑡𝑘 LVBP Razón de Aprendizaje Variable 1.6 2.-Razón de Aprendizaje Variable (LVBP) Incrementa la velocidad de convergencia al aumentar la velocidad de aprendizaje en superficies planas y disminuye esta razón cuando la pendiente aumenta. 3.- Razón de Aprendizaje Adaptable ( ) Una forma de incrementar la velocidad de convergencia hacia un mínimo del error cuadrático medio (E) es variando la velocidad de aprendizaje. si E disminuye constantemente, E es negativo para un número de pasos, entonces se debe incrementar la . 4.-Razón de Aprendizaje Adaptable ( ) 2 si E se ha incrementado ( E>0) entonces se debe reducir la . 5. -Reglas del algoritmo VLBP (1) 1.- Si el error cuadrático se incrementa mayor a un porcentaje establecido (1% a 5%) después de haber actualizado W; entonces se descarta la actualización; se multiplica por 0 < < 1 se ajusta a cero (si se utiliza el momento). 6.-Reglas de algoritmo VLBP (2) 2.- si el error cuadrático disminuye después de haber actualizado W, entonces la actualización es aceptada. es multiplicada por un factor >1. Si había sido ajusta a cero, este regresa a su valor original. 7.-Reglas de Algoritmo VLBP 3.- Si el error cuadrático se incrementa en un valor menor a , entonces la actualización de W se acepta pero no cambia. Si había sido ajusta a cero, este regresa a su valor original. Valores típicos: = 1.05 = 0.7 =4% 8.- Cuando la trayectoria viaja en línea recta, y el tamaño del paso tienden a incrementarse con una disminución del error constante. Cuando la trayectoria llega a un valle angosto disminuye rápidamente. 9.-w 1 1,1 w 2 1,1 Ejemplo 10.-Razón de Aprendizaje Error Cuadrático 11.-Variantes del Algoritmo VLBP Delta-bar-delta (R. A Jacobs) Cada parámetro de la red (W y b) tiene su propia razón de aprendizaje. El algoritmo incrementa , para un parámetro si este cambia en la misma dirección por varia iteraciones. Si la dirección del parámetro (p/ej. W) cambia alternamente, entonces debe reducirse la . 12.-Variantes del Algoritmo VLBP (2) Algoritmo de tolerancia SuperSAB (T. Tollenaere) Es similar al Delta bar delta de Jacobs, pero tiene reglas más complejas para ajustar la velocidad de aprendizaje Momento 1.7 El elegir un incremento adecuado influye en la velocidad con la que converge el algoritmo, se sabe que con este control se puede realizar mediante el parámetro denominado ganancia, normalmente se le asigna un valor pequeño, para asegurar que la red llegue asentarse en una solución. Esta variante añade un término que controla la velocidad de acercamiento al mínimo, acelerándola cuando se está lejos del mínimo y deteniéndola cuando se está cerca (influye en la velocidad del aprendizaje) y está dado por la expresión: El cambio en el peso es proporcional al gradiente del error, siendo α (tasa de aprendizaje) la constante de proporcionalidad – Si α es grande, el error puede oscilar alrededor del mínimo – Si α es pequeña, la convergencia de más lenta Donde es el incremento que sufrió el parámetro w en la Iteración anterior y n es un numero positivo que controla la importancia dada al Incremento anterior y se denomina momento. Aplicación la regla de Se obtiene: Este método trata de ser más estable ya que si la derivada parcial del error respecto al peso tiene el mismo signo en iteraciones consecutivas, la utilización del momento procura un cambio mayor en el peso, acelerando así la convergencia del algoritmo, presenta problemas en proximidades del mínimo. Las mayores tasas de convergencia suelen lograrse para valores grandes tanto de h (siempre que el aumento en dicho valor no produzca inestabilidades) como el momento m. La elección de los pesos iniciales es también importante, ya que la función de error para el PMC puede tener varios mínimos locales, y el punto final de convergencia depende de las condiciones iniciales. Típicamente, dicho problema se resuelve aplicando el algoritmo de retro propagaciones varias veces con diferentes pesos iniciales hasta que se encuentra una solución adecuada. Sesgo 1.8 El algoritmo Backpropagation emplea un ciclo propagación – adaptación de dos fases. Una vez que se ha aplicado un patrón a la entrada de la red como estímulo, este se propaga desde la primera capa a través de las capas superiores de la red, hasta generar una salida. La señal de salida se compara con la salida deseada y se calcula una señal de error para cada una de las salidas. Las salidas de error se propagan hacia atrás, partiendo de la capa de salida, hacia todas las neuronas de la capa oculta que contribuyen directamente a la salida. Sin embargo las neuronas de la capa oculta solo reciben una fracción de la señal total del error, basándose aproximadamente en la contribución relativa que haya aportado cada neurona a la salida original. Este proceso se repite, capa por capa, hasta que todas las neuronas de la red hayan recibido una señal de error que describa su contribución relativa al error total. Basándose en la señal de error percibida, se actualizan los pesos de conexión de cada neurona, para hacer que la red converja hacia un estado que permita clasificar correctamente todos los patrones de entrenamiento. La importancia de este proceso consiste en que, a medida que se entrena la red, las neuronas de las capas intermedias se organizan a sí mismas de tal modo que las distintas neuronas aprenden a reconocer distintas características del espacio total de entrada. Después del entrenamiento, cuando se les presente un patrón Página 6 de 9 arbitrario de entrada que contenga ruido o que esté incompleto, las neuronas de la capa oculta de la red responderán con una salida activa si la nueva entrada contiene un patrón que se asemeje a aquella característica que las neuronas individuales hayan aprendido a reconocer durante su entrenamiento. Y a la inversa, las unidades de las capas ocultas tienen una tendencia a inhibir su salida si el patrón de entrada no contiene la característica para reconocer, para la cual han sido entrenadas, el sesgo para una backpropagation se denota conforme a los siguientes pasos: Sea el problema de clasificación con dos clases con codificación Y = {−1, 1} y con pérdida 0-1, (y, g(x)) = 1{y6=g(x)} y riesgo R(g(x)) = EY/x[(Y/x, g(x))], en el cuál, la predicción óptima viene dada por la regla de Bayes: g(x) = arg inf g(x){R(g(x)) = EY/x[(Y/x, g(x))]} TEOREMA 1: En el problema de clasificación anterior, si D es un conjunto de muestras aleatorias de entrenamiento obtenidas de la distribución PX,Y, y ˆgn es el estimador obtenido a partir de una muestra aleatoria Zn = (Z1, ..., Zn), con Zi = (Xi,Yi), i = 1 : n, se verifica la siguiente descomposición de la esperanza del error de predicción: MPE(ˆgn(x)) = EZn,Y/x[(Y/x, ˆgn(x))] = c1σ2(Y/x) +Sesgo(ˆgn(x)) + c2 Var(ˆgn(x)) (1) donde: c1 = c1(x) =2PZn[ˆgn(x) = g(x)] − 1 c2 = c2(x) =½+1 si ˆg∗D (x) = g(x) −1 en otro caso son constantes dependientes de x (y también del algoritmo), y: Sesgo (ˆgn(x)).=(g(x), ˆg∗D(x)) Var(ˆgn(x)) .=EZn [(ˆg∗D(x), ˆgn(x)]σ2(Y/x).=EY/x[(Y/x, g(x))] donde ˆg∗D es la predicción principal en D definidacomo: ˆg∗D (x)= argming(x) EZn [(g(x), ˆgn(x))] que, en el problema de clasificación, es la moda de las predicciones de las hipótesis entrenadas con muestras de D. Análogamente, puede definirse: ME (ˆgn(x)) = Sesgo (ˆgn(x)) + c2 Var(ˆgn(x)) (3) y su correspondiente valor medio (análogamente para MPE):Página 7 de 9 ME (ˆgn) = EX [ME(ˆgn(X))] = EX[Sesgo(ˆgn(X))] + EX[c2(X)Var(ˆgn(X))] (4) A diferencia de la descomposición en regresión, el término de varianza, puede resultar negativo debido a que c2(x) = −1 en los puntos donde existe sesgo: Sesgo (ˆgn(x)) =(g(x), ˆg∗D(x)) = 1. Ello significa que en estos puntos, cuanto más varianza menor error de generalización. Claramente, esto no ocurre en el caso de regresión con pérdida cuadrática. Por otra parte, es peculiar el término del ruido, pero su expresión sigue rigurosamente el paralelismo con la descomposición con pérdida cuadrática, [Domingos, 2000]. Para la regla de Bayes, su valor resulta intuitivo al ser el riesgo de Bayes en x: c1(x)EY/x[(Y/x, g(x))] = (2PZn [g(x) = g(x)] − 1)EY/x[(Y/x, g(x))] = EY/x[(Y/x,g(x))] Sin embargo, para cualquier otro algoritmo entrenado con muestras de D, dicho valor resulta menor que dicho riesgo si PZn[ˆgn(x) = g(x)] < 1 e, incluso negativo, si PZn[ˆgn(x) = g(x)] < 0.5 con lo que, además, depende del algoritmo utilizado. Así, si el estimador está lejos de ser óptimo, cuanto mayor ruido, mejor es su comportamiento. [Domingos, 2000] estudia el comportamiento de su propuesta de descomposición con árboles de regresión (regression trees) y con clasificadores k-nearest neighbors, y anima a estudiar dicho comportamiento con otros estimadores. Control de convergencia 1.9 En las técnicas de gradiente descendente es conveniente avanzar por la superficie de error con incrementos pequeños de los pesos. Información local de la superficie. Incrementos grandes: se corre el riesgo de pasar por encima del punto mínimo sin conseguir estacionarse en él. · Incrementos pequeños: aunque se tarde más en llegar, se evita que ocurra esto. El elegir un incremento adecuado influye en la velocidad con la que converge el algoritmo. Sabemos que este control lo podemos realizar mediante el parámetro denominado ganancia. Normalmente se le asigna un valor pequeño (0,05-0,25) para asegurar que la red llegue a asentarse en una solución. Otra manera de incrementar la velocidad de aprendizaje, consiste en utilizar otro parámetro llamado Momento: Un último aspecto a tener en cuenta es la posibilidad de convergencia hacia alguno de los mínimos locales. No se puede asegurar en ningún momento que el mínimo que se encuentre sea global. Una vez que la red se asienta en un mínimo, sea local o global, cesa el aprendizaje, aunque el error siga siendo demasiado alto, si se ha alcanzado un mínimo local. Si se alcanza un mínimo local y el error es satisfactorio, el entrenamiento ha sido un éxito, si no sucede así, puede realizarse varias acciones para solucionar el problema: Cambio de arquitectura (más capas ocultas o más PE) Modificación de parámetros de aprendizaje. Emplear un conjunto de pesos iniciales diferentes. Modificar el conjunto de entrenamiento o presentar los patrones en distinta secuencia. Capitulo 2 Desarrollo del programa Problema que resuelve