LECCIÓN 8

Entrenamiento a mano

Juntamos todo: forward, pérdida, backprop y actualización forman UN ciclo. Repetirlo miles de veces es, literalmente, entrenar. Y veremos a XOR aprender de verdad.

1. El ciclo de entrenamiento

Una "época" de entrenamiento es repetir estos cuatro pasos (ya los conoces todos):

1. Forward → ŷ 2. Pérdida L 3. Backward → gradientes 4. Actualizar pesos ↺ y otra vez, miles de veces

2. Una actualización concreta (con los gradientes de la lección 7)

Tomamos los gradientes que calculamos para x = (1, 0) y aplicamos la regla w = w − lr·gradiente con learning rate 0.5. Veamos los pesos de salida:

Regla: w_nuevo = w - lr·gradiente   (lr = 0.5). Lo hacemos en 2 pasos.

W₂ peso de a₁  (w=0.50, grad=-0.059533):
  lr·grad = 0.5 · (-0.059533) = -0.029767
  w - eso = 0.50 - (-0.029767)   = 0.529767

W₂ peso de a₂  (w=-0.40, grad=-0.053868):
  lr·grad = 0.5 · (-0.053868) = -0.026934
  w - eso = -0.40 - (-0.026934)  = -0.373066

b₂  (b=0.10, grad=-0.113401):
  lr·grad = 0.5 · (-0.113401) = -0.056701
  b - eso = 0.10 - (-0.056701)   = 0.156701

Y los pesos de entrada (recuerda: los de x₂ no cambian porque su gradiente era 0):

W₁ peso de x₁→h₁  (w=0.20, grad=-0.014140):
  lr·grad = 0.5 · (-0.014140) = -0.007070
  w - eso = 0.20 - (-0.007070)   = 0.207070

W₁ peso de x₁→h₂  (w=-0.30, grad=0.011312):
  lr·grad = 0.5 · (0.011312)  = 0.005656
  w - eso = -0.30 - 0.005656     = -0.305656

W₁ pesos de x₂  (grad=0, no cambian):
  0.40 → 0.40      0.10 → 0.10

b₁ de h₁  (b=-0.10, grad=-0.014140):
  -0.10 - 0.5·(-0.014140) = -0.10 - (-0.007070) = -0.092930
b₁ de h₂  (b=0.20, grad=0.011312):
   0.20 - 0.5·(0.011312)  =  0.20 - 0.005656    = 0.194344

¿Mejoró? Volvemos a hacer el forward con los pesos nuevos

             ŷ           pérdida L
ANTES:    0.543014     0.104418
DESPUÉS:  0.564765     0.094715   ← ŷ más cerca de 1, pérdida más baja ✅
Un solo paso movió la predicción de 0.543 a 0.565 (target = 1) y bajó la pérdida. Diminuto, pero en la dirección correcta. Entrenar es dar este pasito miles de veces, para los 4 ejemplos.

3. Miles de épocas: la red aprende XOR

Si repetimos el ciclo sobre los 4 ejemplos durante 20.000 épocas (promediando los gradientes de todos, lo que se llama batch), la pérdida total evoluciona así:

Época01.0005.00010.00020.000
Pérdida0.12580.12500.07440.00760.0004
🧗 Mira la meseta del principio. Durante ~1.000 épocas casi no baja (se queda en 0.125). Luego, de golpe, se desploma. Esto es típico de XOR: la red tarda en "descubrir" la estructura no-lineal, pero una vez que la encuentra, aprende rápido. Por eso entrenar a veces requiere paciencia (y mejores optimizadores — lo verás en la lección 10).

4. El resultado: una red que SÍ resuelve XOR

Tras el entrenamiento, las predicciones pasan de "todas ~0.5" a separar limpiamente 0 de 1:

xtargetŷ sin entrenarŷ entrenada
(0,0)00.52940.0310
(0,1)10.53930.9729
(1,0)10.54300.9725
(1,1)00.55260.0288
¡Lo logró! 0.03≈0, 0.97≈1. La red aprendió XOR solo ajustando pesos con descenso de gradiente. Nadie le programó la regla; emergió de minimizar la pérdida. Ya entiendes el entrenamiento completo y a mano. Ahora toca hacerlo como en el mundo real: con PyTorch (lecciones 9 y 10).