Esta es una de las cosas que me vuelve loco. La “matemática” involucrada en la propagación hacia atrás no es realmente tan profunda (si lo desea, puede comprenderla inmediatamente después de su primer trimestre en la universidad). Solo requiere comprender 3 conceptos simples (que en realidad no son tan difíciles de comprender una vez explicados) y los usa.
Los conceptos son:
- Regla de cadena multivariable
- Derivados parciales de composición de funciones (es decir, la regla de la cadena de nuevo)
- Recursión y reutilización de cosas que ya ha calculado utilizando un bucle for (también conocido como programación dinámica)
en mi opinión, estos conceptos no son tan profundos en comparación con las matemáticas menos útiles pero más interesantes como la definición de los números reales (campo ordenado con la propiedad de límite superior mínimo) o el problema de detención (que hay cosas que los algoritmos no pueden resolver) /calcular). No se deje intimidar por el álgebra (y la pesadilla de notación) y muchas ecuaciones. Realmente no es complicado y se puede explicar en aproximadamente 1 hora (tal vez en 1.5 si necesita revisar qué gradiente y derivadas parciales son, ¡pero no se asuste, es realmente genial entenderlo! 😀). Podría pasar 1 hora escribiendo una explicación detallada, pero ya hay una. Entonces, en su lugar, le enviaré el enlace a la mejor explicación (de la notación y las matemáticas) que conozco:
- ¿Cómo funciona una calculadora electrónica?
- Informática: ¿Son nerds los estudiantes de informática?
- Como estudiante de secundaria, ¿cómo puedo aprender Matemáticas para la informática?
- ¿Cuál es el método para encontrar el valor aproximado de la potencia de dos (2 ^ x) sin usar una calculadora?
- ¿Cuáles son algunos de los temas de teoría de gráficos que necesito aprender para hacer el bien en la programación competitiva?
entonces expresar esos cálculos en vectores no es tan difícil, solo apila los cálculos en vectores, con productos internos y multiplicaciones de matriz (¡o productos externos si notas que también puedes usar eso!) Creo que Andrew Ng tiene alguna discusión sobre esto. notas dispersas del codificador automático:
https://web.stanford.edu/class/c…
sin embargo, personalmente nunca me gustaron tanto esas notas. Además, creo que no discutió cómo vectorizar las cosas para GD de mini lotes.
Sin embargo, la idea principal para la propagación hacia atrás en una oración es:
Para calcular la derivada de una función que es recursiva y una composición, no sorprende que tenga que calcular derivadas de manera similar, de manera recursiva.
Para ahorrar tiempo en la computación, solo asegúrese de reutilizar sus cálculos a medida que avanza para poder calcular la derivada de manera más eficiente.
No te dejes intimidar, solo tiene muchos subíndices, realmente no es tan complicado 🙂