He pasado unos días trabajando en redes neuronales como CNN y RNN. Esta publicación muestra mis notas sobre la derivación de la retropropagación de la red neuronal. La derivación de la retropropagación es uno de los algoritmos más complicados del aprendizaje automático. Hay muchos recursos para comprender cómo calcular gradientes mediante retropropagación. Pero en mi opinión, la mayoría de ellos carece de un ejemplo simple para demostrar el problema y recorrer el algoritmo.
1. Una red neuronal simple
El siguiente diagrama muestra la estructura de una red neuronal simple utilizada en esta publicación. La dimensión de entrada (dimensión de la característica) es 2, el tamaño de la capa oculta es 3 y la dimensión de salida es 1. Es bastante intuitivo calcular la predicción alimentando la red. En el siguiente diagrama, en lugar de usar números reales, utilizo cuadros para ilustrar la transformación de dimensión a través de las capas.
2. Función de costo
Una función de costo refleja la distancia entre la verdad del terreno y los valores predichos. Una función de costo simple es una función de error de suma al cuadrado:
El costo J es una función de W. Entonces el objetivo es encontrar lo mejor W que produce el costo más bajo J. La función de costo se define a menudo de una manera matemáticamente conveniente. Aparentemente, podría haber múltiples formas de evaluar la distancia entre la verdad y los valores predichos. Cada función de costo tiene sus propios casos aplicables. Puede echar un vistazo esta publicación para ver algunas otras funciones de costos.
En un espacio bidimensional simplificado, la relación entre el costo J y W puede verse como:
Seguimos actualizando W, de modo que el costo se mueva al punto más bajo. El algoritmo se llama descenso de gradiente. Calculando las derivadas parciales de W, podemos seguir actualizando W y hacer que el costo baje cada vez más hasta llegar al mínimo.
En un escenario real, sería un espacio multidimensional (difícil de visualizar aquí). Cada movimiento conducirá a una dirección en un espacio multidimensional.
3. Cálculo de derivada parcial
Primero calculemos las derivadas parciales de la segunda capa. W.
Podemos ver que esos valores solo se ven afectados por los datos de entrada que se alimentan a la red. (Tenga en cuenta que f ‘(z) se puede simplificar aún más).
De manera similar, podemos calcular las derivadas parciales de W para la primera capa.
Estos valores también se pueden calcular en función de los datos de entrada que se alimentan a la red.
Una vez que sepamos cómo actualizar W, usamos el nuevo W y hacer descenso de gradiente una y otra vez, hasta llegar al punto óptimo.
4. Visualización del cálculo
Tomemos los pesos de la segunda capa, por ejemplo.
Primero podemos ver cómo cada muestra contribuye al gradiente y luego ver cómo las 5 muestras de entrenamiento contribuyen al gradiente.
La dimensión del resultado es 3 por 1, que es la misma de W2.