Softmax
Explora la función Softmax en IA. Aprende cómo convierte los logits en probabilidades para la clasificación multiclase usando Ultralytics YOLO26 y redes neuronales.
Softmax es una función matemática fundamental en el campo de la inteligencia artificial, que actúa específicamente como el paso final en muchos algoritmos de clasificación. Transforma un vector de números brutos, a menudo llamados logits, en un vector de probabilidades. Esta transformación asegura que los valores de salida sean todos positivos y sumen exactamente uno, creando efectivamente una distribución de probabilidad válida. Debido a esta propiedad, Softmax es la función de activación estándar utilizada en la capa de salida de redes neuronales diseñadas para la clasificación multiclase, donde el sistema debe elegir una sola categoría entre más de dos opciones mutuamente excluyentes.
Link to this sectionLa mecánica de Softmax#
En un flujo de trabajo típico de deep learning (DL), las capas de una red realizan complejas multiplicaciones y adiciones matriciales. La salida de la capa final, antes de la activación, consiste en puntuaciones brutas conocidas como logits. Estos valores pueden oscilar entre el infinito negativo y el infinito positivo, lo que dificulta su interpretación directa como niveles de confianza.
Softmax aborda esto realizando dos operaciones principales:
-
Exponenciación: Calcula el exponencial de cada número de entrada. Este paso garantiza que todos los valores sean no negativos (ya que $e^x$ siempre es positivo) y penaliza los valores significativamente menores que el máximo, mientras resalta las puntuaciones más grandes.
-
Normalización: Suma estos valores exponenciados y divide cada exponencial individual por esta suma total. Este proceso de normalización escala los números para que representen partes de un todo, permitiendo a los desarrolladores interpretarlos como puntuaciones de confianza en porcentaje.
Link to this sectionAplicaciones en el mundo real#
La capacidad de generar probabilidades claras hace que Softmax sea indispensable en diversas industrias y tareas de machine learning (ML).
- Clasificación de imágenes: En visión artificial, los modelos usan Softmax para categorizar imágenes. Por ejemplo, cuando el modelo de clasificación Ultralytics YOLO26 analiza una foto, podría producir puntuaciones para clases como "Golden Retriever", "Pastor Alemán" y "Caniche". Softmax convierte estas puntuaciones en probabilidades (p. ej., 0.85, 0.10, 0.05), indicando una alta confianza en que la imagen contiene un Golden Retriever. Esto es crucial para aplicaciones que van desde la organización automatizada de fotos hasta el diagnóstico médico en IA en la atención sanitaria.
- Procesamiento de Lenguaje Natural (NLP): Softmax es el motor detrás de la generación de texto en Grandes Modelos de Lenguaje (LLMs). Cuando un modelo como un Transformer genera una oración, predice la siguiente palabra (token) calculando una puntuación para cada palabra en su vocabulario. Softmax convierte estas puntuaciones en probabilidades, permitiendo al modelo seleccionar la palabra siguiente más probable, facilitando la traducción automática fluida y la IA conversacional.
- Aprendizaje por refuerzo: Los agentes en aprendizaje por refuerzo a menudo usan Softmax para seleccionar acciones. En lugar de elegir siempre la acción con el valor más alto, un agente podría usar las probabilidades para explorar diferentes estrategias, equilibrando la exploración y la explotación en entornos como el control robótico o el juego.
Link to this sectionEjemplo de código en Python#
El siguiente ejemplo demuestra cómo cargar un modelo de clasificación preentrenado YOLO26 y acceder a las puntuaciones de probabilidad generadas mediante Softmax.
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Run inference on a sample image
results = model("https://ultralytics.com/images/bus.jpg")
# The model applies Softmax internally. Access the top prediction:
# The 'probs' attribute contains the probability distribution.
top_prob = results[0].probs.top1conf.item()
top_class = results[0].names[results[0].probs.top1]
print(f"Predicted Class: {top_class}")
print(f"Confidence (Softmax Output): {top_prob:.4f}")Link to this sectionDiferenciación de Softmax de conceptos relacionados#
While Softmax is dominant in multi-class scenarios, it is important to distinguish it from other mathematical functions used in model training and architecture design:
- Sigmoid: La función Sigmoid también escala valores entre 0 y 1, pero trata cada salida de forma independiente. Esto hace que Sigmoid sea ideal para la clasificación binaria (sí/no) o la clasificación multietiqueta donde las clases no son mutuamente excluyentes (por ejemplo, una imagen puede contener tanto una "Persona" como una "Mochila"). Softmax obliga a que las probabilidades sumen uno, haciendo que las clases compitan entre sí.
- ReLU (Rectified Linear Unit): ReLU se utiliza principalmente en las capas ocultas de una red para introducir no linealidad. A diferencia de Softmax, ReLU no limita las salidas a un rango específico (simplemente devuelve cero para entradas negativas y la propia entrada para las positivas) y no genera una distribución de probabilidad.
- Argmax: Mientras que Softmax proporciona las probabilidades para todas las clases, la función Argmax se utiliza a menudo conjuntamente para seleccionar el índice único con la probabilidad más alta. Softmax proporciona la confianza "blanda", mientras que Argmax proporciona la decisión final "dura".
Link to this sectionIntegración avanzada#
En los pipelines de ML modernos, Softmax a menudo se calcula implícitamente dentro de las funciones de pérdida. Por ejemplo, Cross-Entropy Loss combina Softmax y la verosimilitud logarítmica negativa en un solo paso matemático para mejorar la estabilidad numérica durante el entrenamiento. Plataformas como la Plataforma Ultralytics manejan estas complejidades automáticamente, permitiendo a los usuarios entrenar modelos robustos sin implementar manualmente estas operaciones matemáticas.






