Explicador en lenguaje claro
Softmax, explicado
Softmax es la función que convierte una lista de puntuaciones crudas en probabilidades que suman uno. Eleva e a cada puntuación y divide por el total, lo que exagera las diferencias: una puntuación apenas más alta se vuelve una porción mucho mayor. Los modelos de lenguaje lo usan para las probabilidades del siguiente token y, dentro de attention, para convertir coincidencias en pesos.
¿Qué hace softmax y dónde lo usa un LLM?
Softmax convierte una lista de puntuaciones crudas en porcentajes que suman 100. Exagera las diferencias: una puntuación apenas por delante se vuelve una porción muy por delante, y las bajas se encogen hacia cero sin llegar a tocarlo. Los modelos de lenguaje lo usan en los dos lugares que más importan: en la salida, para convertir puntuaciones de palabras en las probabilidades de la siguiente palabra, y dentro de attention, para decidir cuánto aporta cada palabra anterior a la actual.
Revisado por última vez el
No te quedes en leerlo. Opera tú mismo el mecanismo en una lección interactiva corta.
Míralo funcionar: Cómo la atención mezcla el significado →Gratis, sin código, sin registro.
Diez segundos, sin lección: juega con el widget independiente, e insértalo en tu propia página.
La fórmula de softmax, en tres pasos
Escrita, softmax de una puntuación z es e elevado a z, dividido por la suma de e elevado a cada puntuación de la lista. En símbolos: softmax(z_i) = e^z_i / Σ e^z_j. Las puntuaciones que entran se suelen llamar logits.
En pasos simples: eleva e (más o menos 2,718) a cada puntuación, suma esos resultados y divide cada resultado por el total. La exponencial vuelve positivo cada valor, aunque la puntuación sea negativa, y estira las diferencias. Dividir por el total hace que las salidas sumen exactamente uno, así que se leen como probabilidades.
Una propiedad útil: sumar el mismo número a todas las puntuaciones no cambia nada. Solo importan las diferencias. Por eso el código resta la puntuación más alta antes de la exponencial. El resultado es el mismo y nunca se calcula e elevado a 1.000, que desbordaría.
Un ejemplo de softmax resuelto con números
Imagina que un modelo leyó 'El gato se sentó en la' y da estas puntuaciones a tres palabras candidatas: alfombra 2,0, silla 1,0, luna 0,1. Este es softmax, paso a paso.
Alfombra se queda con unos dos tercios de la probabilidad. Mira la proporción: su puntuación es 1,0 más alta que la de silla, y su probabilidad es 2,7 veces mayor. No es casualidad. Una diferencia d en puntuación siempre se vuelve una proporción de e^d en probabilidad. Una diferencia de 2 da una proporción de 7,4, y una de 5, de unas 148.
Durante el entrenamiento, este mismo número es la pérdida. Si 'alfombra' era la palabra real, la pérdida de este paso es menos el logaritmo de 0,659, unos 0,42. El entrenamiento ajusta los pesos para que la porción de la palabra correcta crezca y ese número baje.
| Palabra | Puntuación (logit) | e^puntuación | Dividido por 11,21 | Probabilidad |
|---|---|---|---|---|
| alfombra | 2,0 | 7,389 | 7,389 / 11,21 | 0,659, un 66% |
| silla | 1,0 | 2,718 | 2,718 / 11,21 | 0,242, un 24% |
| luna | 0,1 | 1,105 | 1,105 / 11,21 | 0,099, un 10% |
Qué le hace la temperatura a softmax, en números
La temperatura divide cada puntuación antes de softmax. Por debajo de 1 estira las diferencias, y la palabra principal se lo lleva casi todo. Por encima de 1 las aprieta, y las opciones raras reciben una oportunidad real. El orden nunca cambia, solo lo afilada que queda la distribución.
Con las mismas tres puntuaciones, bajar la temperatura a 0,5 le da a alfombra el 86% y deja a luna con un 2%. Subirla a 2 baja a alfombra a la mitad, y luna sube a casi una quinta parte. Ese es todo el mecanismo detrás del control de temperatura de los productos de IA.
| Temperatura | alfombra | silla | luna |
|---|---|---|---|
| 0,5, enfocada | 86,4% | 11,7% | 1,9% |
| 1,0, por defecto | 65,9% | 24,2% | 9,9% |
| 2,0, suelta | 50,2% | 30,4% | 19,4% |
Por qué softmax importa en los modelos reales
Cada palabra que escribe un chatbot pasa por un softmax sobre todo su vocabulario. GPT-2 puntuaba 50.257 tokens en cada paso. Llama 3 puntúa 128.256. El modelo da una puntuación por token, softmax la convierte en probabilidad y el muestreo saca de ahí el siguiente token.
Dentro de attention, softmax se ejecuta muchas más veces. Cada capa y cada head de attention hace un softmax por posición, sobre todas las posiciones anteriores. Llama 3 8B tiene 32 capas con 32 heads cada una, así que leer un prompt de 1.000 tokens supone cerca de un millón de filas de softmax antes de la primera palabra. Ese costo es la razón de que FlashAttention calcule softmax por bloques con un máximo acumulado, sin guardar nunca la tabla completa de puntuaciones en memoria.
También aparece donde un producto muestra probabilidades. Los logprobs que devuelve una API son los logaritmos de estas salidas. Las puntuaciones de confianza de un clasificador, el resaltado de tokens en un playground y los colores de un mapa de calor de attention son porciones de softmax.
Softmax vs sigmoid vs argmax
Las tres se confunden a menudo. Argmax elige la puntuación más alta e ignora el resto. Sigmoid aplasta cada puntuación por separado a un valor entre 0 y 1, así que varias opciones pueden ser probables a la vez. Softmax mira la lista entera y reparte una unidad de probabilidad entre todas, así que subir una opción baja las demás.
| Función | Salida | ¿Suma 1? | Uso típico |
|---|---|---|---|
| Argmax | La posición de la puntuación más alta | No, es una sola elección | Greedy decoding, elegir una etiqueta final |
| Sigmoid | Cada puntuación llevada a 0 a 1, por separado | No | Preguntas de sí o no, varias etiquetas a la vez |
| Softmax | Una porción para cada opción | Sí | Elegir el siguiente token, pesos de attention, una clase entre muchas |
Lo que la gente entiende mal
- Softmax elige al ganador. Solo convierte puntuaciones en porciones. La elección, muestrear o tomar la primera, viene después.
- Los porcentajes son la confianza del modelo sobre hechos. Describen texto probable, no verdad, y por eso una respuesta errónea puede llevar una porción alta.
- Es un detalle oscuro. El control de temperatura que ves en los productos funciona remodelando puntuaciones justo antes de este paso.
Dónde lo ves en productos reales
- Las APIs que devuelven logprobs te muestran las porciones que produjo softmax.
- El ajuste de temperatura es aritmética aplicada justo antes de softmax.
- Los mapas de calor de attention en las visualizaciones son porciones de softmax pintadas como color.
Preguntas frecuentes
- ¿Por qué no elegir simplemente la puntuación más alta?
- A veces se hace, eso es greedy decoding. Pero el entrenamiento necesita una salida suave de la que aprender, y el muestreo necesita probabilidades reales de las que sacar. El softmax convierte puntuaciones arbitrarias en una distribución que sirve para ambas cosas.
- ¿Qué le hace la temperature al softmax?
- Divide las puntuaciones antes de la exponencial. Una temperature baja exagera las diferencias, así que la opción principal domina y el modelo parece decidido. Una alta las aplana, y las opciones improbables reciben una oportunidad real. Cambia la forma de la distribución, nunca el orden.
- ¿Dónde se usa el softmax dentro de un transformer?
- Dos veces, para trabajos distintos. Dentro de la attention convierte las puntuaciones de relevancia en pesos de mezcla. Al final convierte las puntuaciones sobre todo el vocabulario en probabilidades del siguiente token. La misma función, una mezcla contexto y la otra elige palabra.
- ¿Cuál es la fórmula del softmax?
- Para una lista de puntuaciones, eleva e a cada puntuación y divide cada resultado por la suma de todos. Cada salida cae entre cero y uno y las salidas suman uno. La exponencial es lo que convierte una ventaja pequeña en puntuación en una ventaja grande en probabilidad.
- ¿Por qué el softmax se llama soft?
- Porque es una versión suave de elegir el máximo. Un máximo duro le da todo el peso a la única puntuación más alta. El softmax le da la mayor parte del peso a la más alta y un poco al resto, y es diferenciable, que es lo que necesita el entrenamiento por descenso de gradiente.
- ¿Por qué no dividir cada puntuación por la suma de todas?
- Las puntuaciones crudas pueden ser negativas o cero, así que dividir por su suma puede dar porciones negativas o indefinidas. La exponencial vuelve positivo cada valor y premia la ventaja: una puntuación 1 punto más alta recibe 2,7 veces más probabilidad. Dividir sin más trataría una ventaja pequeña como una diferencia pequeña.
Explicadores relacionados
Más en Dentro del transformer
Una idea a la vez, en tu correo
Lecciones y explicadores nuevos, escritos como están escritas estas páginas. De vez en cuando, no a diario, y nunca una secuencia de venta.
Primero te enviamos un enlace de confirmación. Puedes darte de baja con un clic, cuando quieras. Privacidad.
Parte de See How AI Works, un curso interactivo gratuito, donde aprendes cómo funciona la IA moderna operándola, no viendo videos.