LECCIÓN 4

Red multicapa (MLP)

Conectamos capas. Aquí ves el "forward pass": el viaje completo de los datos desde la entrada hasta la predicción, número por número, sin saltarnos nada.

1. La arquitectura: 2 → 2 → 1

Para resolver XOR usamos una red diminuta de tres capas:

entrada
x₁
x₂
→ W₁ →
oculta
h₁
h₂
→ W₂ →
salida
ŷ

"MLP" = Multi-Layer Perceptron, el nombre clásico de esta arquitectura totalmente conectada.

2. Todos los pesos de la red (los de todo el curso)

Capa oculta (W₁, b₁):
  h₁:  w=[0.20, 0.40]   b=-0.10
  h₂:  w=[-0.30, 0.10]  b=0.20

Capa de salida (W₂, b₂):
  ŷ:   w=[0.50, -0.40]  b=0.10
       (un peso por cada neurona oculta: a₁ y a₂)

3. Forward pass completo para x = (1, 0)

Vamos a seguir el dato sin saltarnos ni una sola operación. Lo dividimos en 4 micro-pasos: (A) suma de la capa oculta, (B) activación de la capa oculta, (C) suma de la salida, (D) activación de la salida.

Micro-paso A — suma ponderada de la capa oculta (z₁)

Cada neurona oculta multiplica las entradas por sus pesos y suma el bias. Una operación a la vez:

Neurona h₁ — sus pesos son [0.20, 0.40], bias -0.10:
  producto de x₁:  x₁ · w = 1 · 0.20  = 0.20
  producto de x₂:  x₂ · w = 0 · 0.40  = 0.00
  sumo los productos:      0.20 + 0.00      = 0.20
  sumo el bias:            0.20 + (-0.10)  = 0.10   ← z₁ de h₁

Neurona h₂ — sus pesos son [-0.30, 0.10], bias 0.20:
  producto de x₁:  x₁ · w = 1 · -0.30 = -0.30
  producto de x₂:  x₂ · w = 0 · 0.10  = 0.00
  sumo los productos:      -0.30 + 0.00     = -0.30
  sumo el bias:            -0.30 + (0.20)  = -0.10  ← z₁ de h₂

  z₁ = [0.10, -0.10]

Micro-paso B — activación de la capa oculta (a₁)

Aplicamos la sigmoid a cada componente de z₁, y la sigmoid también la desarmamos paso a paso:

σ(z) = 1 / (1 + e^(-z))

Para z = 0.10 (neurona h₁):
  -z          = -0.10
  e^(-z)      = e^(-0.10) = 0.904837
  1 + e^(-z)  = 1 + 0.904837 = 1.904837
  1 / (...)   = 1 / 1.904837 = 0.524979   ← a₁ de h₁

Para z = -0.10 (neurona h₂):
  -z          = 0.10
  e^(-z)      = e^(0.10) = 1.105171
  1 + e^(-z)  = 1 + 1.105171 = 2.105171
  1 / (...)   = 1 / 2.105171 = 0.475021   ← a₁ de h₂

  a₁ = [0.524979, 0.475021]

Micro-paso C — suma ponderada de la salida (z₂)

La neurona de salida toma a₁ como entrada. Sus pesos son [0.50, -0.40] y bias 0.10:

  producto de a₁:  0.524979 · 0.50  = 0.262489
  producto de a₂:  0.475021 · -0.40 = -0.190008
  sumo los productos:     0.262489 + (-0.190008) = 0.072481
  sumo el bias:           0.072481 + 0.10        = 0.172481   ← z₂

Micro-paso D — activación de la salida (ŷ)

Una última sigmoid, otra vez desarmada:

Para z = 0.172481:
  -z          = -0.172481
  e^(-z)      = e^(-0.172481) = 0.841574
  1 + e^(-z)  = 1 + 0.841574 = 1.841574
  1 / (...)   = 1 / 1.841574 = 0.543014

  ŷ = a₂ = 0.543014

Resumen en tabla: cada cálculo, neurona por neurona

Los mismos 4 micro-pasos, ahora condensados en una tabla que se lee de izquierda a derecha. Fíjate cómo la salida de la capa oculta (a₁, a₂) se convierte en la entrada de la neurona de salida — así es como una neurona "se conecta" con las otras:

CapaNeurona ① productos (entrada · peso) ② Σ ③ + bias = z ④ σ(z) = a
oculta h₁ x₁·w = 1 · 0.20 = 0.2000
x₂·w = 0 · 0.40 = 0.0000
0.2000 + (-0.10) = 0.1000 0.524979
h₂ x₁·w = 1 · -0.30 = -0.3000
x₂·w = 0 · 0.10 = 0.0000
-0.3000 + (0.20) = -0.1000 0.475021
salida ŷ a₁·w = 0.524979 · 0.50 = 0.262489
a₂·w = 0.475021 · -0.40 = -0.190008
0.072481 + (0.10) = 0.172481 0.543014
🔗 El enlace entre capas: mira la fila de la salida (ŷ). Sus "entradas" ya no son x₁, x₂, sino a₁ = 0.524979 y a₂ = 0.475021 — justo los resultados de la columna ④ de las neuronas ocultas. La salida de una capa es la entrada de la siguiente. Eso es lo que significa que las neuronas estén "conectadas".
La red predice ŷ = 0.543 para la entrada (1, 0). El target correcto de XOR es 1. O sea: está apenas por encima de 0.5, casi indecisa. Normal: la red todavía no ha aprendido nada, los pesos son inventados. Aprender = ajustar esos pesos para que ŷ se acerque a 1. Eso empieza en la lección 5.

4. La red entera, de un vistazo (los 4 casos de XOR)

Aplicando el mismo forward pass a las cuatro entradas posibles:

x₁x₂XOR (target)z₁ (oculta)a₁ŷ (predicción)
000[−0.10, 0.20][0.4750, 0.5498]0.5294
011[0.30, 0.30][0.5744, 0.5744]0.5393
101[0.10, −0.10][0.5250, 0.4750]0.5430
110[0.50, 0.00][0.6225, 0.5000]0.5526
⚠️ Mira la última columna: las cuatro predicciones rondan 0.5, sin distinguir los 0 de los 1. La red sin entrenar es inútil — pero la estructura ya está lista. Solo faltan los pesos correctos.

🎮 Elige una entrada y observa el flujo

5. ¿Por qué necesitamos la capa oculta?

XOR es el ejemplo legendario porque no se puede resolver con una sola neurona. Una neurona dibuja una sola línea recta para separar los puntos, pero XOR (0,1,1,0) no es separable con una línea: necesitas doblar el espacio. La capa oculta + la activación no-lineal es justo lo que permite ese doblez. Por eso una red "profunda" puede aprender cosas que una "plana" jamás podría.

Ya tienes el forward pass. Pero la red predice mal. En la lección 5 aprenderemos a medir cuán mal (la función de pérdida), que es el primer paso para corregirla.