Question: ¿Cómo funciona el algoritmo de backpropagation?
Answer: Cualquier función se puede representar a través de un grafo computacional donde cada vértice representa una operación. Por ejemplo, la función f(a, b, x) = sqrt(a*x + b) se puede representar con el siguiente grafo:

Un nodo v1 representa al valor a, otro nodo v2 presenta al valor x, y otro nodo v3 representa el valor b.
Luego, un nuevo nodo v4 representa a*x, otro nodo v5 representa a*x + b, y un último nodo v6 representa sqrt(a*x+b).

En otras palabra v1 := a, v2 := x, v3 := b. Lueg v4 := v1 * v2, v5 := v4 + v3, v6 := sqrt(v5). Lo que estamos haciendo es representar la función f como una composición de otras funciones más simples.

Luego, cuando necesitamos computar la derivada de la función f con respecto a a,b,x, utilizamos la regla de la cadena de Leibnitz, que dice que si df/dx = df/dg * dg/dx.

Entonces, podemos computar la derivada dv6/dv5, dv5/dv4 y dv5/dv3, y dv4/dv1, dv4/dv2, y de esta manera podemos computar la derivada de f con respecto a las tres variables a,b,x en un punto en particular. Para hacerlo, primeramente hacemos un pase hacia adelante, para computar f(a,b,x) en los valores dado, y luego hacemos un pase hacia detrás de acuerdo a la regla de la cadena.