TI / NEURAL LAB / SYSTEM 01.04

Una red neuronal
aprende.

Un laboratorio para mirar el aprendizaje desde adentro: datos, pesos, error, backpropagation y experimentos reproducibles.

MODE: XORARCH: 2 → 4 → 1ENGINE: PYTHONSTATUS: READY
Ruta de aprendizaje · 0 → 10
0 Datos1 Neurona2 Pesos3 Forward4 Error5 Backprop6 Épocas7 Parámetros8 Experimentos9 Código10 Red neuronal

01 · ¿Qué es XOR?

XOR da 1 si las entradas son diferentes y 0 si son iguales.

00
0 XOR 0
0
iguales
01
0 XOR 1
1
diferentes
10
1 XOR 0
1
diferentes
11
1 XOR 1
0
iguales

02 · ¿Por qué una neurona no alcanza?

Una neurona simple combina entradas con pesos y puede separar ciertos patrones con una línea. XOR no puede resolverse así. Necesitamos varias neuronas que trabajen juntas.

Neurona

Entradas → pesos + bias → activación → salida.

Capa oculta

Varias neuronas detectan partes del problema.

Red neuronal

Las señales se combinan para producir una salida.

Aprendizaje

Los pesos se ajustan para reducir el error.

03 · Nuestra red

2 entradas → 4 neuronas ocultas → 1 salida. Los pesos comienzan al azar.

x₁
x₂
h₁
h₂
h₃
h₄
h₅
h₆
y
LIVE EPOCH—
LOSS—
GRADIENT—
NETWORK2·4·1
W1 · ENTRADAS → HIDDENesperando pesos
W2 · HIDDEN → SALIDAesperando pesos
Parámetros
Experimento A: al terminar podés cambiar un parámetro y volver a entrenar para crear B.
Listo para aprender

La red todavía no modificó sus pesos.

04 · ¿Qué está procesando?

Ahora cada etapa se muestra mientras el entrenamiento real ocurre en el servidor.

1 · Datos
2 · Forward
3 · Error
4 · Backprop
5 · Repite
El ciclo de aprendizaje
La red recibe un ejemplo y comienza a calcular.
DATOS → FORWARD → PREDICCIÓN → ERROR → BACKPROP → PESOS → REPITE
Esperado—
Predicción—
Error—
El error durante el entrenamiento—
━━ A · todavía sin entrenar┄┄ B · todavía sin entrenar
Error altoÉpocas →Error bajo
Entrená A para ver cómo cambia el error vuelta a vuelta.

05 · Resultados: ¿aprendió o no?

Una salida cercana a 0 significa “diferentes” no; en XOR significa que la red cree que las entradas son iguales. Una salida cercana a 1 significa que cree que son diferentes. Usamos 0.5 como frontera para convertir el número en una respuesta 0/1.

Esperando entrenamiento A.
¿Qué tenés que mirar?
1. ¿Las cuatro predicciones están del lado correcto de 0.5?
2. ¿El error final es pequeño?
3. ¿La curva de error bajó mientras entrenaba?

06 · Cambiá una variable

El primer entrenamiento queda guardado como A. Cuando termine, el botón se habilita otra vez: cambiá un parámetro, por ejemplo de 4 a 6 neuronas, y tocá Crear experimento B. Mientras entrena B, el botón queda deshabilitado; al terminar vuelve a habilitarse y aparece la comparación A vs. B.

Experimento A
esperando

Primer entrenamiento.

Experimento B
esperando

Segundo entrenamiento.

07 · De cero: ¿qué hace una neurona?

Antes de mirar código complejo, pensemos en una neurona como una pequeña calculadora. Recibe entradas, las multiplica por pesos, suma un bias y pasa el resultado por una función de activación.

Nivel 1 · La idea
entrada → peso → suma → activación → salida

Los pesos dicen cuánto influye cada entrada. El bias permite desplazar la decisión.

Nivel 2 · La fórmula
z = x₁·w₁ + x₂·w₂ + b
y = sigmoid(z)

Primero calculamos z. Después sigmoid transforma z en un número entre 0 y 1.

Nivel 3 · Python
def neurona(x1, x2, w1, w2, b):
    z = x1*w1 + x2*w2 + b
    return sigmoid(z)

Esto ya es una neurona real, escrita de forma sencilla.

+ Ver más código: la función sigmoid
def sigmoid(x):
    return 1 / (1 + exp(-x))

Si z es muy negativo, la salida se acerca a 0. Si es muy positivo, se acerca a 1.

08 · ¿Cómo funciona una red neuronal?

Una red conecta muchas neuronas. En nuestro caso, las dos entradas pasan por una capa oculta y después llegan a la salida.

① Entrada

Recibimos x₁ y x₂. En XOR son 0 o 1.

② Forward

La información avanza por la red y produce una predicción.

③ Error

Comparamos la predicción con la respuesta correcta.

④ Ajuste

Usamos el error para modificar los pesos.

+ Ver el código del forward
h = []
for j in range(hidden):
    z = W1[j][0]*x1 + W1[j][1]*x2 + b1[j]
    h.append(sigmoid(z))

z_out = sum(W2[j]*h[j] for j in range(hidden)) + b2
y = sigmoid(z_out)

La capa oculta calcula sus activaciones h₁, h₂, h₃... y la salida combina esas activaciones.

09 · ¿Cómo aprende? Forward → error → backpropagation

Esta es la parte fundamental. La red no “sabe” XOR al principio. Comienza con pesos que no son buenos y aprende repitiendo el proceso.

1 · Forward
Hace una predicción.
2 · Error
Mide cuánto se equivocó.
3 · Backprop
Calcula cómo influyó cada peso.
4 · Ajuste
Cambia los pesos.
5 · Repite
Vuelve a intentarlo.

¿Qué es backpropagation?

Backpropagation significa propagar el error hacia atrás. Si la salida fue incorrecta, calculamos qué pesos contribuyeron a ese error y en qué dirección conviene modificarlos.

Una forma simplificada de verlo es:

nuevo_peso = peso - aprendizaje × gradiente

El gradiente indica la dirección del cambio. La velocidad de aprendizaje indica cuánto nos movemos en esa dirección.

+ Ver más código: actualización de pesos
go = 2 * (salida - esperada) * salida * (1 - salida)

for j in range(hidden):
    W2[j] -= learning_rate * go * h[j]

b2 -= learning_rate * go

Esta versión corresponde al gradiente de la función de error cuadrático usada por este laboratorio.

10 · ¿Qué significa una época?

Una época es una vuelta completa por los ejemplos de entrenamiento. En XOR tenemos cuatro ejemplos: 00, 01, 10 y 11.

Pocas épocas

La red todavía puede estar aprendiendo y cometer errores.

Más épocas

Tiene más oportunidades de ajustar sus pesos.

Demasiadas o mal elegidas

Más entrenamiento no siempre significa mejor aprendizaje.

+ Ver el bucle de entrenamiento completo
for epoch in range(epochs):
    for x, esperado in datos:
        salida = forward(x)
        error = salida - esperado
        backpropagate(error)
        update_weights()

El laboratorio ejecuta esta idea miles de veces. La curva de error permite observar si el aprendizaje está funcionando.

11 · Tu desafío: experimentar

No hay que memorizar el código: hay que aprender a leerlo.

Primero ejecutá A. Después cambiá una sola variable: velocidad de aprendizaje, cantidad de neuronas o épocas. Ejecutá B y compará. Preguntate: ¿qué cambió?, ¿por qué?, ¿mejoró o empeoró?

12 · Mapa mental de una red neuronal

DATOS
↓
ENTRADAS (x₁, x₂)
↓
PESOS + BIAS
↓
CAPA OCULTA
↓
ACTIVACIÓN
↓
SALIDA / PREDICCIÓN
↓
COMPARAR CON LA RESPUESTA
↓
ERROR
↓
BACKPROPAGATION
↓
AJUSTAR PESOS
↓
REPETIR

Ese ciclo es la idea central detrás del entrenamiento de muchas redes neuronales.

13 · Conclusión

De cero a entender una red: una red neuronal transforma datos en una predicción. Durante el entrenamiento compara esa predicción con la respuesta correcta, calcula el error y ajusta sus pesos mediante backpropagation. Repite el ciclo hasta encontrar parámetros que produzcan buenas predicciones.

Ahora el laboratorio te deja hacer algo más importante que leer teoría: comprobarlo.