Neural Network Training Labs
Laboratorio 16 · Central · 17 / 31

∂ Backpropagation manual

Backpropagation manual

Objetivo

Derivar y programar backpropagation en una MLP pequeña.

Dataset real

150 mediciones botánicas reales de tres especies de Iris.

Fundamento matemático

Regla de la cadena para W2, b2, W1 y b1.

Protocolo experimental

  1. Descargar y verificar la procedencia.
  2. Conservar o crear una partición reproducible.
  3. Ajustar transformaciones únicamente con train.
  4. Seleccionar modelo e hiperparámetros usando validation.
  5. Evaluar test una sola vez tras congelar la decisión.
  6. Comparar con la línea base: Regresión logística multinomial.
  7. Guardar configuración, entorno, métricas, predicciones, gráficos y modelo.

Ejecución

python labs/16_backpropagation_manual/train.py --quick
python labs/16_backpropagation_manual/train.py --config improved

Preparar únicamente el dataset:

python -m neural_labs.cli dataset --lab 16_backpropagation_manual

Inferencia y exportación:

neural-labs predict --lab 16_backpropagation_manual --run latest --input sample.json
neural-labs export --lab 16_backpropagation_manual --run latest --format onnx --verify

Métricas

accuracy, macro_f1.

Archivos

Ejercicios

Material formativo v3

Comandos profesionales

neural-labs quality --lab 16_backpropagation_manual --quick
neural-labs benchmark --lab 16_backpropagation_manual --quick --split-seed 42 --training-seeds 41 42 43
neural-labs leaderboard

Sellado del experimento

La partición se controla con split_seed; la inicialización y el entrenamiento con training_seed. El conjunto test se abre solamente después de seleccionar el checkpoint mediante validación y escribir experiment.lock.json.

🧠 Teoría

Teoría — Backpropagation manual

Propósito

Derivar y programar backpropagation en una MLP pequeña.

Idea central

Este laboratorio estudia backpropagation manual usando iris, un dataset público real procedente de UCI. El objetivo es abrir la caja negra: en lugar de llamar a loss.backward() y confiar en el autodiferenciador, se derivan a mano los gradientes de una perceptrón multicapa (MLP) de dos capas y se programan paso a paso. Entender este mecanismo es entender cómo aprenden de verdad las redes neuronales.

La retropropagación no es más que la regla de la cadena del cálculo aplicada con orden. Una red es una composición de funciones: entrada → capa 1 → activación → capa 2 → softmax → pérdida. Para saber cómo cambiar cada peso y reducir la pérdida, necesitamos la derivada de la pérdida respecto a ese peso. La regla de la cadena nos dice que esa derivada es un producto de derivadas locales encadenadas desde la salida hacia atrás. La idea brillante de backprop es reutilizar cálculos: se calcula una vez el "error" en cada capa y se propaga hacia la capa anterior, evitando recomputar el mismo camino muchas veces.

El flujo tiene dos fases. En el paso hacia adelante (forward) se calculan y se guardan las activaciones de cada capa. En el paso hacia atrás (backward) se parte del error en la salida y se lo empuja capa por capa hacia la entrada, acumulando en el camino los gradientes de pesos y sesgos. La pregunta crítica del laboratorio —dónde aparecen gradientes que explotan o desaparecen— se vuelve tangible al ver cómo cada capa multiplica el gradiente por factores que pueden encogerlo o amplificarlo.

Fundamento matemático

Consideremos una MLP con una capa oculta. Con entrada x, la propagación hacia adelante es:

z₁ = W₁ x + b₁, a₁ = σ(z₁), z₂ = W₂ a₁ + b₂, ŷ = softmax(z₂)

y la pérdida de entropía cruzada para la etiqueta one-hot y es ℒ = −Σₖ yₖ · log ŷₖ.

La retropropagación calcula ∂ℒ/∂W₂, ∂ℒ/∂b₂, ∂ℒ/∂W₁ y ∂ℒ/∂b₁ aplicando la regla de la cadena desde la salida. Definimos el error de la capa de salida; con softmax + entropía cruzada este error se simplifica de forma notable:

δ₂ = ∂ℒ/∂z₂ = ŷ − y

De ahí bajan directamente los gradientes de la segunda capa:

∂ℒ/∂W₂ = δ₂ · a₁ᵀ, ∂ℒ/∂b₂ = δ₂

El error se propaga a la capa oculta multiplicando por la matriz de pesos transpuesta y por la derivada de la activación, usando el producto de Hadamard ⊙ (elemento a elemento):

δ₁ = (W₂ᵀ δ₂) ⊙ σ′(z₁)

∂ℒ/∂W₁ = δ₁ · xᵀ, ∂ℒ/∂b₁ = δ₁

Finalmente, todos los parámetros se actualizan con descenso de gradiente: W ← W − η · ∂ℒ/∂W y b ← b − η · ∂ℒ/∂b, con η la tasa de aprendizaje.

Aquí se ven los gradientes que se desvanecen o explotan. El término δ₁ contiene el producto W₂ᵀ δ₂ ⊙ σ′(z₁): si σ es una sigmoide o tanh saturada, σ′(z₁) ≈ 0 y el gradiente se apaga (vanishing); si los pesos son grandes, los factores se acumulan y el gradiente crece sin control (exploding). En una red de L capas, este patrón se repite L veces, así que el gradiente en las capas iniciales es un producto de L factores y su magnitud depende críticamente de que esos factores ronden 1. Comprobar los gradientes analíticos contra una estimación numérica (∂ℒ/∂θ ≈ [ℒ(θ+ε) − ℒ(θ−ε)] / 2ε) es la prueba de que la derivación es correcta. La formulación conecta cuatro elementos: representación de entrada x, función del modelo (MLP), función de pérdida (entropía cruzada) y regla de actualización (SGD con ∇). El notebook muestra las dimensiones de los tensores y conserva la misma implementación que el script de terminal.

Protocolo científico

Riesgos de interpretación

150 mediciones botánicas reales de tres especies de Iris.

El dataset refleja su proceso de recolección y no representa automáticamente otros períodos, países o poblaciones. Una asociación predictiva no demuestra causalidad.

Pregunta crítica

¿Dónde aparecen gradientes que explotan o desaparecen?

🔗 Referencias

Las referencias apuntan a las obras; no se reproduce su contenido, la redacción es original.

🔬 Experimentos

Plan de experimentos — Backpropagation manual

Hipótesis principal

Derivar y programar backpropagation en una MLP pequeña. La hipótesis debe aceptarse o rechazarse comparando el modelo con Regresión logística multinomial y no solo observando que la pérdida disminuye.

Experimento mínimo

  1. Ejecutar baseline.yaml con tres semillas.
  2. Ejecutar improved.yaml con las mismas semillas.
  3. Mantener fija la partición de datos dentro de cada semilla.
  4. Elegir la variante con validation.
  5. Comparar la variante elegida contra la línea base en test.
  6. Revisar intervalos de confianza, errores y costo computacional.

Experimento específico

Validar derivadas capa por capa.

Variables controladas

Tabla que debe completarse

Variante Semilla Métrica validation Métrica test Tiempo Parámetros Observación
baseline 41
baseline 42
baseline 43
improved 41
improved 42
improved 43

Criterio de conclusión

La conclusión debe declarar magnitud de la mejora, incertidumbre, costo adicional, errores relevantes y condiciones bajo las cuales el resultado podría no repetirse.

📝 Evaluación

Evaluación — Backpropagation manual

Evidencias obligatorias

Preguntas

  1. Explique con sus palabras: Regla de la cadena para W2, b2, W1 y b1.
  2. ¿Qué información del dataset solo puede utilizarse durante entrenamiento?
  3. ¿Por qué la línea base Regresión logística multinomial es una comparación razonable?
  4. ¿Dónde aparecen gradientes que explotan o desaparecen?
  5. ¿Qué cambiaría antes de usar este modelo fuera del laboratorio?

Rúbrica

Criterio Insuficiente Adecuado Excelente Peso
Integridad de datos mezcla particiones separación correcta auditoría, hashes y justificación 20%
Implementación no ejecuta entrena y evalúa código claro, reusable y probado 20%
Diseño experimental resultado aislado comparación controlada multi-semilla e incertidumbre 20%
Análisis repite métricas interpreta errores identifica sesgos, límites y costo 25%
Comunicación incompleta reporte entendible model card y conclusiones verificables 15%

La aprobación exige al menos 70% y cero errores críticos de fuga de datos.