Softmax vs Sigmoid

Probabilidades independientes vs probabilidades competitivas

La comparación entre Softmax y Sigmoid es fundamental para entender cómo un modelo produce probabilidades en tareas de clasificación.

👉 La diferencia clave está en si las clases compiten entre sí o son independientes.

Definición corta

  • Sigmoid: calcula probabilidades independientes para cada clase
  • Softmax: distribuye probabilidad entre clases mutuamente excluyentes

Definición matemática

🔹 Sigmoid

σ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}

👉 se aplica a cada salida de forma independiente.

🔹 Softmax

Softmax(xi)=exijexj\text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}

👉 convierte un vector en una distribución de probabilidad.

Intuición

  • Sigmoid: “cada clase tiene su propia probabilidad”
  • Softmax: “las clases compiten entre sí”
Sigmoid → múltiples clases pueden ser verdaderas  
Softmax → solo una clase domina

Diferencia clave

PropiedadSigmoidSoftmax
Tipo de problemamulti-labelmulti-class
Dependencia entre clasesindependientedependiente
Suma de probabilidadesno necesariamente 1siempre 1
Interpretaciónprobabilidad individualdistribución

Caso 1: Clasificación binaria

👉 Usa Sigmoid

Ejemplo:

  • spam / no spam
  • enfermedad / no enfermedad

Caso 2: Clasificación multiclase (exclusiva)

👉 Usa Softmax

Ejemplo:

  • gato / perro / pájaro
  • dígitos (0–9)

Caso 3: Clasificación multi-label

👉 Usa Sigmoid

Ejemplo:

  • imagen con gato y perro
  • etiquetas múltiples

Ejemplo conceptual

Sigmoid:
Gato → 0.8
Perro → 0.7
→ ambos posiblesSoftmax:
Gato → 0.8
Perro → 0.2
→ compiten

Interpretación probabilística

🔹 Sigmoid

Cada salida:P(yi=1)P(y_i = 1)

👉 independiente.

🔹 Softmax

iP(yi)=1\sum_i P(y_i) = 1

👉 distribución conjunta.

Ejemplo conceptual

Sigmoid → decisiones independientes  
Softmax → decisión única global

Relación con funciones de pérdida

🔹 Sigmoid → Binary Cross Entropy

L=[ylog(p)+(1y)log(1p)]L = -[y \log(p) + (1-y)\log(1-p)]

🔹 Softmax → Categorical Cross Entropy

L=yilog(pi)L = -\sum y_i \log(p_i)

Ejemplo en Python

Python
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def softmax(x):
e = np.exp(x)
return e / np.sum(e)
x = np.array([2.0, 1.0, 0.1])
print("Sigmoid:", sigmoid(x))
print("Softmax:", softmax(x))

Ejemplo en PyTorch

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

Ejemplo en modelo

Python
# Sigmoid (multi-label)
model_sigmoid = nn.Sequential(
nn.Linear(10, 3),
nn.Sigmoid()
)
# Softmax (multi-class)
model_softmax = nn.Sequential(
nn.Linear(10, 3),
nn.Softmax(dim=1)
)

🧠 Qué muestra este ejemplo

  • independencia vs competencia
  • distribución de probabilidad
  • uso correcto según tarea

Errores comunes

Usar Softmax en multi-label

Fuerza una sola clase → incorrecto.

Usar Sigmoid en multi-class exclusivo

No normaliza → resultados inconsistentes.

Confundir probabilidades

Interpretación cambia completamente.

Ejemplo conceptual en ML

Salida del modelo  

Función de activación

Interpretación probabilística

Interpretación profunda

Esta comparación refleja un principio clave:

👉 La estructura del problema define la función de activación

  • Sigmoid → independencia
  • Softmax → competencia

Conclusión

  • Sigmoid es ideal para problemas con múltiples etiquetas independientes
  • Softmax es ideal para clasificación con clases mutuamente excluyentes

👉 Elegir mal entre ellas puede romper completamente el modelo.

Related Concepts

  • Función de activación
  • Función de pérdida
  • Entropía cruzada
  • Clasificación multi-label
  • Clasificación multi-class