La retropropagación es el algoritmo que reparte la culpa del error entre todos los pesos de una red neuronal para saber cómo ajustarlos. En lugar de probar cambios al azar, propaga una señal de error desde la salida hacia la entrada, capa por capa, y en una sola pasada calcula cuánto contribuye cada peso al fallo final. Esa intuición, la de repartir responsabilidades hacia atrás, es lo que convirtió el entrenamiento de redes profundas en algo práctico. La misma explicación está disponible en inglés.

Fórmula clave $\delta^{(l)} = \left(\mathbf{W}^{(l+1)}\right)^{\top} \delta^{(l+1)} \odot f'(\mathbf{z}^{(l)})$

Puntos clave

  • La retropropagación calcula el gradiente de cada peso propagando el error desde la salida hacia la entrada en una única pasada hacia atrás.
  • La idea central es asignar la culpa: cada neurona recibe una señal de error δ que mide cuánta responsabilidad tiene en el fallo final.
  • Esa señal se propaga con la fórmula δ⁽ˡ⁾ = (W⁽ˡ⁺¹⁾)ᵀ δ⁽ˡ⁺¹⁾ ⊙ f'(z⁽ˡ⁾), que combina los pesos de la capa siguiente y la derivada de la activación.
  • Su eficiencia es la clave: reutilizar los cálculos intermedios reduce el coste de exponencial a lineal en el número de capas.
  • Gracias a esta eficiencia, entrenar una red de 175.000 millones de parámetros como GPT-3 sigue siendo un cálculo mecánico y no una tarea imposible.

¿Qué es la retropropagación?

La retropropagación es el método que permite a una red neuronal aprender de sus errores. Después de que la red hace una predicción mediante la propagación hacia delante, comparamos su salida con la respuesta correcta y medimos el fallo con una función de pérdida L. La pregunta entonces es: ¿cuánto tiene que cambiar cada peso W para reducir ese fallo? La retropropagación responde a esa pregunta para todos los pesos a la vez.

El nombre lo dice todo: propagación hacia atrás. La información fluye hacia delante para producir la predicción, y la señal de error fluye hacia atrás para repartir la responsabilidad. El algoritmo se popularizó en 1986 con el artículo de David Rumelhart, Geoffrey Hinton y Ronald Williams en Nature, «Learning representations by back-propagating errors»[1], que demostró cómo obtener el gradiente de todos los pesos en una sola pasada. Como resume Michael Nielsen en su libro abierto, «lo ingenioso de la retropropagación es que nos permite calcular a la vez todas las derivadas parciales usando una sola pasada hacia delante seguida de una sola pasada hacia atrás».

Asignar la culpa del error

La mejor forma de entender la retropropagación es pensar en ella como un reparto de culpas. Cuando la red se equivoca, el error final es responsabilidad de miles de pesos que colaboraron en la predicción. Algunos empujaron en la dirección correcta y otros en la equivocada, y cada uno merece una porción distinta de la culpa.

Para formalizar esa idea definimos una cantidad δ (delta) para cada neurona: es la señal de error, la sensibilidad de la pérdida ante un cambio en la entrada ponderada z = Wx + b de esa neurona. Una neurona con δ grande tuvo mucho peso en el fallo y necesita un ajuste importante; una con δ cercano a cero apenas contribuyó y casi no se toca. Imagina un equipo de 10 personas donde un proyecto sale mal: no todas fallaron por igual, y δ es precisamente la parte de responsabilidad que corresponde a cada una. Ese reparto es posible gracias a la regla de la cadena, que encadena las derivadas locales de capa en capa.

El flujo del gradiente hacia atrás

El reparto empieza en la capa de salida, donde el error es directo: comparamos la predicción con la respuesta correcta. A partir de ahí, la señal $\delta$ retrocede una capa cada vez. La fórmula que gobierna ese paso es la que aparece en la portada:

$$\delta^{(l)} = \left(\mathbf{W}^{(l+1)}\right)^{\top} \delta^{(l+1)} \odot f'(\mathbf{z}^{(l)})$$

Cada símbolo tiene una lectura intuitiva. El término $\left(\mathbf{W}^{(l+1)}\right)^{\top}\delta^{(l+1)}$ toma la culpa de la capa siguiente y la reparte hacia atrás a través de los mismos pesos que la propagaron hacia delante, pero traspuestos: la información viaja ahora en sentido contrario. El símbolo $\odot$ es el producto elemento a elemento, y $f'(\mathbf{z}^{(l)})$ es la derivada de la función de activación. Ese último factor actúa como una compuerta: si la neurona estaba en una zona plana de su activación, su derivada es casi cero y bloquea el paso de la señal. Por eso las activaciones saturadas frenan el aprendizaje.

Ese factor $f'(\mathbf{z}^{(l)})$ es el origen del problema del gradiente que se desvanece: en las zonas planas de una activación saturada su valor cae casi a $0$ y apaga la señal de error antes de que llegue a las primeras capas.

Una vez que tenemos $\delta$ en cada capa, el gradiente de un peso es simplemente el producto de la señal de error de la neurona que recibe por la activación de la neurona que envía. Con ese gradiente, el descenso de gradiente actualiza el peso: $\mathbf{W}=\mathbf{W}-\eta\cdot\nabla$, donde $\eta$ es la tasa de aprendizaje. Si en una capa $\delta = 0{,}5$ y la activación entrante vale $a = 2$, el gradiente de ese peso es $1{,}0$, y con $\eta = 0{,}1$ el peso baja $0{,}1$ unidades. La misma cuenta ocurre en paralelo para todos los pesos de la red.

Por qué es tan eficiente

La retropropagación no es la única forma de calcular el gradiente, pero sí la más rápida por un margen enorme. La alternativa ingenua sería perturbar cada peso por separado, volver a pasar toda la red hacia delante y medir cómo cambia la pérdida. En una red con un millón de pesos eso exigiría un millón de pasadas completas por cada actualización, algo inviable.

La clave está en reutilizar el trabajo. Al propagar δ de derecha a izquierda, cada capa aprovecha el resultado ya calculado de la capa posterior, en vez de empezar de cero. Ese reaprovechamiento es lo que reduce el coste de exponencial a lineal en el número de capas: con una sola pasada hacia atrás obtenemos todos los gradientes. El libro de referencia de Goodfellow, Bengio y Courville[2] lo describe como una aplicación ordenada de la programación dinámica sobre el grafo de cómputo. Es la diferencia entre entrenar una red de 50 capas en segundos o no poder entrenarla nunca.

Anticipo de la derivación

Todo lo anterior es la intuición; la derivación formal la dejamos para el siguiente artículo. Allí obtendremos la fórmula δ⁽ˡ⁾ = (W⁽ˡ⁺¹⁾)ᵀ δ⁽ˡ⁺¹⁾ ⊙ f'(z⁽ˡ⁾) aplicando la regla de la cadena término a término, partiremos de las derivadas parciales y el gradiente y llegaremos a las cuatro ecuaciones fundamentales de la retropropagación.

De momento basta con quedarse con tres ideas: la señal de error δ mide la culpa de cada neurona, esa culpa se propaga hacia atrás multiplicando por los pesos traspuestos y por la derivada de la activación, y todo se calcula en una única pasada. Con esos tres pilares, las ecuaciones dejarán de parecer un jeroglífico.

Preguntas frecuentes

¿La retropropagación es lo mismo que el descenso de gradiente?

No, son dos piezas complementarias. La retropropagación calcula el gradiente, es decir, la dirección y magnitud del cambio que reduce el error para cada peso. El descenso de gradiente es quien usa ese gradiente para actualizar los pesos dando un pequeño paso. Uno calcula la señal y el otro la aplica; juntos forman el bucle de entrenamiento.

¿Por qué se llama propagación hacia atrás?

Porque la señal de error viaja en sentido inverso al de la predicción. Durante la propagación hacia delante los datos entran por la primera capa y salen por la última. Durante la retropropagación, la culpa del error parte de la última capa y retrocede hacia la primera, reutilizando los mismos pesos pero traspuestos para repartir la responsabilidad.

¿Necesito saber cálculo para entenderla?

Basta con la idea de derivada como tasa de cambio y con la regla de la cadena. No hace falta resolver integrales complicadas: la retropropagación solo multiplica y suma derivadas locales sencillas, capa por capa.

Conclusión

La retropropagación deja de ser magia cuando la ves como lo que es: un reparto ordenado de la culpa del error entre todos los pesos. La señal δ viaja hacia atrás, se multiplica por los pesos traspuestos y por la derivada de la activación, y en una sola pasada entrega el gradiente completo. Esa eficiencia es la que sostiene todo el aprendizaje profundo moderno. El siguiente paso natural es ver dónde encaja esta pieza en el mapa de las matemáticas de las redes neuronales y, después, abordar la derivación formal.

Fuentes

  1. «Learning representations by back-propagating errors»
  2. libro de referencia de Goodfellow, Bengio y Courville
  3. Neural Networks and Deep Learning (Michael Nielsen)
  4. Propagación hacia atrás (Wikipedia)

Ruta: Entrenamiento: descenso de gradiente y retropropagación