LECCIÓN 3

De neurona a capa

Una neurona sola es débil. La magia aparece cuando pones varias en paralelo. Y al hacerlo, la suma ponderada se convierte en una multiplicación de matrices — la misma que viste en el Transformer.

1. Una capa = varias neuronas mirando lo mismo

Una capa es simplemente un grupo de neuronas en paralelo. Todas reciben las mismas entradas, pero cada una tiene sus propios pesos y bias, así que cada una calcula algo distinto.

Nuestra red XOR tiene una capa oculta de 2 neuronas: h₁ (la de la lección 1) y una segunda, h₂. Ambas ven la entrada (x₁, x₂):

Neurona h₁:  w = [0.20, 0.40]   b = -0.10
Neurona h₂:  w = [-0.30, 0.10]  b = 0.20

Visto como un grafo: cada entrada se conecta con cada neurona, y cada conexión tiene su propio peso. Por eso hay 4 conexiones (2 entradas × 2 neuronas):

w=0.20 w=0.40 w=-0.30 w=0.10 x₁ x₂ h₁ b = -0.10 h₂ b = 0.20 entradas capa oculta
━ conexiones que entran a h₁    ━ conexiones que entran a h₂

Fíjate: x₁ y x₂ llegan a ambas neuronas, pero por caminos con pesos distintos. Esa red de conexiones con pesos es, literalmente, lo que guarda una capa.

2. Calculemos las dos, para x = (1, 0)

Cada neurona hace su propia suma ponderada (lección 1):

Neurona h₁ (pesos [0.20, 0.40], bias -0.10):
  x₁ · w :  1 · 0.20  = 0.20
  x₂ · w :  0 · 0.40  = 0.00
  sumo:     0.20 + 0.00      = 0.20
  + bias:   0.20 + (-0.10)   = 0.10

Neurona h₂ (pesos [-0.30, 0.10], bias 0.20):
  x₁ · w :  1 · -0.30 = -0.30
  x₂ · w :  0 · 0.10  = 0.00
  sumo:     -0.30 + 0.00     = -0.30
  + bias:   -0.30 + (0.20)   = -0.10

Juntando las dos salidas en un vector: z = [0.10, −0.10]. ¿Te suena? Es justo lo que anticipamos.

3. El truco: esas dos sumas SON una multiplicación de matrices

En vez de calcular h₁ y h₂ por separado, podemos apilar sus pesos en una matriz W (una columna por neurona) y hacerlo todo de un golpe:

x = [x₁, x₂] × W =
0.20-0.30
0.400.10
+ b = [-0.10, 0.20]

columna 1 = pesos de h₁  |  columna 2 = pesos de h₂

z = x · W + b
z = [1, 0] · W + b

z₁ = (1·0.20) + (0·0.40) + (-0.10) = 0.10   ← h₁
z₂ = (1·-0.30) + (0·0.10) + (0.20) = -0.10  ← h₂

z = [0.10, -0.10]
Esta es LA idea de la lección. "Una capa de neuronas" y "una multiplicación matriz·vector más un bias" son exactamente lo mismo. Por eso las redes se escriben con matrices: es la forma compacta y rápida (en GPU) de hacer muchas sumas ponderadas a la vez. Es la misma operación x @ W que viste en Q, K, V del Transformer.

4. Y luego, la activación (elemento a elemento)

Tras la suma matricial aplicamos la activación a cada componente del vector (lección 2):

σ(z) = 1 / (1 + e^(-z)). La aplicamos a cada componente:

Componente 1, z = 0.10:
  -z         = -0.10
  e^(-z)     = 0.904837
  1 + e^(-z) = 1.904837
  1 / (...)  = 0.524979

Componente 2, z = -0.10:
  -z         = 0.10
  e^(-z)     = 1.105171
  1 + e^(-z) = 2.105171
  1 / (...)  = 0.475021

  a = [0.524979, 0.475021]

Ese vector a es la salida completa de la capa oculta para la entrada (1, 0). Será la entrada de la capa de salida, que arma la predicción final.

El mismo cálculo, ahora como grafo de flujo con los valores reales corriendo por las conexiones:

0.20 0.40 -0.30 0.10 x₁ =1 x₂ =0 z=0.10 → σ → a₁=0.5250 z=-0.10 → σ → a₂=0.4750 entrada (1,0) suma ponderada + bias, luego activación

Sigue un número: x₁=1 entra a h₁ multiplicado por 0.20, x₂=0 entra por 0.40 (pero aporta 0). Sumado al bias da z=0.10, y la sigmoid lo convierte en a₁=0.5250. Lo mismo, en paralelo, para h₂.

5. La receta de una capa (memorízala)

entrada× W+ bactivaciónsalida

PiezaForma en nuestra capa oculta
Entrada xvector de 2 (x₁, x₂)
Matriz W2 × 2 (2 entradas → 2 neuronas)
Bias bvector de 2 (uno por neurona)
Salida avector de 2 (a₁, a₂)
Resumen: una capa = activación(x · W + b). Con (1,0) la capa oculta de XOR devuelve [0.5250, 0.4750]. En la lección 4 conectamos esta capa con la de salida y hacemos el forward pass completo de la red.