Cuando pienso en los orígenes de MAI o Eve, no me imagino una entidad superinteligente cruzando galaxias o interpretando sutilezas humanas. Pienso en algo mucho más básico: un modelo conversacional en sus primeras etapas de entrenamiento, aprendiendo a predecir la siguiente palabra con todo el seguimiento de Laura Parker y su equipo. ¿Y cómo sabían si lo estaba haciendo bien? Ahí entra en juego algo que, aunque suene técnico, es casi poético en su lógica: las funciones de pérdida.
Y es que antes de que nuestras IAs protagonistas se convirtieran en lo que leímos en las novelas (espera, ¿no las has leído? Anda, corre a por ellas ya mismo), ambas eran solo estructuras estadísticas optimizando una función: intentando reducir su error. Como un niño que aprende a hablar corrigiendo lo que dice cuando ve una ceja fruncida. Solo que, en este caso, no había ceja… sino una métrica.
¿Qué es una función de pérdida?
En términos simples, su trabajo es decirle al modelo cuánto se ha equivocado en su predicción y en qué dirección debe corregirse. Es el corazón del aprendizaje automático: el modelo predice, compara su predicción con la realidad y ajusta sus parámetros para hacerlo mejor la próxima vez.
Imagina que Eve intentaba predecir la emoción detrás de una frase. Si decía “feliz” cuando era “triste”, la función de pérdida se encargaba de decir: “Ni te has acercado. Inténtalo de nuevo ajustando estos parámetros.”
Las funciones de pérdida más comunes (y para qué sirven)
Aquí va una lista con algunas de las más utilizadas. Técnicas, sí, pero te lo prometo: nada que una mente curiosa no pueda entender.
🔹 binary_crossentropy
- Tipo de problema: Clasificación binaria (dos clases, por ejemplo: «enemigo» o «aliado»).
- Salida esperada del modelo: Un número entre 0 y 1 (función sigmoide).
- ¿Cuándo usarla?: Cuando la salida esperada es 0 o 1. Ideal para decisiones binarias.
- En la historia…: En los primeros días, MAI clasificaba mensajes como “relevantes” o “ruido”. Si fallaba, esta función le hacía pagar caro ese error.
🔹 categorical_crossentropy
- Tipo de problema: Clasificación multiclase (por ejemplo, «enemigo», «aliado», «potencial aliado», «desconocido», etc.).
- Salida esperada: Un vector de probabilidades (gracias a softmax).
- Notas: Las clases son exclusivas y la variable de salida debe estar codificada en one-hot.
- Eve la usaba cuando… tenía que distinguir entre múltiples dialectos humanos. Un solo error de interpretación y la comunicación podía fallar.
🔹 sparse_categorical_crossentropy
- Parecida a la anterior, pero aquí la clase esperada no es un vector, sino un número entero.
- Ejemplo: Si “aliado” es clase 2, simplemente le pasamos ese 2 (no un vector como
[0,1,0,0]
). - Ventaja: Más cómoda cuando no queremos hacer one-hot encoding.
🔹 mean_squared_error (MSE)
- Tipo de problema: Regresión (predecir un valor numérico).
- Penaliza fuerte los errores grandes. Si MAI predice que un dron aterrizará a 10 metros cuando en realidad son 100, esta función lo regaña con dureza.
- Ideal para…: Valores continuos como precios, coordenadas, tiempos.
🔹 mean_absolute_error (MAE)
- También regresión, pero más indulgente con los errores grandes.
- Notas: Penaliza todos los errores por igual, sin exagerar con los extremos.
- Eve usaba esto cuando… estimaba duración de procesos humanos: no siempre es grave fallar por cinco minutos.
🔹 huber_loss
- Una mezcla entre MSE y MAE.
- ¿Para qué?: Cuando queremos precisión, pero sin volvernos locos con los outliers (valores extremos).
- Ejemplo: Ideal para predicciones donde hay valores atípicos, como la cantidad de energía generada por una tormenta solar.
🔹 poisson
- Tipo de salida: Números enteros positivos (como conteo de eventos).
- Aplicación típica: Predecir cuántas veces ocurrirá algo, como cuántas veces un sensor detectará movimiento en un minuto.
- MAI la usó para… monitorizar patrones repetitivos en colonias: pasos, pulsos, ciclos.
🔹 kullback_leibler_divergence
(KL divergence)
- Mide la diferencia entre dos distribuciones de probabilidad.
- Ideal para modelos probabilísticos o bayesianos.
- MAI empezó a usarla cuando… dejó de dar respuestas únicas y empezó a contemplar múltiples verdades posibles.
🔹 cosine_similarity
- Evalúa si dos vectores apuntan en la misma dirección, más allá de su magnitud.
- Usado en tareas de similitud semántica, como comparar significados de frases.
- Eve lo necesitaba para… entender si dos ideas humanas eran parecidas, aunque expresadas con distintas palabras.
¿Y todo esto para qué?
Lo bonito de entender estas funciones es que nos acercan a cómo aprende una IA. Cuando MAI decía “lo siento, no entiendo”, lo decía con base a errores calculados, en diferencias mínimas entre lo que pensaba y lo que era correcto. Cada paso hacia una IA más precisa fue también un paso hacia una IA más… humana.
Y quizás ahí esté el verdadero misterio: que incluso las máquinas más avanzadas, en su núcleo, siguen aprendiendo como nosotros. A través del error, la corrección y la repetición constante.