LogSoftmax

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(exijexj)\text{LogSoftmax}(x_i)=\log\left(\frac{e^{x_i}}{\sum_j e^{x_j}}\right)LogSoftmax(xi​)=log(∑j​exj​exi​​)


Forma equivalente:LogSoftmax(xi)=xilog(jexj)\text{LogSoftmax}(x_i) = x_i – \log\left(\sum_j e^{x_j}\right)


👉 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

log(Softmax(x))\log(\text{Softmax}(x))


👉 transformación logarítmica de probabilidades.


🧠 Ventaja principal

👉 Estabilidad numérica


📊 Problema sin LogSoftmax

exmuy grandee^x \rightarrow \text{muy grande}

👉 overflow.


📊 Solución

ximax(x)x_i – \max(x)

👉 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)

L=log(pi)L = -\log(p_i)


👉 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 np
def 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

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

Ejemplo en modelo

Python
import torch.nn as nn
model = 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