Habrá personas que le dirán que los errores de la red se propagan durante la propagación inversa. Si bien esto es cierto en cierta medida, personalmente creo que pensar en la propagación hacia atrás de esa manera es engañoso y no arroja luz sobre la comprensión del algoritmo, así como muchas de sus generalizaciones. Así que daré la forma en que lo pienso.
La retropropagación es una implementación de la regla de la cadena en el cálculo de múltiples variables. Su propósito es calcular el gradiente de una función compuesta (potencialmente muy complicada) con respecto a sus parámetros. Lo hace aplicando la regla de la cadena a cada uno de sus cálculos intermedios, en un orden apropiado.
Aquí está la configuración general. Deje que [math] f_i: \ mathbb {R} ^ {I_i} \ to \ mathbb {R} ^ {O_i} [/ math] con [math] i = 1, 2, …, n [/ math] sea una secuencia de funciones, donde [math] f_i = f_i (g_i) [/ math] con [math] g_i [/ math] es un subconjunto de [math] \ {1, 2, …, i-1 \} [/ math] . También requerimos que [math] O_n = 1 [/ math], para que la salida final de la secuencia sea un escalar. Digamos también que estas funciones [math] f_i [/ math] dependen de un vector de parámetros [math] \ theta [/ math]. La retropropagación intenta calcular el gradiente [math] \ nabla_ \ theta f_n [/ math]. Lo hace aplicando esta forma de regla de cadena
- ¿Cuáles son las posibilidades de que profesiones como abogados y médicos sean reemplazadas por IA para 2067?
- ¿Qué es la inteligencia de enjambre?
- ¿Podrían la IA y los robots reemplazar la necesidad de policías, bomberos, etc. en el futuro?
- ¿Cómo se crean los softwares de inteligencia artificial como la asistencia de Google y Siri?
- ¿Cuál es el estado del arte en el aprendizaje no supervisado?
[matemáticas] \ frac {\ partial f_i} {\ partial \ theta} = \ sum_ {i \ in g_j} \ frac {\ partial f_j} {\ partial f_i} \ cdot \ frac {\ partial f_i} {\ partial \ theta} [/ matemáticas]
Ahora el término [math] \ frac {\ partial f_i} {\ partial \ theta} [/ math] puede calcularse directamente mirando [math] f_i [/ math]. Sin embargo, [math] \ frac {\ partial f_j} {\ partial f_i} [/ math] para todo [math] j [/ math] debe calcularse primero. La propiedad requerida de que [math] g_i [/ math] es un subconjunto de [math] \ {1, 2, …, i-1 \} [/ math] garantiza que siempre es así, siempre que realice el cálculos anteriores en el orden descendente de [matemáticas] i [/ matemáticas].
Ese es el algoritmo de propagación hacia atrás (generalizado). Se utiliza en el diseño de muchos marcos computacionales basados en gráficos para el aprendizaje profundo, así como el aprendizaje automático más genérico, cuyos ejemplos incluyen, entre otros, Tensorflow, Theano y Torch.