1 · Lo básico de MLLección 1 de 8
Qué es un modelo
What a model is
Un modelo es una función con perillas. Qué sale de ella, cómo se vuelve una probabilidad y una decisión, y contra qué se compara para saber si sirve.
Secciones16
- 01Un modelo es una función
- 02Las perillas por dentro extra
- 03Qué le puedes preguntar: los tipos de tarea
- 04Logits y softmax: de puntajes a probabilidades
- 05Sigmoide: un sí o un no por etiqueta
- 06Por dentro de softmax y sigmoide extra
- 07Probabilidad y confianza: qué significa «94 %»
- 08Del puntaje a la decisión: argmax, top-k y umbral
- 09Decidir cerca de la línea: empates y umbrales extra
- 10El baseline: el rival que hay que vencer
- 11Errores comunes
- 12En la vida real extra
- 13Ejercicios
- 14Lo que sigue
- 15Palabras que vas a oír
- 16Chequeo
Cuando el modelo dice «Tenis, 94 %», ¿de dónde sale ese número, qué tanto le puedo creer y cómo sé si el modelo sirve?
Un modelo es una función
EsencialA model is a function
En la lección anterior viste que un modelo aprende de ejemplos en vez de seguir reglas escritas a mano. Ahora vamos a abrir la caja. Lo primero que hay adentro es una idea de tu clase de matemáticas.
Una función es una regla que a cada entrada le asigna exactamente una salida. Con f(x) = 2x + 1, si entra 3 sale 2 × 3 + 1 = 7. Si vuelve a entrar 3, vuelve a salir 7: una función no cambia de opinión.
Un modelo es exactamente eso: entran números y salen números. Tiene dos diferencias con las funciones de la escuela: es enorme, y una parte de ella no la escribe nadie.
Un modelo de dos perillas
Imagina que el marketplace quiere sugerirle a Ana un precio para sus tenis usados. Un modelo muy chico podría ser:
precio = w × años + b
La forma («multiplica los años por algo y súmale algo») la eligió una persona. Los números w y b son los parámetros: las perillas del modelo. Sus letras vienen de weight (peso) y bias (sesgo), nombres que vas a ver en todas partes. Nadie los pone a mano: el entrenamiento los ajusta mirando miles de ventas pasadas, hasta que el modelo se equivoca lo menos posible con ellas.
Con las mismas perillas, unos tenis nuevos salen en 1,500 pesos y unos de 4 años en −1,200 + 1,500 = 300. Si el entrenamiento hubiera dejado w = −200 y b = 1,800, los de 2 años saldrían en −400 + 1,800 = 1,400. Misma forma, otras perillas, otra respuesta.
Fíjate en algo: con 6 años sale −300 × 6 + 1,500 = −300 pesos. El modelo no sabe que un precio no puede ser negativo. No tiene sentido común: solo calcula. Todo lo que «sabe» quedó en sus perillas, y lo que esté lejos de lo que vio al entrenar lo puede responder muy mal sin avisar.
Del modelo de juguete a la ResNet-50 de C01
El modelo de C01 es una ResNet-50, una red neuronal diseñada para fotos: muchísimas cuentas como la del juguete (multiplicar cada entrada por su peso y sumar), encadenadas, donde lo que sale de un paso entra al siguiente. La idea es la del juguete, solo que mucho más grande:
| Modelo de juguete | ResNet-50 de C01 | |
|---|---|---|
| Qué entra | 1 número (los años) | 150,528 números: la foto ya preparada, de 224 × 224 píxeles (sus puntitos de color), con 3 números de color cada uno. Lo ves en la siguiente lección |
| Qué sale | 1 número (el precio) | 500 números, uno por categoría |
| Perillas | 2 | ≈ 24.5 millones (la ResNet-50 original, de 1,000 categorías, tiene 25.6 millones) |
| Cuentas por respuesta | 1 multiplicación y 1 suma | ≈ 4 mil millones de multiplicaciones, cada una con su suma |
A la forma de la función («ResNet-50», «multiplica y suma») se le llama arquitectura (architecture). A los valores de las perillas también se les dice pesos (weights). Calcular una respuesta, de la entrada a la salida, se llama forward pass: es lo que pasa en cada inferencia.
El archivo del modelo que se guarda después de entrenar son, sobre todo, esos 24.5 millones de números. Un byte es la unidad con que se mide la memoria, y cada uno de esos números ocupa 4 bytes en float32, la forma más común de guardar un número con decimales. El archivo pesa 24.5 millones × 4 bytes = 98 millones de bytes ≈ 98 MB (megabytes).
Las perillas por dentro
ExtraInside the knobs
Esta sección es para una segunda pasada. Vuelve al modelo de juguete para ver qué hace cada perilla, qué pasa cuando hay más entradas y por qué los modelos grandes no son una sola suma.
Qué hace cada perilla
Si dibujas el precio contra los años, este modelo es una recta. Por eso se le llama modelo lineal (linear model), y en los libros aparece como y = w·x + b.
- b es la altura de la recta cuando x vale 0: el precio de unos tenis nuevos. Moverla sube o baja la recta entera.
- w es la inclinación: cuánto cambia el precio por cada año. Con w = −300, cada año le quita 300 pesos. Con w = 0 la recta queda plana: el modelo ignora los años y siempre dice b.
precio = w × años + b. Mueve las dos perillas y mira cómo cambian todas las predicciones a la vez.
Con w = 0 la recta queda plana: el modelo ignora los años y siempre dice b. Con w positiva, unos tenis viejos valdrían más que unos nuevos.
Reto: encuentra la recta que da 1,200 pesos con 2 años y 400 con 6 años. Solo hay una.
Más entradas, una perilla por cada una
Un precio no depende solo de los años. Si agregas una segunda entrada, por ejemplo si los tenis traen su caja (1 si sí, 0 si no), el modelo gana una perilla:
precio = w₁ × años + w₂ × caja + b
Con w₁ = −300, w₂ = 400 y b = 1,500, unos tenis de 2 años con caja salen en −600 + 400 + 1,500 = 1,300 pesos, y sin caja en 900. Son 3 parámetros: dos pesos y un sesgo. Esta cuenta (multiplicar cada entrada por su peso, sumar todo y agregar el sesgo) se llama suma ponderada, y es el ladrillo de casi todo: una neurona hace justo esa cuenta y luego la dobla un poco. Lo ves en «Redes neuronales y CNNs».
Una suma ponderada sola no se puede doblar. Con una entrada es una recta; con mil, algo así como un plano de mil dimensiones, pero siempre derecho. Si el precio real baja rápido el primer año y luego despacio, ninguna recta lo sigue bien. Por eso los modelos grandes apilan muchas sumas ponderadas con dobleces entre ellas.
Qué le puedes preguntar: los tipos de tarea
EsencialKinds of tasks
Antes de elegir un modelo se decide qué tipo de pregunta le vas a hacer. Eso es la tarea. La tarea fija tres cosas: qué forma tiene lo que sale, cómo se mide si acertó y qué hace el producto con la respuesta. En una entrevista de la Ronda, ponerle nombre a la tarea es de lo primero que se califica (M01).
Clasificación: elegir de una lista
En la clasificación el modelo elige de una lista fija de opciones. A cada opción se le llama clase. Hay tres variantes, y confundirlas rompe sistemas:
- Binaria: dos clases, sí o no. ¿Este pago es fraude? ¿Este correo es spam? Es la clasificación binaria. A la clase que buscas (fraude, spam) se le dice positiva; a la otra, negativa.
- Multiclase: más de dos clases, y cada ejemplo tiene exactamente una correcta. Es la multiclase. C01 es así: cada foto va en una sola de 500 categorías.
- Multietiqueta: varias clases, y cada ejemplo puede tener varias a la vez, o ninguna. Es la multietiqueta (multi-label): cada clase recibe su propio sí o no.
El ejemplo clásico de multietiqueta es la moderación de contenido, el caso C06 de la Ronda. Una red social revisa cada post contra 7 políticas: spam, amenazas y violencia, odio, desnudez y otras. Un mismo post puede ser spam y violento, como un mensaje que vende seguidores falsos y amenaza a quien lo reporte. Si el modelo tuviera que elegir una sola clase, se le escaparía la otra. Por eso el modelo de C06 da un score por política.
Regresión: dar un número
En la regresión sale un número en una escala continua: el precio de la sección anterior, el tiempo que tarda un envío o cuántos litros de leche va a vender una tienda mañana. El nombre es histórico y no ayuda: no tiene nada que ver con «regresar».
La diferencia con la clasificación está en cómo se mide el error. En clasificación aciertas o no. En regresión importa qué tan lejos quedaste: sugerir 950 pesos cuando el par se vendió en 900 es un error chico; sugerir 3,000 es uno grande.
Ranking: ordenar
En el ranking el modelo ordena una lista. Cuando Ana busca «tenis» hay miles de publicaciones, y alguien tiene que decidir cuáles ve primero. El modelo le da un puntaje a cada una y se ordenan. Aquí importa el orden, no el número exacto. Muchas veces el puntaje es la probabilidad de un clasificador binario, por ejemplo la de que esa persona haga clic.
Visión: mirar dentro de la foto
Con imágenes hay tareas que no se conforman con una respuesta para toda la foto:
- Detección de objetos: encuentra cada objeto y dibuja una caja alrededor. Por cada caja da cuatro números (dónde está y qué tamaño tiene), una clase y una confianza. Una foto puede dar cero cajas o cincuenta. Es el cuadrito que dibuja la cámara de tu celular alrededor de las caras.
- Segmentación: le pone una clase a cada píxel de la imagen (cada uno de los puntitos de color que la forman). No dice «hay un tenis más o menos aquí», sino exactamente qué píxeles son tenis y cuáles son fondo. Es parte de lo que usa el «modo retrato» para desenfocar el fondo.
- OCR (optical character recognition): lee el texto que aparece en la imagen y lo devuelve como texto que la computadora puede usar, como la talla en la etiqueta de un tenis.
Todas juntas
| Tarea | Qué sale | Ejemplo de todos los días | Dónde la vas a ver en la Ronda |
|---|---|---|---|
| Clasificación binaria | una de 2 clases, con su probabilidad | ¿este correo es spam? | C09 (fraude) |
| Multiclase | una de muchas clases | ¿de qué categoría es esta foto? | C01 (500 categorías) |
| Multietiqueta | un sí o no por cada clase | las etiquetas de una foto: #playa #perro | C06 (7 políticas) |
| Regresión | un número | ¿en cuánto vendo estos tenis? | C14 (pronóstico de demanda) |
| Ranking | una lista ordenada | ¿qué publicaciones veo primero? | C07 (búsqueda), C08 (recomendación), C15 (anuncios) |
| Detección | cajas con clase y confianza | el cuadrito en las caras de la cámara | C02 (video), C03 (planta) |
| Segmentación | una clase por píxel | desenfocar el fondo en «modo retrato» | C04 (imágenes médicas) |
| OCR | texto | copiar el texto de una foto | C05 (documentos) |
Logits y softmax: de puntajes a probabilidades
EsencialLogits and softmax
Aquí viene la primera sorpresa. El modelo de C01 no devuelve la palabra «Tenis». Devuelve 500 números, uno por categoría, siempre en el mismo orden. Esos números crudos se llaman logits.
Un logit es un puntaje: entre más alto, más se inclina el modelo por esa clase. Pero no es un porcentaje:
- Puede ser cualquier número: 3.0, 0, −12.7 o 41.
- No suma nada en especial: 500 logits pueden sumar 87 o −300.
- Solo no dice mucho. Un logit de 3 es alto solo si los de las demás clases son más bajos.
Para seguir las cuentas con lápiz, usemos solo tres categorías. La foto de Ana da estos logits: Tenis 3.0, Botas 1.0 y Sandalias 0.0. El modelo prefiere «Tenis», pero ¿qué tanto? Con estos números no se puede decir todavía.
Softmax en tres pasos
Queremos convertir los logits en números que cumplan tres cosas: que cada uno quede entre 0 y 1, que sumen 1 entre todos y que el orden no cambie. La cuenta que hace eso se llama softmax.
Para el primer paso necesitas un número famoso: e ≈ 2.718 (el número de Euler). «e elevado a x» se escribe eˣ. Si x es un entero, es multiplicar e por sí mismo x veces: e³ = e × e × e ≈ 20.09. Si tiene decimales, la tecla eˣ de la calculadora lo resuelve. Su gracia: el resultado siempre es positivo, aunque x sea negativo (e⁻¹ ≈ 0.37).
Escrito como fórmula, para la clase i: pᵢ = e^(logitᵢ) ÷ (suma de e^(logit) de todas las clases). En C01 la suma lleva 500 términos en vez de 3, pero la cuenta es la misma.
Mueve los tres logits y mira cómo cambian las probabilidades. La temperatura divide los tres logits antes del softmax.
Súmale lo mismo a los tres logits: nada cambia. Sube la temperatura: las barras se emparejan; bájala: el favorito se lleva casi todo. En ningún caso cambia el orden.
Pon los tres logits iguales: cada uno se queda con un tercio. Después súbele 1 al de Tenis y mira cuánto gana.
Tres cosas que conviene notar
Lo que cuenta es la diferencia entre logits. Súmales 10 a todos: 13, 11 y 10. Las probabilidades salen idénticas: 84.4 %, 11.4 % y 4.2 %. La razón: e¹³ = e³ × e¹⁰, y ese e¹⁰ aparece arriba y abajo de cada división, así que se cancela.
La exponencial exagera las diferencias. El logit de Tenis (3) le gana al de Botas (1) por 2 puntos, pero su probabilidad es 84.4 ÷ 11.4 ≈ 7.4 veces mayor. Cada punto de diferencia multiplica por e ≈ 2.72: 2 puntos son 2.72 × 2.72 ≈ 7.4 veces; 5 puntos, ≈ 148 veces.
Nunca da exactamente 0 ni 100 %. Sandalias, con logit 0, todavía se lleva 4.2 %. En C01, las 495 categorías que no entran al top-5 tienen probabilidades diminutas, pero ninguna es cero.
Softmax en Python
Son tres líneas, una por paso. Cópialo y córrelo: no necesita instalar nada.
import math
def softmax(logits):
exps = [math.exp(z) for z in logits] # 1. e elevado a cada logit
total = sum(exps) # 2. sumar
return [e / total for e in exps] # 3. dividir entre la suma
logits = [3.0, 1.0, 0.0] # Tenis, Botas, Sandalias
print([round(p, 3) for p in softmax(logits)])
print(round(sum(softmax(logits)), 6))
print([round(p, 3) for p in softmax([z + 10 for z in logits])]) # sumar 10 a todos
print([round(p, 3) for p in softmax([z * 2 for z in logits])]) # multiplicar por 2[0.844, 0.114, 0.042]
1.0
[0.844, 0.114, 0.042]
[0.98, 0.018, 0.002]La última línea es un adelanto de la temperatura, en la sección extra «Por dentro de softmax y sigmoide»: multiplicar los logits no cambia el orden, pero el favorito se ve mucho más seguro.
Sigmoide: un sí o un no por etiqueta
EsencialSigmoid: a yes or no per label
Softmax sirve cuando hay que repartir el 100 % entre clases que compiten. Hay dos casos donde eso no es lo que quieres: cuando la pregunta es un solo sí o no, y cuando un ejemplo puede tener varias clases a la vez. Para los dos está la sigmoide.
Una sola pregunta
En la clasificación binaria basta un solo logit, que se suele llamar z: positivo si el modelo se inclina por el «sí», negativo si se inclina por el «no». La sigmoide lo convierte en la probabilidad del «sí»:
p = 1 ÷ (1 + e^(−z))
Tres cosas que se ven en la cuenta y en la figura:
- En z = 0 da exactamente 50 %, porque e⁰ = 1 y 1 ÷ (1 + 1) = 0.5. Un logit de 0 es «no sé».
- Es simétrica. z = −2 da 1 ÷ (1 + e²) = 1 ÷ 8.39 ≈ 11.9 %, que es justo 100 % − 88.1 %.
- Nunca llega a 0 ni a 100 %. Con z = 4 ya da 98.2 % y con z = 8, 99.97 %, pero en la cuenta exacta siempre falta un poquito. (En la computadora sí puede salir 1.0: con z = 40, lo que falta es tan chico que Python lo redondea.)
La sigmoide da una probabilidad, no una decisión. La decisión la pone un umbral: si p queda arriba, «sí». Con umbral 0.5, decir «sí» es lo mismo que pedir un logit de 0 o más. Con un umbral más exigente, como 0.9, hace falta un logit de al menos 2.2 (de dónde sale ese número está en la sección extra que sigue).
Un clasificador binario da un solo logit. La sigmoide lo vuelve la probabilidad del «sí», y el umbral decide.
Con umbral 0.5, la decisión es «sí» justo cuando z es 0 o más. Subir el umbral es pedirle al modelo un logit más alto: con 0.9 hace falta 2.2.
Mueve el logit hasta que la decisión cambie. Después sube el umbral y busca otra vez el punto de cambio.
Varias preguntas a la vez
Regresa a C06. El modelo da un logit por política, y cada uno pasa por su propia sigmoide. Las probabilidades no compiten: cada una contesta su propia pregunta, y no tienen por qué sumar 100 %.
La tarea decide cómo termina el modelo
| Tarea | Qué saca el modelo | Qué se le aplica | Cómo se decide |
|---|---|---|---|
| Binaria | 1 logit | una sigmoide | un umbral |
| Multiclase | un logit por clase | softmax | el ganador o las k mejores |
| Multietiqueta | un logit por etiqueta | una sigmoide por etiqueta | un umbral por etiqueta |
| Regresión | un número | nada: el número es la respuesta | lo usa el producto (un pedido, un precio) |
| Ranking | un puntaje por opción | a veces una sigmoide | ordenar |
Por dentro de softmax y sigmoide
ExtraInside softmax and sigmoid
Esta sección es para una segunda pasada. Explica de dónde viene el nombre «logit», por qué softmax y sigmoide son la misma idea, qué hace la temperatura, por qué las librerías no calculan el softmax tal cual y quién lo calcula en C01.
El logit es un momio con logaritmo
En las apuestas se habla de momios (odds): «4 a 1» quiere decir que algo pasa 4 veces por cada vez que no pasa. Una probabilidad se convierte en momio dividiéndola entre su contraria: con p = 0.8, el momio es 0.8 ÷ 0.2 = 4.
El logaritmo natural, ln, deshace lo que hace eˣ: ln 4 es el número al que hay que elevar e para que dé 4, y vale ≈ 1.39 (porque e^1.39 ≈ 4). El logit de una probabilidad es el ln de su momio: ln(p ÷ (1 − p)). Con p = 0.8 da ln 4 ≈ 1.39. Y es la inversa exacta de la sigmoide: la sigmoide de 1.39 da otra vez 0.8. De ahí viene el nombre: un logit es, literalmente, «el logaritmo del momio».
| Logit | Momio (e^logit) | Probabilidad |
|---|---|---|
| 0 | 1 a 1 | 50 % |
| 1 | 2.72 a 1 | 73.1 % |
| 2 | 7.39 a 1 | 88.1 % |
| 3 | 20.1 a 1 | 95.3 % |
Cada punto de logit multiplica el momio por e ≈ 2.72. Con esta tabla sale el número de la sección anterior: un umbral de 0.9 es un momio de 0.9 ÷ 0.1 = 9, y ln 9 ≈ 2.2. Un umbral de 0.3 es ln(0.3 ÷ 0.7) ≈ −0.85.
Una sigmoide es un softmax de dos
Toma un softmax de dos clases con logits z y 0. La primera recibe eᶻ ÷ (eᶻ + 1). Si divides arriba y abajo entre eᶻ, queda 1 ÷ (1 + e⁻ᶻ): la sigmoide. Con z = 2: 7.39 ÷ (7.39 + 1) = 0.881, igual que en la cuenta de la sigmoide.
En general, un softmax de dos logits a y b le da a la primera clase la sigmoide de a − b: otra vez, solo importa la diferencia. Por eso un clasificador binario puede terminar en 1 logit con sigmoide o en 2 logits con softmax. Es lo mismo escrito de dos formas.
Temperatura: afilar o aplanar
Multiplica los logits de Ana por 2: quedan 6, 2 y 0. Ahora e⁶ ≈ 403.4, e² ≈ 7.39 y e⁰ = 1 suman 411.8, y las probabilidades son 98.0 %, 1.8 % y 0.2 %. El orden no cambió, pero el modelo «se ve» mucho más seguro. Divídelos entre 2 (1.5, 0.5 y 0) y sale 62.9 %, 23.1 % y 14.0 %: mismo orden, menos seguridad.
Dividir los logits entre un número antes del softmax se llama usar una temperatura. Una temperatura mayor que 1 aplana las probabilidades y una menor que 1 las afila. Sirve para dos cosas que vas a ver: corregir un modelo que se cree demasiado (la Ronda lo llama temperature scaling, y no cambia el orden del top-5) y, en los LLMs (los modelos que escriben texto, como ChatGPT), elegir palabras más o menos arriesgadas. La calculadora de softmax tiene una perilla de temperatura para que lo pruebes.
Números que no caben
Una computadora guarda cada número en un espacio fijo, y hay un máximo. En float32 (4 bytes) el número más grande es ≈ 3.4 × 10³⁸, y e⁸⁹ ya se pasa. En los números de Python (8 bytes) el tope es ≈ 1.8 × 10³⁰⁸, y e⁷¹⁰ ya no cabe. Un logit de 1,000 parece exagerado, pero llegar ahí es fácil: con una temperatura de 0.01, un logit de 20 se vuelve 2,000.
La solución usa la primera propiedad del softmax: restarle lo mismo a todos los logits no cambia nada. Las librerías le restan a todos el más alto, así el mayor exponente es e⁰ = 1 y nada se desborda.
import math
def softmax_ingenuo(logits):
exps = [math.exp(z) for z in logits]
return [e / sum(exps) for e in exps]
def softmax_estable(logits):
m = max(logits) # restar el más alto no cambia el resultado...
exps = [math.exp(z - m) for z in logits] # ...y el exponente más grande queda en 0
total = sum(exps)
return [e / total for e in exps]
logits = [1000.0, 999.0, 998.0]
try:
print(softmax_ingenuo(logits))
except OverflowError as error:
print("ingenuo:", error)
print("estable:", [round(p, 4) for p in softmax_estable(logits)])ingenuo: math range error
estable: [0.6652, 0.2447, 0.09]¿Quién calcula el softmax?
Muchas veces, el propio modelo no. El modelo entrega logits, y el softmax lo aplica el programa que lo rodea. En C01, el servidor de modelos (Triton, en la Ronda) devuelve los 500 logits, de 4 bytes cada uno: 2,000 bytes, unos 2 KB. El programa que está frente a él calcula el softmax, el top-5 y los nombres de categoría en ≈ 1 ms.
¿Por qué no lo hace el modelo? Porque al entrenar, la cuenta que mide qué tan mal le fue, la pérdida (pérdida), ya trae el softmax adentro y trabaja directamente con logits. La ves en «Cómo aprende un modelo». Si además el modelo terminara con un softmax, se aplicaría dos veces, y ese es uno de los errores comunes de esta lección.
Probabilidad y confianza: qué significa «94 %»
EsencialProbability and confidence
Una probabilidad es un número de 0 a 1 (o de 0 % a 100 %) que dice qué tan posible es algo. 0.25 es «una de cada cuatro veces». Las de todas las opciones juntas suman 1, como las que salen del softmax.
La confianza de un modelo es la probabilidad que le da a su respuesta favorita, la del primer lugar. En la Ronda también la vas a ver como score o «score top-1». Cuando la app de Ana dice «Tenis, 94 %», la confianza es 0.94.
Ahora, la pregunta importante: ¿94 % quiere decir que acertó? No. Es lo seguro que dice estar el modelo, calculado con los patrones que vio al entrenar. No es una garantía, por tres razones.
1. Puede estar mal calibrado
Un modelo está bien calibrado cuando sus porcentajes cumplen lo que dicen: de todas las fotos a las que les da alrededor de 94 %, acierta en unas 94 de cada 100. Eso se revisa con datos, y se llama calibración.
En C01 esto importa porque el score se le muestra a Ana y decide si una foto es «dudosa». Por eso el contrato de la API de la Ronda (lo que promete devolverle a la app) dice «scores calibrados», y la evaluación antes de aprobar un modelo nuevo revisa la calibración.
2. Solo reparte entre lo que conoce
Softmax siempre reparte el 100 % entre las 500 categorías. Siempre. Si alguien sube la foto de un pastel en forma de tenis, el modelo no puede decir «esto no es nada de mi lista»: va a repartir el 100 % entre sus 500 categorías, y bien puede darle 90 % a «Calzado › Tenis». Es el caso de «bolsas» del Dojo: antes de que exista esa categoría, la foto de una bolsa recibe su 100 % repartido entre las categorías viejas, y la más parecida puede salir con una confianza alta.
3. El mundo cambia
Cuando llegan fotos distintas a las del entrenamiento (el drift de la lección anterior), el modelo acierta menos, y su confianza no siempre baja al mismo ritmo. Por eso, en el monitoreo de la Ronda, la confianza es una alarma temprana y no una prueba: si de pronto muchas fotos salen con confianza baja, algo cambió; pero que la confianza siga alta no prueba que todo esté bien.
Del puntaje a la decisión: argmax, top-k y umbral
EsencialFrom scores to decisions: argmax, top-k and threshold
Ya tenemos 500 probabilidades. Falta decidir qué ve Ana. Para eso hay tres herramientas, y ninguna es parte del modelo: las pone el producto.
Argmax: el ganador
El argmax de una lista es la posición de su valor más alto, no el valor. Con los logits 3.0, 1.0 y 0.0 de Tenis, Botas y Sandalias, el máximo es 3.0 y el argmax es la posición de Tenis. Esa posición, traducida a su nombre, es la respuesta top-1 del modelo.
¿Por qué da lo mismo sacarlo de los logits o de las probabilidades? Porque softmax no cambia el orden. eˣ crece cuando x crece, así que el logit más alto da la exponencial más alta, y dividir todas entre la misma suma no cambia cuál es la mayor. Para saber cuál gana no hace falta el softmax; hace falta para saber por cuánto.
logits = {"Tenis": 3.0, "Botas": 1.0, "Sandalias": 0.0, "Fútbol": -0.5, "Calcetines": -1.2}
orden = sorted(logits, key=logits.get, reverse=True) # de mayor a menor logit
print("argmax (top-1):", orden[0])
print("top-3:", orden[:3])argmax (top-1): Tenis
top-3: ['Tenis', 'Botas', 'Sandalias']Top-k: más de una sugerencia
Top-k es quedarte con las k opciones más probables, en orden: es el argmax repetido k veces. Top-1 es la favorita; top-5, las cinco primeras. C01 devuelve el top-5 de sus 500 categorías, cada una con su score. La app las muestra como sugerencias ordenadas: Ana toca una, o busca otra en el selector de categorías.
| Lugar | Categoría | Probabilidad |
|---|---|---|
| 1 | Calzado › Tenis | 0.62 |
| 2 | Calzado › Botas | 0.14 |
| 3 | Calzado › Sandalias | 0.08 |
| 4 | Deportes › Fútbol | 0.05 |
| 5 | Ropa › Calcetines | 0.03 |
| las otras 495 juntas | 0.08 |
Revisa la suma: 0.62 + 0.14 + 0.08 + 0.05 + 0.03 + 0.08 = 1.00.
¿Por qué cinco y no una? Por la diferencia que hace en la práctica. En la Ronda, el modelo de C01 acierta con la primera sugerencia en ≈ 85 de cada 100 fotos, y la correcta está entre las cinco en ≈ 96 de cada 100. Con cinco opciones, Ana casi nunca tiene que buscar a mano. A esas dos medidas se les llama top-1 y top-5 accuracy (top-k accuracy). Como softmax no cambia el orden, el top-5 de los logits y el de las probabilidades son el mismo: el softmax solo hace falta para mostrar el porcentaje y compararlo con un umbral.
Umbral: una línea que pone una persona
Un umbral (threshold) es una línea: si la confianza queda arriba, se hace una cosa; si queda abajo, otra. No lo decide el modelo. Lo elige una persona mirando datos, es una regla del producto y se puede cambiar sin reentrenar nada.
En la Ronda, C01 usa 0.3 como la línea de «baja confianza»: si el top-1 es menor que 0.3, la foto cuenta como dudosa. Con eso pasan dos cosas:
- La foto se aparta para que una persona le ponga su categoría. Son las fotos que más le pueden enseñar al siguiente modelo.
- Se cuenta. Si la proporción de fotos dudosas llega al doble de su promedio de los últimos 7 días durante media hora, salta una alerta: algo cambió (un error al preparar las fotos, un tipo de foto nueva, un modelo malo).
Fíjate en lo que esa regla no hace en la Ronda: no cambia lo que ve Ana. Ella recibe sus cinco sugerencias de todos modos. El selector de categorías, donde Ana busca a mano, aparece por otra razón: cuando el modelo no contesta a tiempo (en C01, si no hay respuesta en 300 ms) o falla. Un producto podría usar también un umbral para lo que ve Ana, por ejemplo no marcar ninguna sugerencia cuando el top-1 es muy bajo. Sería otra regla, y también la pondría una persona.
- Foto · ya preparada
Está aquí porque el modelo solo entiende números: es la foto de Ana ya convertida en números, del tamaño exacto que espera. Cómo se prepara es la siguiente lección. - Modelo · ResNet-50
Es la única caja que aprendió algo. Hace la inferencia: miles de millones de multiplicaciones y sumas con sus parámetros fijos. Entrega 500 logits, uno por categoría, no una respuesta. - Softmax + top-5 · logits → %
Está aquí porque los logits no se pueden mostrar ni comparar con una línea. Softmax los vuelve 500 probabilidades que suman 1, y el top-k se queda con las 5 más altas, con su nombre de categoría. En C01 lo hace el programa que está frente al modelo, no el modelo. - Sugerencias · Ana elige una
Es lo que el sistema le da a Ana: las cinco categorías en orden, cada una con su score. Ella toca la correcta o, si ninguna es, busca en el selector de categorías. - Regla · ¿top-1 < 0.3?
Un umbral que eligió una persona, no el modelo, y que se puede cambiar sin reentrenar. Está aquí para encontrar las fotos dudosas: en C01, un top-1 menor que 0.3 es «baja confianza». No cambia lo que ve Ana. - Etiquetado · una persona revisa
Está aquí porque las fotos dudosas son las que más le pueden enseñar al modelo: se apartan para que una persona les ponga su etiqueta y entren al siguiente entrenamiento. - Alerta · ¿el doble de lo normal?
Está aquí porque la tasa de fotos dudosas avisa en minutos que algo cambió. En C01 salta si llega al doble de su promedio de 7 días durante 30 minutos: un error al preparar las fotos, un tipo de foto nueva o un modelo malo.
Decidir cerca de la línea: empates y umbrales
ExtraDeciding near the line
Esta sección es para una segunda pasada. Explica qué pasa cuando dos categorías quedan casi empatadas y por qué mover un umbral siempre cuesta algo.
Empates y casi empates
El argmax no tiene término medio: gana una sola posición, aunque sea por una centésima.
Si dos logits empatan exacto, las librerías suelen quedarse con la primera posición. Es una regla arbitraria: el modelo no tiene preferencia.
Mover el umbral siempre cuesta algo
Con un clasificador binario se ve más claro. Imagina el modelo de moderación de un marketplace: para cada publicación da la probabilidad de que esté prohibida, y si pasa del umbral, se bloquea.
No hay un umbral gratis. Una buena publicación bloqueada por error es un falso positivo; una prohibida que se escapa es un falso negativo. Subir el umbral cambia unos por otros, y la pregunta de fondo es cuál de los dos errores duele más en tu producto. Eso lleva a dos medidas que ves en «¿Aprendió de verdad?»: la precision (de lo que bloqueaste, qué parte sí era prohibido) y el recall (de lo prohibido, qué parte atrapaste). Con el umbral de 0.35, la precision es 4 de 6 y el recall, 4 de 4.
El baseline: el rival que hay que vencer
EsencialBaselines: the rival to beat
Imagina que alguien presume: «mi modelo de fraude acierta 99.9 % de las veces». Suena increíble. La pregunta correcta es: ¿comparado con qué?
Un baseline (línea base) (línea base) es la solución más simple con la que comparas tu modelo. Si tu modelo no le gana, no aprendió nada que valga la pena, por bonito que se vea su número. La accuracy (la fracción de aciertos) del ejemplo lo muestra:
El «99.9 %» que presumían al principio queda debajo de ese piso: ese modelo acierta menos que no hacer nada. Podría servir de todos modos, si atrapa muchos fraudes a cambio de rechazar a algunos clientes buenos, pero la accuracy sola no lo dice: hay que contar los fraudes atrapados y los clientes rechazados.
Cuatro rivales, de menos a más
- No usar ML: lo que se hace hoy. En C01, antes del modelo, Ana elegía la categoría a mano en el selector. Esa es la base contra la que se mide si las sugerencias ayudan; M01 lo escribe así: «Baseline: sin sugerencia». En C14 (supermercados), una hoja de cálculo sugiere pedir lo que se vendió el mismo día de la semana pasada.
- El modelo más tonto. Sin mirar la entrada: en clasificación, decir siempre la clase más común; en regresión, decir siempre el promedio. Es lo que tu modelo tiene que superar sí o sí.
- Una regla simple. En M01, para avisar que una foto está borrosa, el baseline es una cuenta que mide qué tan marcados son sus bordes, con un umbral: corre en milisegundos en una CPU (el procesador común de la computadora) y no se entrena. Solo si falla en casos concretos (fotos nocturnas, fondos lisos) se entrena una red.
- El modelo que ya existe. Cuando ya hay uno en producción, el nuevo se compara contra él con el mismo examen. En la Ronda al que ya está le dicen champion.
Por qué siempre hace falta uno
- Para saber si aprendió algo. Un número solo no dice nada: 99.92 % parece excelente hasta que ves que no hacer nada da lo mismo.
- Para saber si vale lo que cuesta. Un modelo pide datos, máquinas, monitoreo y gente. Si una regla de diez líneas logra casi lo mismo, la regla gana.
- Para tener un plan B. Cuando el modelo falla o no contesta a tiempo, algo tiene que responder, y muchas veces es el baseline. En C01, si no hay respuesta en 300 ms, Ana ve el selector manual. En C09, si el modelo de fraude no contesta, deciden reglas de respaldo. En C14, si la corrida de la noche falla, se publica el pronóstico de ayer.
M01 lo resume en una frase: el baseline es a la vez tu punto de comparación y tu plan de degradación.
Errores comunes
EsencialCommon mistakes
- Aplicar softmax dos veces. Si el modelo ya devuelve probabilidades y alguien vuelve a aplicar softmax, nada truena, pero los números se aplanan. Con 0.844, 0.114 y 0.042: e^0.844 ≈ 2.326, e^0.114 ≈ 1.121 y e^0.042 ≈ 1.043 suman 4.490, y queda 51.8 %, 25.0 % y 23.2 %. El orden es el mismo, así que nadie lo nota a simple vista; pero el umbral, la alerta y lo que ve Ana se descomponen. Cómo evitarlo: que el contrato diga qué sale del modelo (logits o probabilidades) y revisar en una prueba que el top-1 de una foto clara sea alto.
- Leer la confianza como accuracy. «94 %» es lo que el modelo dice, no lo que logra. Cómo evitarlo: medir la calibración con datos etiquetados: de las veces que dijo ≈ 94 %, ¿cuántas acertó?
- Comparar logits entre modelos. Un logit solo vale junto a los demás del mismo modelo. Un modelo con logits 5, 4 y 4 da 57.6 % a su favorito; otro con 2, 0 y 0 da 78.7 %. El de logit más bajo está más seguro. Cómo evitarlo: comparar probabilidades calibradas o métricas sobre el mismo examen, nunca logits sueltos.
- Usar softmax en un problema multietiqueta. Obliga a las etiquetas a competir, y una esconde a la otra: el post con spam y amenaza que vimos. Cómo evitarlo: si un ejemplo puede tener varias clases a la vez, una sigmoide por etiqueta.
- Dejar el umbral en 0.5 porque sí. 0.5 no tiene nada de especial. El umbral sale de lo que cuesta cada error: en C09, para un pago de US$25 conviene rechazar desde ≈ 16 % (la cuenta está en «En la vida real»). Cómo evitarlo: elegirlo con datos y costos, y revisarlo con cada versión del modelo.
- Presumir un número sin baseline. 99.92 % de accuracy en fraude es lo que saca «aprobar todo». Cómo evitarlo: antes de entrenar, calcula lo que saca el rival más tonto y lo que se hace hoy, y escríbelo junto a tu número.
- Desacomodar la lista de nombres. El modelo dice «posición 137» y la app pega el nombre de otra categoría, sin ningún error. Cómo evitarlo: que los nombres viajen con el modelo y que el servidor revise al arrancar que hay tantos nombres como logits, como hace C01.
En la vida real
ExtraIn real life
La misma función con perillas aparece en todos los casos de la Ronda. Lo que cambia es qué sale y cómo se decide.
C01: de 150,528 números a cinco sugerencias
La foto de Ana, ya preparada, son 150,528 números. La ResNet-50 los convierte en 500 logits; el programa que está frente al modelo aplica softmax, se queda con el top-5, le pega los nombres y agrega model_version. Todo eso tiene que pasar en p99 ≤ 200 ms del lado del servidor: el 99 % de las respuestas, en menos de 200 ms. Aparte, la regla de 0.3 aparta las fotos dudosas para etiquetarlas y alimenta la alerta. Y si no hay respuesta en 300 ms, el baseline (el selector manual) hace de plan B.
C05, OCR: la salida es una secuencia
En C05, una plataforma de créditos lee facturas, identificaciones y estados de cuenta. El OCR devuelve palabras, cada una con su caja y su confianza. Leer un campo son muchas clasificaciones seguidas, una por carácter, y el campo solo sirve si todas aciertan.
Por eso C05 calibra la confianza por campo, no por letra, y pone un umbral por campo: arriba, el campo pasa solo; abajo, una persona lo revisa con el recorte de la imagen. El éxito se mide con el STP (straight-through processing): qué porcentaje de documentos pasa sin que nadie lo toque.
C06, moderación: una sigmoide y sus umbrales por política
En C06, el modelo da un logit por cada una de las 7 políticas, y cada uno pasa por su sigmoide, como el post de spam y amenaza de la sección de la sigmoide. Después, cada política compara su probabilidad con sus propios umbrales: por ejemplo, uno para mandar a revisión y otro, mucho más alto, para no publicar sin que nadie lo mire.
- Post · texto de quien publica
Está aquí porque hay que revisarlo antes de que alguien lo vea. En C06 llegan ≈ 30 millones de posts y 150 millones de comentarios al día, y el chequeo tiene un p99 de 150 ms: el 99 % de las veces termina en 150 ms o menos. - Modelo · un logit por política
Un solo modelo de texto, multietiqueta: en una pasada da un logit por cada una de las 7 políticas. Agregar una política es agregarle una salida y reentrenar, no poner otro modelo en el camino. - 7 sigmoides · un % por política
Está aquí porque cada política es su propia pregunta de sí o no. Una sigmoide por política convierte cada logit en una probabilidad de 0 a 1. No compiten ni tienen por qué sumar 100 %: con softmax, una política le quitaría probabilidad a la otra. - Decisión · cada política, su umbral
Compara cada probabilidad con los umbrales de su política. Un post puede quedar marcado por dos políticas a la vez. El modelo da números; quien decide qué hacer es esta regla. - Config de política · umbrales con versión
Los umbrales viven fuera del código, en una configuración con versión: por política, por gravedad y por superficie (post o comentario). Cada versión del modelo trae los suyos, porque cada versión reparte sus scores distinto. - Se publica · lo normal
Casi todo lo que llega no viola nada: en C06, ≈ 0.5 % de lo publicado viola alguna política. Por eso lo que depende del modelo falla abierto: si no contesta a tiempo, el post se publica y se puntúa después. - Revisión · una persona decide
Una persona mira el post. En C06 hay ≈ 600 moderadores para ≈ 216 mil revisiones al día, y esa capacidad es la que fija qué tan bajos pueden ser los umbrales de revisión. - No se publica · solo con score muy alto
Aquí el sistema actúa solo, sin que nadie mire. Por eso su umbral es muy alto y se fija por precision (de lo que bloquea, qué parte de verdad viola): un error castiga a alguien que no hizo nada.
En Python, la sigmoide es una línea. Aquí está con aquel post y una regla distinta por política, como en C06:
import math
def sigmoide(z):
return 1 / (1 + math.exp(-z))
for z in [-4, -2, 0, 2, 4]:
print(f"z = {z:>2} -> p = {sigmoide(z):.3f}")
logits = {"spam": 2.0, "violencia": 1.0, "odio": -3.0}
reglas = {"spam": (0.98, "bloquear"), "violencia": (0.50, "revisar"), "odio": (0.60, "revisar")}
for politica, z in logits.items():
p = sigmoide(z)
umbral, accion = reglas[politica]
print(f"{politica:<10} p = {p:.3f} umbral {umbral:.2f} -> {accion if p >= umbral else 'nada'}")z = -4 -> p = 0.018
z = -2 -> p = 0.119
z = 0 -> p = 0.500
z = 2 -> p = 0.881
z = 4 -> p = 0.982
spam p = 0.881 umbral 0.98 -> nada
violencia p = 0.731 umbral 0.50 -> revisar
odio p = 0.047 umbral 0.60 -> nadaC08, recomendación: puntajes para ordenar
En C08, cada vez que alguien abre la pantalla de inicio del marketplace se juntan ≈ 1,000 publicaciones candidatas, y un modelo les da dos números a cada una: P(click), la probabilidad de que la toque, y P(contacto | click), la de que contacte al vendedor si la tocó. Se ordenan por un puntaje que combina las dos: P(click) × (P(contacto | click) + 0.05). Es un ranking: lo que importa es el orden.
La Ronda lo dice así: cuando solo ordenas, el valor exacto importa poco; cuando multiplicas dos salidas, cada una tiene que estar calibrada. Y el baseline de C08 es la pantalla de inicio de hoy («recientes en tu ciudad» y lo popular), que también es su plan B.
C09, fraude: binaria con un umbral que sale del dinero
En C09, un modelo da la probabilidad de fraude de cada pago, calibrada. Dejar pasar un fraude cuesta el monto más ≈ US$15 de comisión; rechazar a un cliente bueno, ≈ US$5–10 que fija el negocio (usemos el punto medio, US$7.5). Si solo puedes aprobar o rechazar, conviene rechazar cuando lo que esperas perder al aprobar, p × (monto + 15), supera lo que esperas perder al rechazar, (1 − p) × 7.5. Los dos empatan en p = 7.5 ÷ (monto + 15 + 7.5).
El umbral depende del monto, por eso C09 usa umbrales por segmento (tipo de comercio y rango de monto) y no uno solo. El sistema real tiene una tercera opción, pedir una verificación extra con el banco (step-up, por ejemplo un código en el celular), y con ella el rechazo para US$25 solo conviene desde ≈ 44 %. Su baseline son ≈ 400 reglas escritas a mano, que siguen como respaldo.
C14, demanda: regresión con su baseline
En C14, una cadena de ≈ 400 supermercados pronostica cada noche cuánto se va a vender de cada producto en cada tienda, para los siguientes 14 días. La salida son números: un valor central y uno alto, para pedir un poco de más por si se vende más de lo normal (el inventario de seguridad). El baseline es la hoja de siempre, «lo mismo que el mismo día de la semana pasada», y se mide con el WAPE: el error absoluto total ÷ las ventas totales. En los productos que más se venden, la hoja tiene WAPE ≈ 45 %: se desvía 45 unidades por cada 100 vendidas.
El baseline sirve hasta en el monitoreo: cada lunes, C14 compara el modelo contra la hoja en la misma semana. Si los dos empeoraron igual, la semana fue difícil; si solo empeoró el modelo, algo se rompió.
Fuera de la Ronda
- El filtro de spam de tu correo es una clasificación binaria con umbral; la carpeta de spam es la acción.
- La galería de tu celular, que encuentra «playa» y «perro» en la misma foto, es multietiqueta.
- El teclado que sugiere tu siguiente palabra hace un ranking: le da un puntaje a cada palabra posible y te muestra las tres mejores, un top-3.
Ejercicios
EsencialExercises
Resuélvelos con lápiz (y una calculadora con la tecla eˣ) antes de abrir la solución.
- 1Fácil
Un modelo lineal de precios tiene w = −250 y b = 2,000. ¿Qué precio sugiere para unos tenis de 3 años? ¿Con cuántos años llega a 0?
Ver la solución paso a paso
Con 3 años: −250 × 3 + 2,000 = −750 + 2,000 = 1,250 pesos.
Llega a 0 cuando −250 × años + 2,000 = 0, o sea años = 2,000 ÷ 250 = 8. Después de 8 años predice precios negativos: el modelo no sabe que eso no tiene sentido.
- 2Fácil
Calcula el softmax de los logits 2, 0 y 0.
Ver la solución paso a paso
e² ≈ 7.39 y e⁰ = 1 (dos veces). La suma es 7.39 + 1 + 1 = 9.39.
Quedan 7.39 ÷ 9.39 ≈ 78.7 % y 1 ÷ 9.39 ≈ 10.7 % para cada una de las otras dos. Revisa: 78.7 + 10.7 + 10.7 = 100.1, que es 100 con el redondeo.
- 3Fácil
¿Qué tarea es cada una, y con qué termina el modelo? (a) ¿Este correo es spam? (b) La categoría de C01, de 500. (c) Las etiquetas de una foto de vacaciones: playa, perro, atardecer. (d) Cuántos minutos tarda un envío.
Ver la solución paso a paso
(a) Binaria: un logit y una sigmoide. (b) Multiclase: 500 logits y softmax. (c) Multietiqueta: un logit por etiqueta y una sigmoide para cada una, porque una foto puede tener las tres. (d) Regresión: un número, sin nada al final.
- 4Fácil
Un clasificador binario da el logit z = −1. ¿Qué probabilidad da la sigmoide? Con umbral 0.5, ¿dice «sí»?
Ver la solución paso a paso
e^(−(−1)) = e¹ ≈ 2.72. Entonces p = 1 ÷ (1 + 2.72) = 1 ÷ 3.72 ≈ 26.9 %.
Es menor que 0.5, así que dice no. Atajo: con umbral 0.5 basta ver el signo del logit; negativo es «no».
- 5Medio
Un modelo de 5 categorías da los logits 1.2, 3.4, −0.5, 3.1 y 0.0. ¿Cuál es el argmax y cuál el top-2? ¿Cambian si aplicas softmax? ¿Y si les sumas 7 a todos?
Ver la solución paso a paso
El argmax es la segunda categoría (logit 3.4). El top-2 son la segunda y la cuarta (3.4 y 3.1).
No cambian con softmax, porque softmax no cambia el orden. Tampoco sumando 7: el orden sigue igual, y además las probabilidades salen idénticas.
Un detalle: la diferencia entre el primero y el segundo es 0.3, así que el primero es solo e^0.3 ≈ 1.35 veces más probable. Es una foto en la que el modelo duda.
- 6Medio
Un post da los logits spam 1.5, violencia 0.5 y odio −2.0. Calcula sus probabilidades con una sigmoide por política y con softmax. Con un umbral de revisión de 0.5 en cada política, ¿qué se revisa en cada caso?
Ver la solución paso a paso
Sigmoides. Spam: 1 ÷ (1 + e^(−1.5)) = 1 ÷ (1 + 0.223) ≈ 81.8 %. Violencia: 1 ÷ (1 + 0.607) ≈ 62.2 %. Odio: 1 ÷ (1 + 7.39) ≈ 11.9 %. Se revisan spam y violencia.
Softmax. e^1.5 ≈ 4.48, e^0.5 ≈ 1.65 y e^(−2) ≈ 0.14 suman 6.27. Quedan spam 71.5 %, violencia 26.3 % y odio 2.2 %. Solo se revisa spam: la violencia se escondió. Por eso la multietiqueta va con sigmoides.
- 7Medio
En un sistema de moderación, 0.5 % de los posts viola alguna política. Un modelo saca 99.6 % de accuracy: de 100,000 posts, atrapa 300 de los que violan y marca por error 200 buenos. Revisa que eso da 99.6 % y di qué te dice de verdad.
Ver la solución paso a paso
De 100,000 posts, violan 0.5 % = 500.
Baseline «nada viola»: acierta los 99,500 buenos, 99.5 %.
Modelo: se equivoca en 200 que violan y se escaparon (500 − 300) y en 200 buenos marcados. Son 400 errores, así que acierta 99,600: 99.6 %. Apenas 0.1 puntos mejor que no hacer nada.
Lo que importa: de los 500 que violan, atrapó 300 (60 %); y de los 500 que marcó (300 + 200), 300 eran de verdad (60 %). Esas dos medidas son el recall y la precision, y las ves en «¿Aprendió de verdad?».
- 8Medio
Una tienda vendió esta semana, de lunes a domingo, 10, 8, 12, 9, 15, 22 y 18 litros de leche. El baseline («lo del mismo día de la semana pasada») había dicho 5, 12, 8, 15, 9, 14 y 26. Un modelo dijo 8, 10, 10, 11, 12, 19 y 21. Calcula el WAPE de cada uno (error absoluto total ÷ ventas totales).
Ver la solución paso a paso
Ventas totales: 10 + 8 + 12 + 9 + 15 + 22 + 18 = 94.
Baseline. Errores: 5, 4, 4, 6, 6, 8 y 8, que suman 41. WAPE = 41 ÷ 94 ≈ 43.6 %.
Modelo. Errores: 2, 2, 2, 2, 3, 3 y 3, que suman 17. WAPE = 17 ÷ 94 ≈ 18.1 %.
El modelo le gana al baseline en esta semana. Una semana no prueba nada: C14 lo compara en muchas semanas y tiendas, y la hoja real tiene WAPE ≈ 45 %.
- 9Reto
Un pago de US$100 tiene probabilidad de fraude calibrada p = 0.08. Aprobar un fraude cuesta el monto más US$15; rechazar a un cliente bueno, US$7.5. Solo puedes aprobar o rechazar. ¿Qué conviene? ¿Desde qué p conviene rechazar?
Ver la solución paso a paso
Aprobar o rechazar un pago de US$100La cuenta Perder si apruebasprobabilidad de fraude × lo que cuesta0.08 × (100 + 15)US$9.20Perder si rechazasprobabilidad de que sea bueno × US$7.50.92 × 7.5US$6.90Umbral7.5 ÷ (115 + 7.5)0.061ResultadoConviene rechazar: cuesta menos en promedio. El umbral para US$100 es p ≈ 6.1 %.Fíjate en dos cosas. El umbral depende del monto (para US$25 era 16 %). Y todo esto funciona solo si p está calibrada: si el modelo dice 0.08 pero en realidad es 0.02, estás rechazando clientes buenos.
- 10Reto
Alguien agrega por error un softmax extra al final del modelo de C01, que ya devolvía probabilidades. El top-1 de una foto era 0.9 y las otras 499 categorías se repartían el 0.1 restante. ¿Qué top-1 sale ahora? ¿Qué le pasa a la regla de baja confianza (top-1 menor que 0.3) y a su alerta?
Ver la solución paso a paso
El segundo softmax eleva e a cada probabilidad. El top-1 da e^0.9 ≈ 2.46. En promedio, cada una de las otras 499 vale ≈ 0.0002, y e^0.0002 ≈ 1.0002, así que entre todas suman ≈ 499.1. El total es ≈ 501.6.
Top-1 nuevo: 2.46 ÷ 501.6 ≈ 0.0049, menos de 0.5 %. Ni una foto perfecta se salva: con 1.0, sale e¹ ÷ (e¹ + 499) ≈ 0.54 %.
Así que todas las fotos quedan debajo de 0.3. La tasa de baja confianza salta a 100 %, la alerta (el doble de su promedio de 7 días durante 30 minutos) se dispara y la cola de etiquetado se inunda. Ana ve las mismas cinco sugerencias en el mismo orden, pero con porcentajes de 0.5 % para abajo. Nada truena, y por eso este error es peligroso.
Lo que sigue
EsencialWhat comes next
- En la Ronda, M01 · El mapa y la entrevista: al plantear el problema se dice qué tarea es, qué error duele más (eso fija el umbral) y cuál es el baseline. Para C01, la medida principal sin usuarios es la top-5 accuracy.
- M07 · Servidores de modelos: Triton devuelve 500 logits; el programa de enfrente hace softmax, top-5 y los nombres, y agrega
model_version. Los nombres viajan con el modelo y se revisan al arrancar. - M08 · Optimización de modelos: al convertir el modelo a FP16, los logits cambian del orden de 0.01 y el argmax se puede mover en las fotos casi empatadas. Por eso se exige que el top-1 coincida en al menos 99.5 % de las fotos de prueba.
- M12 · Monitoreo: la distribución del score top-1 y la tasa de baja confianza son alarmas que llegan en minutos, mucho antes que las etiquetas. Su trampa favorita: «la confianza no es accuracy».
- C06 y C09 usan esta lección de punta a punta: un score por política con umbrales por política, y un umbral que sale del dinero.
- En el Dojo, la estación 6, «Código de serving» (todavía no está lista), hace la cadena de esta lección: logits, softmax, top-5 y nombres.
- Las siguientes lecciones: «Una foto, vista por un modelo» explica cómo se arman los 150,528 números que entran; «Cómo aprende un modelo», cómo el entrenamiento gira las perillas; «¿Aprendió de verdad?», cómo se mide un modelo contra su baseline; y «Redes neuronales y CNNs», qué hay entre la entrada y los logits.
Palabras que vas a oír
EsencialWords you will hear
Estos son los conceptos que presentó esta lección.
FunciónfunctionUna regla que a cada entrada le asigna exactamente una salida. Un modelo es una función: entran números (una foto, una tabla) y salen números.Más +
La de la escuela, f(x) = 2x + 1, da 7 si entra 3, y lo vuelve a dar cada vez que entra 3. Un modelo es una función enorme: su forma la elige una persona (la arquitectura) y sus números internos, los parámetros, los ajusta el entrenamiento. Con los parámetros fijos, la misma entrada da la misma salida.
Ejemplo. precio = −300 × años + 1,500 es una función de una entrada: con 2 años da 900 pesos. La ResNet-50 de C01 es una función de 150,528 números a 500.
TareataskEl tipo de pregunta que le haces a un modelo: elegir una categoría, dar un número, ordenar una lista, encontrar objetos… Decide qué sale del modelo y cómo se mide si acertó.Más +
Se decide antes de elegir el modelo, a partir del problema del negocio. Las más comunes: clasificación (binaria, multiclase o multietiqueta), regresión, ranking, detección de objetos, segmentación y ocr. La tarea también decide cómo termina el modelo: una sigmoide, un softmax o nada. Un sistema real a veces combina varias.
Ejemplo. «Sugerir la categoría de una foto» es una tarea de clasificación multiclase. «Sugerir el precio» sería una regresión.
ClasificaciónclassificationLa tarea de elegir de una lista fija de clases. Puede ser binaria (sí o no), multiclase (una de muchas) o multietiqueta (varias a la vez).Más +
El modelo da un puntaje (logit) por clase. En la multiclase, softmax los vuelve probabilidades que suman 1 y gana la más alta (argmax); en la clasificación binaria y la multietiqueta, cada logit pasa por una sigmoide y un umbral decide. Las clases se fijan al entrenar: el modelo no puede elegir una que no estaba en su lista.
Ejemplo. Un filtro de spam (2 clases), la categoría de una foto en C01 (500 clases) o las 7 políticas de moderación de C06 (multietiqueta).
Clasificación binariabinary classificationClasificación con solo dos clases: sí o no. ¿Este pago es fraude? ¿Este correo es spam?Más +
Casi siempre el modelo da un solo logit, la sigmoide lo vuelve la probabilidad del «sí» y un umbral decide. A la clase que buscas (fraude, spam) se le dice positiva; a la otra, negativa. Suele haber desbalance de clases: en C09 el fraude es ≈ 0.08 % de los pagos, así que decir siempre «no» ya acierta 99.92 %.
Ejemplo. Logit 2 → sigmoide 0.881 → con umbral 0.5, «sí, es spam».
MulticlasemulticlassClasificación con más de dos clases en la que cada ejemplo tiene exactamente una respuesta correcta.Más +
Se usa softmax, que obliga a repartir el 100 % entre las clases, y la respuesta es la de logit más alto (argmax) o las k mejores (top-k). Es distinta de la multietiqueta, donde un ejemplo puede tener varias respuestas correctas a la vez.
Ejemplo. C01: cada publicación va en una sola de 500 categorías.
Multietiquetamulti-label classificationClasificación en la que un ejemplo puede tener varias clases a la vez, o ninguna. Cada clase recibe su propio sí o no.Más +
Se usa una sigmoide por etiqueta, no softmax: las probabilidades no compiten ni tienen por qué sumar 1. Cada etiqueta lleva su propio umbral. Con softmax, una etiqueta le quitaría probabilidad a la otra y la escondería.
Ejemplo. En C06 (moderación), el modelo da un score por cada una de 7 políticas. Un post con logits spam 2.0 y violencia 1.0 sale con 88.1 % y 73.1 % (con softmax habría sido 72.7 % y 26.8 %).
RegresiónregressionLa tarea de predecir un número en una escala continua: un precio, un tiempo, una cantidad.Más +
El nombre es histórico y no ayuda: no significa «regresar». Lo que importa es que la salida es un número y que el error se mide por qué tan lejos quedó, no por si acertó o no. Su baseline (línea base) más común es decir siempre el promedio, o lo mismo que la vez anterior.
Ejemplo. Sugerir el precio de unos tenis usados, o pronosticar cuántos litros de leche se van a vender mañana en una tienda (C14).
RankingrankingLa tarea de ordenar una lista de opciones de la más a la menos relevante. Importa el orden, no el puntaje exacto.Más +
Se usa en búsqueda, recomendaciones y anuncios. Muchas veces el modelo es un clasificador que estima una probabilidad (por ejemplo, de que alguien haga clic) y la lista se ordena por esa probabilidad. Si el puntaje combina dos probabilidades, las dos tienen que estar calibradas.
Ejemplo. En C08, unas 1,000 publicaciones candidatas se ordenan por P(click) × (P(contacto | click) + 0.05).
Detección de objetosobject detectionLa tarea de encontrar cada objeto en una imagen: por cada uno, una caja (dónde está), una clase (qué es) y una confianza.Más +
Una caja son cuatro números: por ejemplo, las dos coordenadas de la esquina de arriba a la izquierda, el ancho y el alto, en píxeles. A diferencia de la clasificación, una foto puede dar cero, una o muchas cajas.
Ejemplo. Marcar cada casco y cada chaleco de seguridad en el video de una planta.
SegmentaciónsegmentationLa tarea de ponerle una clase a cada píxel de una imagen. El resultado es una máscara: una imagen del mismo tamaño donde cada píxel dice qué es.Más +
Es más fina que la detección de objetos: no dice «aquí hay un tenis, más o menos en esta caja», sino exactamente qué píxeles son tenis y cuáles son fondo.
Ejemplo. Quitar el fondo de una foto de producto, o marcar qué píxeles de una tomografía son un tumor.
OCRoptical character recognitionReconocimiento óptico de caracteres: leer el texto que aparece en una imagen y devolverlo como texto que la computadora puede usar.Más +
Casi siempre son dos pasos: detectar dónde hay texto y luego reconocer qué dice. La salida es una secuencia de caracteres, y un campo solo está bien si todos lo están: por eso la confianza se calibra por campo. Se usa para leer documentos, tickets, placas o etiquetas.
Ejemplo. Leer «TALLA 27» en la foto de la etiqueta de un tenis, o los 18 dígitos de una CLABE en un estado de cuenta (C05).
LogitlogitEl puntaje crudo que da un modelo de clasificación por cada clase, antes de convertirlo en probabilidad. Puede ser cualquier número, positivo o negativo.Más +
Más alto significa que el modelo se inclina más por esa clase, pero un logit solo no dice mucho: importa comparado con los de las otras clases del mismo modelo. softmax o la sigmoide lo convierten en probabilidad. El nombre viene de la estadística: el logit de una probabilidad p es ln(p ÷ (1 − p)), el logaritmo de su momio, y es la inversa exacta de la sigmoide.
Ejemplo. Tres clases con logits 3.0, 1.0 y 0.0. En C01 el modelo devuelve 500 logits, uno por categoría. En un clasificador binario, con su sigmoide, un logit de 1.39 equivale a 80 %.
SoftmaxsoftmaxLa cuenta que convierte los puntajes crudos de un modelo (sus logits) en probabilidades: eleva e ≈ 2.718 a cada puntaje, suma todo y divide cada uno entre la suma. Quedan números entre 0 y 1 que suman 1.Más +
Conserva el orden (el logit más alto queda con la probabilidad más alta, así que el argmax no cambia) y solo depende de las diferencias entre logits: sumarles a todos el mismo número no cambia nada. Como la exponencial exagera las diferencias, cada punto de diferencia multiplica por e ≈ 2.72. Se usa en la multiclase; en la multietiqueta se usa una sigmoide por etiqueta.
Ejemplo. Logits 3, 1 y 0 → e³ = 20.09, e¹ = 2.72, e⁰ = 1.00; suman 23.81; quedan 84.4 %, 11.4 % y 4.2 %.
SigmoidesigmoidLa función que convierte un solo número cualquiera (un logit) en una probabilidad entre 0 y 1: p = 1 ÷ (1 + e^(−z)). Tiene forma de S.Más +
En 0 da 0.5; con logits grandes se acerca a 1 y con negativos a 0, sin llegar nunca. Se usa en la clasificación binaria y, una por cada etiqueta, en la multietiqueta. Es la inversa del logit: si p = sigmoide(z), entonces z = ln(p ÷ (1 − p)). Un softmax de dos clases es una sigmoide de la diferencia de sus logits.
Ejemplo. z = 2: e^(−2) ≈ 0.135; 1 ÷ 1.135 ≈ 0.881. z = −2 da 0.119, y z = 0 da 0.5.
ProbabilidadprobabilityUn número de 0 a 1 (o de 0 % a 100 %) que dice qué tan posible es algo. 0.25 es una de cada cuatro veces.Más +
Las probabilidades de todas las opciones posibles suman 1. En un clasificador, las que salen de softmax o de la sigmoide son la estimación del modelo, no una verdad medida: qué tan buenas son se revisa con datos.
Ejemplo. Si de 1,000 fotos a las que el modelo les dio 0.9, aciertan 900, sus probabilidades de 0.9 están bien calibradas.
Confianzaconfidence scoreLa probabilidad que un modelo le da a su opción favorita, la del primer lugar. Es lo seguro que dice estar, no una garantía de que acierte.Más +
En la Ronda también se le dice score o score top-1. Un modelo puede estar muy seguro y equivocado, sobre todo ante fotos distintas a las de su entrenamiento: softmax siempre reparte el 100 % entre las clases que conoce. Si está bien calibrado, de cada 100 respuestas con 94 % acierta unas 94. Ojo: en estadística, «intervalo de confianza» es otra cosa.
Ejemplo. «Tenis, 94 %»: la confianza es 0.94. En C01 se llama baja confianza a un top-1 menor que 0.3.
ArgmaxargmaxLa posición del valor más alto de una lista, no el valor. En un clasificador, la posición del logit más alto es la respuesta top-1.Más +
Como softmax no cambia el orden, da lo mismo sacarlo de los logits o de las probabilidades: para saber cuál gana no hace falta softmax. Si dos valores empatan exacto, las librerías suelen devolver la primera posición. En las fotos casi empatadas, un cambio diminuto en los logits mueve el argmax: por eso C01 exige que el top-1 coincida en al menos 99.5 % de las fotos al cambiar de formato. El argmax repetido k veces es el top-k.
Ejemplo. Logits 3.0, 1.0 y 0.0 de Tenis, Botas y Sandalias: el máximo es 3.0 y el argmax es la posición de Tenis.
Top-ktop-kQuedarse con las k opciones de probabilidad más alta, en orden. Top-1 es la favorita; top-5, las cinco mejores.Más +
Sirve para mostrar varias sugerencias en vez de una sola. Es el argmax repetido k veces. El orden de las probabilidades es el mismo que el de los logits, así que el top-k se puede sacar de cualquiera de los dos.
Ejemplo. C01 devuelve el top-5 de 500 categorías: en ≈ 85 de cada 100 fotos acierta la primera y en ≈ 96 la correcta está entre las cinco.
UmbralthresholdUna línea que pone una persona para convertir una probabilidad en una decisión: arriba del umbral se hace una cosa y abajo, otra.Más +
No es parte del modelo: es una regla del producto, se elige con datos y se puede cambiar sin reentrenar. Moverlo cambia qué errores se cometen: subirlo da menos falsas alarmas, pero deja pasar más casos. 0.5 no tiene nada de especial: el umbral sale de lo que cuesta cada error. Al cambiar de modelo hay que revisarlo, porque cada versión reparte su confianza distinto.
Ejemplo. En C01, si la probabilidad del primer lugar es menor que 0.3, la foto cuenta como de baja confianza: se aparta para que una persona la etiquete, y se cuenta para una alerta. En C09, un pago de US$25 conviene rechazarlo desde una probabilidad de fraude de ≈ 16 %.
Baseline (línea base)baselineLa solución más simple con la que comparas un modelo: lo que se hace hoy, una regla sencilla o el modelo más tonto (siempre la clase más común). Si tu modelo no le gana, no sirve.Más +
Sirve para tres cosas: saber si el modelo aprendió algo, decidir si vale la pena lo que cuesta y tener un plan B cuando el modelo falla o no contesta a tiempo. En monitoreo, «línea base» también se usa para el nivel normal de una métrica, como la tasa de baja confianza de los últimos 7 días en C01.
Ejemplo. En C09 el fraude es ≈ 0.08 % de los pagos: «aprobar todo» saca 99.92 % de accuracy y no atrapa ni un fraude. En C14, el baseline es «lo que se vendió el mismo día de la semana pasada», con WAPE ≈ 45 % en los productos que más se venden.
Chequeo
EsencialCheck
Intenta responder en tu cabeza antes de abrir cada respuesta.
1Un modelo da los logits 2, 2 y 0 para Tenis, Botas y Sandalias. ¿Qué probabilidades salen?Ver respuesta
e² ≈ 7.39 dos veces y e⁰ = 1: suman 15.78. Quedan 7.39 ÷ 15.78 ≈ 46.8 % para Tenis, 46.8 % para Botas y 1 ÷ 15.78 ≈ 6.3 % para Sandalias. El modelo está empatado entre dos. Aunque el top-1 pase de 0.3, la diferencia entre el primero y el segundo es cero: en la Ronda, una foto con ese margen tan chico también se aparta para que una persona la etiquete.
2¿Por qué el modelo de moderación de C06 usa una sigmoide por política y no softmax?Ver respuesta
Porque un post puede violar varias políticas a la vez. Softmax las haría competir por el 100 %, y una escondería a la otra: con logits 2 y 1, la violencia quedaría en 26.8 % con softmax y en 73.1 % con su sigmoide.
3El modelo dice «Tenis, 94 %». ¿Quiere decir que acertó?Ver respuesta
No. Es su confianza, no una garantía. Si está bien calibrado, de cada 100 fotos con 94 % se equivoca en unas 6. Además, siempre reparte el 100 % entre las categorías que conoce, aunque la foto no sea de ninguna, y con fotos distintas a las del entrenamiento puede estar muy seguro y equivocado.
4¿Por qué el argmax de los logits es el mismo que el de las probabilidades?Ver respuesta
Porque softmax no cambia el orden: eˣ crece con x, y dividir todo entre la misma suma no cambia cuál es el mayor. Softmax hace falta para saber por cuánto gana el primero, no cuál gana.
5Un detector de fraude saca 99.9 % de accuracy. ¿Qué preguntas primero?Ver respuesta
Cuánto saca el baseline. Si el fraude es ≈ 0.08 % de los pagos, como en C09, «aprobar todo» saca 99.92 % sin atrapar ninguno: el 99.9 % acierta menos que no hacer nada, y aun así podría servir. Hay que ver cuántos fraudes atrapa y a cuántos clientes buenos rechaza.
6En C01 subes el umbral de baja confianza de 0.3 a 0.6. ¿Qué cambia?Ver respuesta
Más fotos cuentan como dudosas. Llegan más a la cola de etiquetado, que cuesta dinero porque las revisa una persona, y la tasa de baja confianza sube de golpe: la alerta que la compara con su promedio de 7 días puede saltar sin que nada se haya roto, así que también hay que ajustarla. Ana ve lo mismo: en la Ronda, la regla no cambia sus sugerencias. El modelo es el mismo: solo cambió la regla.