English · Español
01 — Catálogo de métricas: qué mide cada una, qué no¶
🇪🇸 Cada métrica responde una pregunta distinta. Conocer la pregunta es lo que evita reportar accuracy alta sobre un test set leaked.
Perplejidad (PPL)¶
Pregunta que responde: ¿con qué precisión predice el modelo el siguiente token bajo la distribución de los datos?
Fórmula: \(\text{PPL} = \exp(\bar{\mathcal{L}}) = \exp(-\frac{1}{N}\sum_i \log p_\theta(y_i \mid x_{<i}))\) sobre un conjunto held-out.
Interpretación: el "factor de ramificación efectivo" sobre el que el modelo está incierto. PPL = 7 significa que el modelo, en promedio, está eligiendo entre 7 tokens siguientes equiprobables. Cuanto menor, mejor; cota inferior en 1 (predicción perfecta).
Fortaleza: barata, comparable entre runs, bien comprendida.
Debilidad: mide el proxy (loss CE), no la tarea de despliegue. Un modelo que predice bien artículos y pronombres pero falla al decidir "¿es correcto She work?" puede tener PPL baja.
Cuándo reportarla: siempre. La PPL es la lingua franca; todo informe de eval la incluye. Repórtala en los splits de train, val y test por separado. Reporta también la PPL desglosada por idioma (EN vs ES) — un modelo mucho peor en español tiene un déficit bilingüe real que el agregado ocultaría.
Cuándo NO tomar decisiones basadas sólo en PPL: cuando la tarea aguas abajo es clasificación, RAG o acción dirigida por agente. En esos casos, la PPL es un sanity check, no un veredicto.
Accuracy de clasificación por slice¶
Pregunta que responde: para cada slice gramatical — verbo, tiempo, persona, idioma, regularidad — ¿puede el modelo clasificar correctamente la forma verbal de una frase como correcta / incorrecta / ambigua?
Fórmula: \(\text{Acc}(s) = \frac{1}{|D_s|}\sum_{(x,y) \in D_s} \mathbb{1}[\hat y = y]\)
Donde \(D_s\) es el slice de probes que cumple el criterio de troceo \(s\). Las dimensiones de troceo usadas en la Fase 20:
- Por verbo (20 celdas):
work, play, walk, talk, listen, watch, study, finish, start, look, want, like, be, have, do, go, come, see, eat, write. - Por tiempo (5 celdas): infinitive, present simple, past simple, past participle, future (
will/going to). - Por persona (3 celdas): 1sg
I, 2sgyou, 3sghe/she/it. - Por idioma (2 celdas): EN, ES.
- Por regularidad (2 celdas): regular (12 verbos), irregular (8 verbos).
Interpretación: la accuracy por slice te dice qué combinaciones conoce el modelo y cuáles no. Los dos slices de mayor palanca son (a) regularidad (¿maneja el modelo las formas irregulares?) y (b) tiempo × persona (¿funciona la -s de 3sg en presente simple? ¿funciona el past-participle?).
Cómo se consulta al modelo para clasificar: el modelo es un modelo de lenguaje, no un clasificador. Para obtener una predicción de clase:
- Método de prompt restringido: anteponer un prompt fijo como
// Task: classify the grammaticality of the verb form below. Categories: CORRECT | INCORRECT | AMBIGUOUS.\nSentence: <text>\nClassification:, y luego muestrear el siguiente token del alfabeto restringido{CORRECT, INCORRECT, AMBIGUOUS}. El token con mayor probabilidad es la predicción. - Método de elección múltiple: para una frase con un hueco de forma verbal, puntuar cada candidato (p. ej.,
work / works / worked / working) por su verosimilitud condicional bajo el modelo; elegir argmax. - Confianza: la probabilidad softmax asignada a la clase predicha.
Fortaleza: directamente alineada con la tarea, granular por slice.
Debilidad: depende del formato de prompt. Si cambias el prompt a mitad de la evaluación, los resultados no son comparables. Fija el prompt en data/eval/probe_prompt.txt.
Cuándo reportarla: siempre. Las tablas por slice y las gráficas de barras son los paneles más leídos del informe de eval.
Accuracy de clasificación agregada¶
Pregunta que responde: en global, ¿qué fracción de probes clasifica correctamente el modelo?
Fórmula: \(\text{Acc} = \frac{1}{|D|}\sum_{(x,y) \in D} \mathbb{1}[\hat y = y]\) (sin troceo).
Interpretación: un solo número que resume el conjunto por slice.
Fortaleza: fácil de comparar entre runs.
Debilidad: oculta las disparidades entre slices. Un modelo con 90 % en EN-regular-presente y 30 % en ES-irregular-pasado tiene un agregado de ~70 % — número inútil. Reporta siempre junto a las tablas por slice y la matriz de confusión.
Cuándo reportarla: siempre, pero nunca sola.
Matriz de confusión¶
Pregunta que responde: cuando el modelo se equivoca, ¿qué confunde con qué?
Fórmula: una matriz 3×3 donde fila = etiqueta verdadera, columna = etiqueta predicha. Las entradas son recuentos. Clases: correct, incorrect, ambiguous.
Interpretación: la diagonal de la matriz son los aciertos; las entradas fuera de la diagonal revelan confusiones sistemáticas. Por ejemplo, si la entrada (true=correct, predicted=incorrect) es alta en el slice irregular, el modelo está sobreaplicando la regla regular -ed. Si la entrada (true=incorrect, predicted=correct) es alta en el slice wrong-person, el modelo no está imponiendo la -s de 3sg.
Fortaleza: muestra la dirección de los errores, no sólo su recuento.
Debilidad: no escala a muchas clases. Tres clases es cómodo; por verbo (20) o por (tiempo, persona) (15) sería ilegible. Usa tablas por slice en su lugar.
Cuándo reportarla: siempre. Embébela como tabla pequeña o PNG pequeño.
Pass@k (para sub-eval de generación)¶
Pregunta que responde: si el modelo genera \(k\) muestras completando un hueco de forma verbal, ¿cuál es la probabilidad de que al menos una sea la conjugación correcta?
Fórmula: un estimador insesgado a partir de \(n \ge k\) muestras con \(c\) correctas: $\(\widehat{\text{pass@}k} = 1 - \binom{n - c}{k} / \binom{n}{k}\)$
Para \(k=1\): \(\widehat{\text{pass@}1} = c/n\) (sólo accuracy). Para \(k=10\): probabilidad de que cualquiera de 10 muestras sea correcta.
Interpretación: a temperatura T=0.7, el rendimiento "best-of-k" del modelo. Se usa en la literatura de generación de código porque, para tareas generativas, ser correcto ocasionalmente sigue siendo útil.
Fortaleza: mide la capacidad diversa del modelo, no sólo su mejor conjetura individual.
Debilidad: para nuestra tarea — elegir la forma verbal correcta — pass@k > 1 te dice sobre todo que el modelo consideró la respuesta correcta en algún punto de su top-k. El tutor de la Fase 32 quiere pass@1 alto (una sugerencia confiada y correcta); pass@10 es más bien una señal de "¿conocía siquiera la respuesta?".
Cuándo reportarlo: cuando la evaluación incluye un componente de generación (completado libre de un hueco de forma verbal). El sub-eval de generación de la Fase 20 es pequeño (10 prompts), así que pass@k es un sanity check, no el titular.
Expected Calibration Error (ECE)¶
Pregunta que responde: cuando el modelo dice "x % de confianza en que esta forma verbal es correcta", ¿acierta el x % de las veces?
Fórmula: $\(\text{ECE} = \sum_{m=1}^M \frac{|B_m|}{N} \left| \text{acc}(B_m) - \text{conf}(B_m) \right|\)$
donde \(B_m\) es el bin de predicciones con confianza en \([(m-1)/M, m/M]\), \(\text{acc}(B_m)\) es la accuracy empírica de las predicciones de ese bin, \(\text{conf}(B_m)\) es la confianza media de ese bin.
Valor por defecto \(M = 10\).
Interpretación: ECE = 0 significa calibración perfecta. ECE = 0.1 significa que, en promedio, la confianza del modelo está desviada en 10 puntos porcentuales. ECE = 0.3 está mal calibrado.
Visualización compañera: el diagrama de fiabilidad, que dibuja la confianza media del bin (x) frente a la accuracy empírica del bin (y). La diagonal es perfecta; desviación por debajo significa sobreconfianza, por encima significa infraconfianza.
Fortaleza: mide una propiedad que la accuracy pura no puede.
Debilidad: sensible a la elección de bins. Con pocas muestras por bin, las estimaciones de ECE son ruidosas. Las 60-100 probes de la Fase 20 dan 6-10 ejemplos por bin — al límite; repórtalo junto a Brier como segunda opinión.
Cuándo reportarlo: siempre.
Brier score¶
Pregunta que responde: ¿qué tan cerca está la confianza del modelo de la etiqueta verdadera como probabilidad?
Fórmula: \(\text{Brier} = \frac{1}{N}\sum_i (p_i - y_i)^2\) donde \(p_i \in [0,1]\) es la probabilidad predicha de la clase positiva e \(y_i \in \{0, 1\}\) es el ground truth.
Interpretación: menor es mejor. Se descompone en un término de calibración (cercano a ECE) y un término de refinamiento (cuán nítida es la distribución). No usa bins.
Fortaleza: sin bins, así que es robusta frente a tamaños de muestra pequeños.
Debilidad: menos intuitiva que ECE. Se reporta junto a ECE, no en su lugar.
Cuándo reportarlo: siempre.
Score del slice adversarial¶
Pregunta que responde: ¿cómo maneja el modelo los casos gramaticales conocidos como difíciles?
Fórmula: accuracy de clasificación restringida a \(D_\text{adv}\), el subconjunto de probes adversariales, desglosada por categoría de truco.
Categorías de truco (según theory/00-motivation.md):
- Sobre-regularización:
goed,eated,writed. Comprueba si el modelo ha memorizado las formas irregulares o sólo ha sobreaplicado la regla regular. - Concordancia de persona errónea:
She work,He go. Comprueba la imposición de la-sen 3sg. - Tiempo erróneo para el marcador temporal:
Yesterday I work(debería serworked). Comprueba el seguimiento del contexto temporal. - Desajuste auxiliar:
She have eat(debería serShe has eaten). Comprueba la cadena del aspecto perfecto. - Desajuste de forma EN↔ES: prompt en inglés, candidato en español. Comprueba la separación de idiomas.
- Plural / fuera de alcance:
We work— según §A13, los plurales están fuera de alcance. Una probe que pida al modelo clasificar esto es injusta, pero la respuesta nos dice si el modelo falla con gracia (predice ambiguous) o con confianza y mal.
Interpretación: un modelo con 90 % de accuracy en el conjunto limpio y 50 % en adversarial tiene el perfil de fallo típico — bien en promedio, roto en los casos extremos. El agente tutor (Fase 32) hará aflorar esos casos extremos; este score predice con qué frecuencia.
Fortaleza: se mapea directamente al riesgo de despliegue.
Debilidad: las probes adversariales son artesanales; el arnés hereda el sesgo de quien las elaboró. Sembramos la construcción para que el conjunto adversarial sea reproducible, pero su representatividad es una limitación conocida.
Cuándo reportarlo: siempre. Por categoría de truco, no sólo agregado.
Lo que NO reportamos (y por qué)¶
- F1 score — para clasificación de 3 clases, macro-F1 vs micro-F1 vs weighted-F1 tienen diferencias sutiles de interpretación. La combinación de accuracy + matriz de confusión + tabla por slice transmite todo lo que F1 transmitiría, con mayor claridad.
- AUROC — necesita clases binarias. Tenemos tres. Dibuja uno-contra-resto por clase si te pica la curiosidad, pero no por defecto.
- BLEU / chrF — aplicarían si la tarea fuese traducción libre. El alcance §A13 es mucho más estrecho (elegir la forma correcta), por lo que la accuracy por slice es la métrica adecuada.
- Visualizaciones del paisaje de pérdida — no accionables.
- Mapas de calor de atención — son artefactos de la Fase 15 / Fase 19, no métricas de la Fase 20.
Recapitulación en un párrafo¶
Ocho métricas en total, que caen en cuatro cubos: PPL (proxy), accuracy por slice y agregada (tarea), ECE y Brier y diagramas de fiabilidad (calibración), score del slice adversarial (peor caso). Cada eval REPORT.md las tiene todas. Ninguna métrica está sola; el párrafo de interpretación del final las sintetiza en una frase sobre lo que el modelo puede y no puede hacer.
Siguiente: theory/02-metrics-math.md.