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.

Recuerda de las lecciones anteriores: una neurona calcula z = w₁x₁ + w₂x₂ + b (suma ponderada), y luego aplica la función de activación σ para obtener a. Con h₁ y entrada (1,0): z = 0.10, a = σ(0.10) = 0.5250. Hoy ponemos varias neuronas juntas en una capa.

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]. Los corchetes [...] con números separados por coma son la forma de escribir un vector — simplemente una lista ordenada de números, como una fila de una tabla. ¿Te suena ese resultado? 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. La regla es: el vector de entrada multiplica cada columna de la matriz, y cada resultado es la z de una neurona. Es decir: cada neurona es una fila del cálculo matricial. En el cálculo que sigue, z₁ viene de multiplicar la entrada por la columna 1 de W, y z₂ por la columna 2:

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. Lo que aprendiste

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₂)
Lo que aprendiste hoy: una capa = activación(x · W + b). Varias neuronas en paralelo se computan de golpe como una multiplicación matricial: el vector de entrada x se multiplica por la matriz W (cuyos vectores-columna son los pesos de cada neurona) y se añade el bias b. Con entrada (1,0), la capa oculta de XOR produce a = [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.