Softmax

Cómo convertir salidas en probabilidades que compiten entre sí

La Softmax es una función de activación que transforma un vector de valores en una distribución de probabilidad, donde todos los valores son positivos y suman 1.

👉 Es la función estándar para la capa de salida en problemas de clasificación multiclase.


Definición corta

La Softmax convierte un conjunto de valores en probabilidades normalizadas.

Definición matemática

Softmax(xi)=exijexj\text{Softmax}(x_i)=\frac{e^{x_i}}{\sum_j e^{x_j}}Softmax(xi​)=∑j​exj​exi​​

👉 cada valor depende de todos los demás.

Intuición

Softmax responde:

👉 “Voy a asignar probabilidades a cada clase, pero todas deben competir entre sí”

Valores → exponentes → normalización → probabilidades

Propiedades clave

  • todas las salidas son positivas
  • suma total = 1
  • depende del vector completo

Ejemplo simple

Entrada:

[2.0, 1.0, 0.1]

Salida (aprox):

[0.66, 0.24, 0.10]

👉 la clase con mayor valor domina.

Relación con otros conceptos

  • Sigmoid
  • Entropía cruzada
  • Clasificación multiclase
  • Función objetivo

Interpretación probabilística

P(yi)=Softmax(xi)P(y_i) = \text{Softmax}(x_i)

👉 representa la probabilidad de cada clase.

Ejemplo conceptual

Clases: gato, perro, pájaro  

Softmax

Probabilidades suman 1

Propiedad importante: competencia

  • aumentar una clase ↓ reduce otras

👉 clases mutuamente excluyentes.

Ejemplo conceptual

Clase A ↑  

Clase B ↓
Clase C ↓

Uso en machine learning

🔹 Clasificación multiclase

  • una sola clase correcta

🔹 Redes neuronales

  • capa final

🔹 Modelos de lenguaje

  • distribución sobre vocabulario

Ejemplo conceptual

Salida del modelo  

Softmax

Probabilidad por clase

Relación con pérdida

Se usa con:L=yilog(pi)L = -\sum y_i \log(p_i)

👉 entropía cruzada.

Estabilidad numérica

Problema:ex puede ser muy grandee^x \text{ puede ser muy grande}

Solución:Softmax(xi)=eximax(x)jexjmax(x)\text{Softmax}(x_i) = \frac{e^{x_i – \max(x)}}{\sum_j e^{x_j – \max(x)}}

👉 evita overflow.

Ejemplo en Python

Python
import numpy as np
def softmax(x):
e = np.exp(x - np.max(x))
return e / np.sum(e)
x = np.array([2.0, 1.0, 0.1])
print(softmax(x))

Ejemplo en PyTorch

Python
import torch
import torch.nn as nn
softmax = nn.Softmax(dim=0)
x = torch.tensor([2.0, 1.0, 0.1])
print(softmax(x))

Ejemplo en modelo

Python
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 3),
nn.Softmax(dim=1)
)

Qué muestra este ejemplo

  • normalización
  • competencia entre clases
  • salida probabilística

Errores comunes

Usarla en problemas multi-label

Incorrecto → usar Sigmoid.

No usar estabilidad numérica

Puede causar overflow.

Interpretar mal probabilidades

Siempre relativas entre clases.

Ejemplo conceptual en ML

Modelo  

Vector de logits

Softmax

Distribución de probabilidad

Interpretación profunda

Softmax implementa un principio clave:

👉 La probabilidad es relativa al contexto completo

No evalúa clases de forma aislada, sino en competencia.

Conclusión

La Softmax convierte salidas en probabilidades normalizadas y es esencial para clasificación multiclase.

👉 Es la función que traduce logits en decisiones probabilísticas.

Related Concepts

  • Sigmoid
  • Entropía cruzada
  • Clasificación multiclase
  • Función objetivo
  • Optimización