🧮 Computational Mathematics

Inicio · Parte 15 — Matemática de Deep Learning

305 — Backpropagation paso a paso

deep-learning clase 5 de 20 4 horas demostración backpropagation

Backpropagation es la regla de la cadena recorrida hacia atrás, y se puede seguir con números.

Fórmulas

forward: z = Wx + b,  a = σ(z)
backward: dL/dW = dL/dz · xᵀ
con cross-entropy y sigmoide: dL/dz = a − y

Desarrollo

Backpropagation no es un algoritmo aparte: es la regla de la cadena de la clase 147 aplicada sistemáticamente al grafo de la red, recorriendo los nodos en orden topológico inverso. Su valor es de eficiencia, no de concepto: calcula todos los gradientes en una sola pasada hacia atrás.

El procedimiento tiene dos fases. En el paso hacia adelante se calculan las salidas capa a capa y se guardan los valores intermedios, que harán falta después; ese almacenamiento es la razón de que la memoria de entrenamiento crezca con la profundidad. En el paso hacia atrás se propaga la derivada de la pérdida desde la salida hasta los parámetros.

Hay una simplificación algebraica que conviene ver una vez con detalle. Al combinar entropía cruzada con sigmoide en la salida, el gradiente respecto de la preactivación se reduce a a − y: la derivada de la sigmoide se cancela exactamente contra el denominador de la pérdida. Esa cancelación es la que evita los gradientes saturados de la clase 286, y es la razón técnica de emparejar esas dos funciones.

Recorrer los números a mano una vez, como hace este ejemplo, vale más que leer la demostración diez veces. Después conviene no volver a implementarlo: la autodiferenciación de la clase 319 hace exactamente esto sin errores de signo ni de transposición.

Ejemplo trabajado

Backpropagation completo sobre una red 2-2-1.

entrada: (0,5 ; −1,2)      objetivo: 1,0

FORWARD
  z1 = (1,09 ; 0,01)
  a1 = (0,796878 ; 0,01)        tras la activación
  z2 = 0,524127
  a2 = 0,628xxx                 salida sigmoide

BACKWARD
  dL/da2 = −1,592072
  dL/dz2 = a2 − y = −0,371888   ← la sigmoide se canceló
  dL/dW2 = dL/dz2 · a1ᵀ
         = (−0,296349 ; −0,003719)

El segundo peso recibe un gradiente 80 veces menor
porque su activación a1 vale solo 0,01.

Qué calcula el laboratorio

Backpropagation paso a paso sobre una red 2-2-1.

python classes/part-15-matematica-de-deep-learning/305-backpropagation-paso-a-paso/lab.py
compmath run 305

Salidas del laboratorio (13)

Muestra de la ejecución real

{
  "entrada": [
    0.5,
    -1.2
  ],
  "objetivo": 1.0,
  "forward": {
    "z1": [
      1.09,
      0.01
    ],
    "a1": [
      0.796878,
      0.01
    ],
    "z2": 0.524127,
    "a2": 0.628112,
    "perdida": 0.465036
  },
  "dL/da2": -1.592072,
  "dL/dz2_simplificado": -0.371888,
  "dL/dW2": [
    -0.296349,
    -0.003719
  ]
}

Errores comunes

Dónde se usa

Entrenamiento de cualquier red, comprensión de los frameworks, depuración de gradientes y diseño de capas personalizadas.

Idea rectora de la parte

El gradiente que se desvanece es un producto de derivadas menores que uno.

Error a evitar

Aplicar softmax sin restar el máximo y provocar overflow.

Conexión con IA

Toda arquitectura moderna, incluido el Transformer, se construye sobre estos bloques y sobre este mismo mecanismo de derivación.

Bibliografía de la clase

Archivos de la clase