LogSoftmax
La versión logarítmica y estable de Softmax
La LogSoftmax es una función de activación que combina Softmax + logaritmo, produciendo directamente log-probabilidades de forma más eficiente y numéricamente estable.
👉 Es ampliamente utilizada en entrenamiento junto con entropía cruzada.
Definición corta
La LogSoftmax devuelve el logaritmo de las probabilidades generadas por Softmax.
Definición matemática
LogSoftmax(xi)=log(∑jexjexi)
Forma equivalente:
👉 evita calcular Softmax explícitamente.
Intuición
LogSoftmax responde:
👉 “En lugar de probabilidades, trabajo directamente con log-probabilidades”
Softmax → probabilidades
LogSoftmax → log(probabilidades)
¿Por qué usar log?
Porque:
- suma → producto en log
- evita underflow
- mejora estabilidad
Ejemplo simple
Entrada:
[2.0, 1.0, 0.1]
Softmax:
[0.66, 0.24, 0.10]
LogSoftmax:
[-0.41, -1.43, -2.30]
👉 valores negativos (log de probabilidades).
Relación con otros conceptos
- Softmax
- Entropía cruzada
- Log-likelihood
- Clasificación multiclase
🧠 Propiedad clave
👉 transformación logarítmica de probabilidades.
🧠 Ventaja principal
👉 Estabilidad numérica
📊 Problema sin LogSoftmax
👉 overflow.
📊 Solución
👉 estabiliza cálculo.
📊 Ejemplo conceptual
Valores grandes
↓
LogSoftmax
↓
Valores controlados
🧠 Uso en machine learning
🔹 1. Clasificación multiclase
- salida del modelo
🔹 2. NLLLoss (Negative Log Likelihood)
👉 LogSoftmax + NLLLoss = CrossEntropyLoss
🔹 3. Modelos de lenguaje
- log-probabilidades de tokens
Ejemplo conceptual
Modelo
↓
LogSoftmax
↓
Log-probabilidades
↓
Pérdida
Relación con CrossEntropyLoss
En PyTorch:
CrossEntropyLoss = LogSoftmax + NLLLoss
👉 ya incluido internamente.
Ejemplo en Python
import numpy as npdef log_softmax(x): e = np.exp(x - np.max(x)) softmax = e / np.sum(e) return np.log(softmax)x = np.array([2.0, 1.0, 0.1])print(log_softmax(x))
Ejemplo en PyTorch
import torchimport torch.nn as nnlog_softmax = nn.LogSoftmax(dim=0)x = torch.tensor([2.0, 1.0, 0.1])print(log_softmax(x))
Ejemplo en modelo
import torch.nn as nnmodel = nn.Sequential( nn.Linear(10, 3), nn.LogSoftmax(dim=1))
🧠 Qué muestra este ejemplo
- salida en log-probabilidades
- estabilidad numérica
- integración con pérdida
Errores comunes
Usar Softmax + log manualmente
Menos eficiente y menos estable.
Usar LogSoftmax con CrossEntropyLoss
Duplicación (ya lo incluye).
Interpretar directamente como probabilidades
Son log-probabilidades.
📊 Ejemplo conceptual en ML
Logits
↓
LogSoftmax
↓
Log-probabilidades
↓
Pérdida estable
Interpretación profunda
LogSoftmax refleja un principio clave:
👉 Trabajar en el espacio logarítmico mejora estabilidad y eficiencia
Es fundamental en:
- entrenamiento de modelos
- modelos probabilísticos
- sistemas a gran escala
Conclusión
La LogSoftmax es una versión logarítmica de Softmax que mejora la estabilidad numérica y es esencial para el entrenamiento eficiente de modelos de clasificación.
👉 Es la forma correcta de trabajar con probabilidades en muchos sistemas reales.
Related Concepts
- Softmax
- Entropía cruzada
- Log-likelihood
- Clasificación multiclase
- Optimización