Skip to content

English · Español

Lab 03 — Análisis de calibración sobre un clasificador de juguete

Lee theory/03-cross-entropy-and-mle.md. No consultes solutions/.

Objetivo

Construir un clasificador minúsculo sobre los 5 tiempos y luego medir su calibración — ¿la confianza expresada coincide con su precisión empírica? Esto enlaza con la Fase 20 (evaluation harness) donde la calibración se vuelve una métrica de primer orden para el mini-GPT.

Configuración

Continúa en src/phase05/probability.py y un nuevo src/phase05/toy_classifier.py.

Antecedentes

Un modelo que siempre predice "pasado con 80% de confianza" y acierta realmente el 80% de las veces está calibrado. Un modelo que predice 80% de confianza pero acierta el 95% de las veces es infraconfiado; uno que acierta el 50% de las veces es sobreconfiado. Las redes neuronales son notoriamente sobreconfiadas — este lab te mete la intuición en las manos.

El error de calibración esperado (ECE) para \(M\) bins:

\[\text{ECE} = \sum_{m=1}^{M} \frac{|B_m|}{N} \big| \text{acc}(B_m) - \text{conf}(B_m) \big|,\]

donde \(B_m\) es el conjunto de predicciones en el bin de confianza \(m\), \(\text{acc}(B_m)\) es la precisión empírica en ese bin y \(\text{conf}(B_m)\) es la confianza media.

Tareas

Tarea 1 — construye el clasificador de juguete

Genera un dataset sintético de pares (entrada, tiempo). Las entradas son vectores de características de 8 dimensiones; las etiquetas de tiempo se extraen de una gaussiana condicional a la clase (5 clases, separación modesta). 5000 de entrenamiento, 1000 de test.

Entrena un clasificador de regresión logística (softmax de 5 vías). Usa NumPy + SGD; nada de PyTorch. (Esto es un anticipo de la Fase 7 — abrázalo.)

Tarea 2 — mide precisión cruda y calibración

Para el conjunto de test:

  1. Precisión. Predicción por argmax vs etiqueta verdadera.
  2. Confianza por predicción. \(\max_i q_i(x)\).
  3. Bin en 10 bins de ancho igual en confianza ∈ [0, 1].
  4. Por bin: precisión vs confianza media.
  5. Calcula ECE.

Tarea 3 — diagrama de fiabilidad

Dibuja: eje x = punto medio del bin (confianza), eje y = precisión en ese bin. La línea de 45° es calibración perfecta. Barras por encima de la diagonal = infraconfiado; barras por debajo = sobreconfiado.

Guarda como experiments/<date>-phase-05-calibration/reliability.png.

Tarea 4 — escalado por temperatura para calibración

Vuelve a ajustar un único parámetro escalar \(T\) que divide los logits antes del softmax: \(q_i = \text{softmax}(z / T)_i\). Optimiza \(T\) sobre un split de validación retenido para minimizar la entropía cruzada de validación. Luego vuelve a medir ECE en el conjunto de test.

Esperado: el ECE cae sustancialmente. Este es el contenido entero de Guo et al. 2017 ("On Calibration of Modern Neural Networks"), recapitulado por Borja sobre un juguete.

Tarea 5 — diagnostica

¿Dónde se sitúa tu clasificador antes del escalado? ¿Sobreconfiado, infraconfiado o aproximadamente calibrado? ¿Por qué ocurre esto? (Pista: la minimización de entropía cruzada sobre datos finitos tiende a empujar las confianzas demasiado arriba.)

Mediciones a capturar

  • ECE antes y después del escalado por temperatura.
  • Diagramas de fiabilidad: antes y después.
  • \(T^*\) óptimo — típicamente \(T^* > 1\) para modelos sobreconfiados.
  • Manifest en experiments/<date>-phase-05-calibration/manifest.json.

Aceptación

  • Clasificador de juguete entrenado; precisión de test razonable (≥ 70%).
  • ECE calculado; diagrama de fiabilidad guardado.
  • Escalado por temperatura implementado y aplicado.
  • El ECE post-escalado es estrictamente menor que el ECE pre-escalado (o documenta el caso raro en que no lo sea).
  • Diagnóstico escrito: 2-3 párrafos en tus notas de lab.

Escollos esperados

  • Bins vacíos. Con 1000 puntos de test y 10 bins, algunos bins pueden tener 0 predicciones; su contribución al ECE es 0 por convención.
  • La elección de \(M\) (número de bins) afecta al ECE — demasiado pocos oculta errores, demasiado muchos es ruidoso. \(M = 10\) o \(M = 15\) son estándar.
  • El escalado por temperatura minimiza CE, no ECE directamente. Están correlacionados pero no son idénticos. Que minimizar CE sobre un split retenido ayude al ECE no es obvio y es el remate del lab.
  • No mezcles entrenamiento y validación para el ajuste de temperatura — eso es fuga.

Siguiente: Fase 06 — Python para ingeniería de IA (después de /quiz 05 y /phase-report 05).