4
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO Redes Neuronales BackPropagation “El Sesgo en Backpropagation” ico17 Levi Guadarrama Tercero Juan Carlos Tomas Reyes Oliver Sánchez Cruz 1 Sesgo en Backpropagation Una forma de ver las redes neuronales es como metafunciones que aceptan un número fijo de entradas numéricas y producen un número fijo de salidas numéricas. En la mayoría de los casos, las redes neuronales tienen una capa de neuronas ocultas, donde cada una de estas está conectada completamente con las neuronas de entrada y de salida. Asociado con cada neurona oculta y cada neurona de salida individual se encuentra un conjunto de valores de ponderación y un valor único llamado sesgo. Las ponderaciones y sesgos determinan los valores de salida para un conjunto dado de valores de entrada. La técnica más común para calcular las ponderaciones y sesgos óptimos se llama propagación inversa. Aunque existen muchas referencias excelentes que describen las matemáticas complejas que subyacen a la propagación inversa, hay pocas guías disponibles para los programadores, que describan claramente cómo programar el algoritmo de propagación inversa. Este artículo explica cómo implementar la propagación inversa. El lenguaje de programación en los ejemplos es C#, pero no debería ser difícil refactorizarlos a otros lenguajes. La mejor forma de ver mi objetivo es mirar la captura de pantalla de un programa de demostración en la Ilustración 1. Este programa crea una red neuronal que tiene tres neuronas de entrada, con una capa oculta de cuatro neuronas y dos neuronas de salida. Las redes neuronales con una sola capa oculta requieren de dos funciones de activación. En muchas situaciones, sin embargo, estas dos funciones son iguales, habitualmente la función sigmoidea. Pero en esta demostración, para ilustrar la relación entre las funciones de activación y la propagación inversa, empleo funciones de activación diferentes: la función sigmoidea para los cálculos de la capa de entrada a la oculta, y la tangente hiperbólica para los cálculos de la capa oculta a la de salida.

Sesgo BacoProgpagation

  • Upload
    levy-gt

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

Como es el Sesgo en una red neuronal artifical, especificamente en la red neuronal Backpropagation.

Citation preview

Page 1: Sesgo BacoProgpagation

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO

Redes Neuronales BackPropagation “El Sesgo en Backpropagation” ico17 Levi Guadarrama Tercero Juan Carlos Tomas Reyes Oliver Sánchez Cruz

1

Sesgo en Backpropagation

Una forma de ver las redes neuronales es como metafunciones que aceptan un

número fijo de entradas numéricas y producen un número fijo de salidas numéricas.

En la mayoría de los casos, las redes neuronales tienen una capa de neuronas

ocultas, donde cada una de estas está conectada completamente con las neuronas

de entrada y de salida. Asociado con cada neurona oculta y cada neurona de

salida individual se encuentra un conjunto de valores de ponderación y un

valor único llamado sesgo. Las ponderaciones y sesgos determinan los valores

de salida para un conjunto dado de valores de entrada.

La técnica más común para calcular las ponderaciones y sesgos óptimos se llama

propagación inversa. Aunque existen muchas referencias excelentes que describen

las matemáticas complejas que subyacen a la propagación inversa, hay pocas guías

disponibles para los programadores, que describan claramente cómo programar el

algoritmo de propagación inversa. Este artículo explica cómo implementar la

propagación inversa. El lenguaje de programación en los ejemplos es C#, pero no

debería ser difícil refactorizarlos a otros lenguajes.

La mejor forma de ver mi objetivo es mirar la captura de pantalla de un programa de

demostración en la Ilustración 1. Este programa crea una red neuronal que tiene

tres neuronas de entrada, con una capa oculta de cuatro neuronas y dos neuronas

de salida. Las redes neuronales con una sola capa oculta requieren de dos

funciones de activación. En muchas situaciones, sin embargo, estas dos funciones

son iguales, habitualmente la función sigmoidea. Pero en esta demostración, para

ilustrar la relación entre las funciones de activación y la propagación inversa, empleo

funciones de activación diferentes: la función sigmoidea para los cálculos de la capa

de entrada a la oculta, y la tangente hiperbólica para los cálculos de la capa oculta

a la de salida.

Page 2: Sesgo BacoProgpagation

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO

Redes Neuronales BackPropagation “El Sesgo en Backpropagation” ico17 Levi Guadarrama Tercero Juan Carlos Tomas Reyes Oliver Sánchez Cruz

2

Ilustracion 1 Algoritmo de propagación inversa en acción

Page 3: Sesgo BacoProgpagation

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO

Redes Neuronales BackPropagation “El Sesgo en Backpropagation” ico17 Levi Guadarrama Tercero Juan Carlos Tomas Reyes Oliver Sánchez Cruz

3

Una red neuronal 3-4-2 completamente conectada requiere de 3*4 + 4*2 = 20 valores de ponderación y 4+2 = 6 valores de sesgo, lo que suma un total de 26 ponderaciones y sesgos. Estas ponderaciones y sesgos se inicializan en valores más o menos arbitrarios. Los valores de entrada genéricos se establecen en 1,0, 2,0 y 3,0. Con los valores iniciales de ponderación, sesgo y entrada, los valores de salida iniciales que calcula la red neuronal son {0,7225; -0,8779}. El programa de demostración supone que los dos valores de salida correctos son {-0,8500; 0,7500}. La finalidad del algoritmo de propagación inversa es encontrar un nuevo conjunto de ponderaciones y sesgos que generen resultados muy próximos a los valores correctos para las entradas {1,0; 2,0; 3,0}.

La propagación inversa requiere de dos parámetros libres. La velocidad de aprendizaje, generalmente designada con la letra griega eta en la literatura sobre propagación inversa, controla la velocidad con la que el algoritmo converge en el cálculo final. El momento, designado generalmente con la letra griega alfa, permite que el algoritmo de propagación inversa evite las situaciones donde el algoritmo oscila sin converger en un cálculo final. El programa de demostración establece la velocidad de aprendizaje en 0,90 y el momento en 0,04. Normalmente estos valores se encuentran por ensayo y error.

El proceso de encontrar el mejor conjunto de ponderaciones y sesgos para una red neuronal a veces se denomina entrenamiento de la red. En el caso de la propagación inversa, el entrenamiento es un proceso iterativo. En cada iteración, la propagación inversa calcula un nuevo conjunto de valores de ponderación y sesgo que, en teoría, generan valores de salida que estarán más cercanos a los valores esperados. Después de la primera iteración de entrenamiento del programa de demostración, el algoritmo de propagación inversa encontró los nuevos valores de ponderación y sesgo, que generaron los resultados nuevos {-0,8932; -0,8006}. El primer valor de salida de -0,8932 está mucho más cercano al primer valor esperado de -0,8500. El segundo valor nuevo de salida de -0,8006 sigue estando muy alejado del valor esperado de 0,7500.

El proceso de entrenamiento se puede terminar de diferentes formas. El programa de demostración itera el entrenamiento hasta que la suma de las diferencias absolutas entre los valores de salida y los esperados sea menor que <= 0,01 o el entrenamiento llegue a 1.000 iteraciones. En la demostración, después de seis iteraciones de entrenamiento, la propagación inversa encontró un conjunto de valores de ponderación y sesgo que generaron salidas de {-0,8423; 0,7481}; muy próximas a los valores esperados de {-0,8500; 0,7500}.

Page 4: Sesgo BacoProgpagation

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO

Redes Neuronales BackPropagation “El Sesgo en Backpropagation” ico17 Levi Guadarrama Tercero Juan Carlos Tomas Reyes Oliver Sánchez Cruz

4

Bibliografía

“Profundización en las redes neuronales”, en msdn.microsoft.com/magazine/hh975375.) El código del programa que aparece en la Ilustración 1 es demasiado extenso para presentarlo en este artículo, de modo que me concentraré en explicar las partes claves del algoritmo. El código fuente completo para el programa de demostración está disponible en archive.msdn.microsoft.com/mag201210TestRun.