Reuní una respuesta a esta pregunta aquí si alguien está interesado (no quería volver a publicar).
Phylliida
Respuestas:
14
El algoritmo de propagación hacia atrás es un algoritmo de descenso de gradiente para ajustar un modelo de red neuronal. (como lo mencionó @Dikran) Permítanme explicar cómo.
Formalmente: el uso del cálculo del gradiente al final de esta publicación dentro de la ecuación [1] a continuación (que es una definición del descenso del gradiente) proporciona el algoritmo de propagación hacia atrás como un caso particular del uso de un descenso del gradiente.
Un modelo de red neuronal
Formalmente, arreglamos ideas con un modelo simple de una sola capa:
donde g : R → R y es : R M → R M son conocidos por todos m = 1 ... , M , s ( x ) [ m ] = σ ( x [ m ] ) , y
F( x ) = g( A1( s ( A2( x ) ) ) )
sol: R → Rs : RMETRO→ RMETROm = 1 ... , Ms ( x ) [ m ] = σ( x [ m ] ) , A 2 R p → R M son funciones afines desconocidas. La función σ : R → R se llama función de activación en el marco de clasificación.UN1: RMETRO→ RUN2Rpag→ RMETROσ: R → R
Se toma una función de pérdida cuadrática para arreglar ideas. Por lo tanto, los vectores de entrada de R p pueden ajustarse a la salida real ( y 1 , ... , y n ) de R (podrían ser vectores) minimizando la pérdida empírica:
R n ( A 1 , A 2 ) = n ∑ i = 1 ( y i - f ( x( x1, ... , xnorte)Rpag( y1, ... , ynorte)R
con respecto a la elección de A 1 y A 2 .
La retropropagación es una forma de calcular la derivada de la función de error con respecto a los pesos, de modo que el modelo pueda ser entrenado mediante métodos de optimización de descenso de gradiente: es básicamente la aplicación de la "regla de la cadena". Realmente no hay mucho más que eso, así que si te sientes cómodo con el cálculo, esa es básicamente la mejor manera de verlo.
Si no se siente cómodo con el cálculo, una mejor manera sería decir que sabemos cuán mal están las unidades de salida porque tenemos una salida deseada con la que comparar la salida real. Sin embargo, no tenemos una salida deseada para las unidades ocultas, entonces, ¿qué hacemos? La regla de propagación hacia atrás es básicamente una forma de echar la culpa del error de las unidades de salida a las unidades ocultas. Cuanta más influencia tenga una unidad oculta en una unidad de salida en particular, más culpa tiene el error. La culpa total asociada con una unidad oculta da una indicación de cuánto deben cambiar los pesos de la capa de entrada a oculta. Las dos cosas que rigen la cantidad de culpa que se devuelve es el peso que conecta los pesos de la capa oculta y de salida (obviamente) y la salida de la unidad oculta (si grita en lugar de susurrar, es probable que tenga una mayor influencia). El resto son solo las sutilezas matemáticas que convierten esa intuición en la derivada del criterio de entrenamiento.
¡También recomendaría el libro de los obispos para una respuesta adecuada! ; o)
Es un algoritmo para entrenar redes neuronales multicapa de alimentación hacia adelante (perceptrones multicapa). Hay varios applets de Java agradables en la web que ilustran lo que está sucediendo, como este: http://neuron.eng.wayne.edu/bpFunctionApprox/bpFunctionApprox.html . Además, el libro de Bishop sobre NN es la referencia estándar de escritorio para cualquier cosa que tenga que ver con NN.
Al tratar de construir un repositorio permanente de información estadística de alta calidad en forma de preguntas y respuestas, tratamos de evitar respuestas de solo enlace . Si puede, ¿podría ampliar esto, quizás dando un resumen de la información en el enlace?
Respuestas:
El algoritmo de propagación hacia atrás es un algoritmo de descenso de gradiente para ajustar un modelo de red neuronal. (como lo mencionó @Dikran) Permítanme explicar cómo.
Formalmente: el uso del cálculo del gradiente al final de esta publicación dentro de la ecuación [1] a continuación (que es una definición del descenso del gradiente) proporciona el algoritmo de propagación hacia atrás como un caso particular del uso de un descenso del gradiente.
Un modelo de red neuronal Formalmente, arreglamos ideas con un modelo simple de una sola capa:
donde g : R → R y es : R M → R M son conocidos por todos m = 1 ... , M , s ( x ) [ m ] = σ ( x [ m ] ) , y
Se toma una función de pérdida cuadrática para arreglar ideas. Por lo tanto, los vectores de entrada de R p pueden ajustarse a la salida real ( y 1 , ... , y n ) de R (podrían ser vectores) minimizando la pérdida empírica: R n ( A 1 , A 2 ) = n ∑ i = 1 ( y i - f ( x( x1, ... , xnorte) Rpag ( y1, ... , ynorte) R
con respecto a la elección de A 1 y A 2 .
fuente
La retropropagación es una forma de calcular la derivada de la función de error con respecto a los pesos, de modo que el modelo pueda ser entrenado mediante métodos de optimización de descenso de gradiente: es básicamente la aplicación de la "regla de la cadena". Realmente no hay mucho más que eso, así que si te sientes cómodo con el cálculo, esa es básicamente la mejor manera de verlo.
Si no se siente cómodo con el cálculo, una mejor manera sería decir que sabemos cuán mal están las unidades de salida porque tenemos una salida deseada con la que comparar la salida real. Sin embargo, no tenemos una salida deseada para las unidades ocultas, entonces, ¿qué hacemos? La regla de propagación hacia atrás es básicamente una forma de echar la culpa del error de las unidades de salida a las unidades ocultas. Cuanta más influencia tenga una unidad oculta en una unidad de salida en particular, más culpa tiene el error. La culpa total asociada con una unidad oculta da una indicación de cuánto deben cambiar los pesos de la capa de entrada a oculta. Las dos cosas que rigen la cantidad de culpa que se devuelve es el peso que conecta los pesos de la capa oculta y de salida (obviamente) y la salida de la unidad oculta (si grita en lugar de susurrar, es probable que tenga una mayor influencia). El resto son solo las sutilezas matemáticas que convierten esa intuición en la derivada del criterio de entrenamiento.
¡También recomendaría el libro de los obispos para una respuesta adecuada! ; o)
fuente
Es un algoritmo para entrenar redes neuronales multicapa de alimentación hacia adelante (perceptrones multicapa). Hay varios applets de Java agradables en la web que ilustran lo que está sucediendo, como este: http://neuron.eng.wayne.edu/bpFunctionApprox/bpFunctionApprox.html . Además, el libro de Bishop sobre NN es la referencia estándar de escritorio para cualquier cosa que tenga que ver con NN.
fuente