Sigmoid
La función sigmoide asigna cualquier número real a un valor entre 0 y 1. Abarca su fórmula, gradiente, salidas de probabilidad, compuertas y código de PyTorch.
La función sigmoide, σ(x) = 1 / (1 + e^(−x)), transforma cualquier número real en un valor entre 0 y 1 siguiendo una curva en forma de S: las entradas muy negativas dan salidas cercanas a 0, las muy positivas dan salidas cercanas a 1 y una entrada de 0 da exactamente 0,5. En aprendizaje automático (ML), «sigmoide» casi siempre se refiere a esta función logística, la misma curva que convierte una puntuación lineal en una probabilidad en la regresión logística. En una red neuronal (NN), la sigmoide cumple tres funciones: fue la función de activación original de las capas ocultas, convierte una puntuación final en una probabilidad para salidas binarias y multietiqueta, y actúa como un interruptor gradual en las compuertas de las celdas recurrentes y otras capas con compuertas. Desde entonces, las capas ocultas han pasado a utilizar funciones como ReLU, por lo que la mayoría de las sigmoides de los modelos actuales se encuentran en las salidas y las compuertas.
Fórmula y propiedades#
La sigmoide es simétrica respecto a su punto medio, σ(−x) = 1 − σ(x), y su inversa es la función logit, log(p / (1 − p)), que convierte una probabilidad en logaritmo de las razones de probabilidades. Por eso, la salida sin procesar de una red antes de aplicar la sigmoide se denomina logit. La derivada tiene una forma compacta, σ′(x) = σ(x)(1 − σ(x)); alcanza un máximo de 0,25 cuando x = 0 y tiende a cero cuando la curva se aplana en cualquiera de los extremos, un comportamiento denominado saturación. El fragmento de código de PyTorch de abajo calcula las salidas y los gradientes en cinco puntos:
import torch
x = torch.tensor([-6.0, -2.0, 0.0, 2.0, 6.0], requires_grad=True)
y = torch.sigmoid(x)
# Backpropagate to get the derivative sigmoid(x) * (1 - sigmoid(x)) at each input
y.sum().backward()
print(f"Sigmoid: {[round(v, 4) for v in y.tolist()]}")
print(f"Gradient: {[round(v, 4) for v in x.grad.tolist()]}")Imprime los valores de la sigmoide [0.0025, 0.1192, 0.5, 0.8808, 0.9975] y los gradientes [0.0025, 0.105, 0.25, 0.105, 0.0025]. En ±6, la salida está a menos de 0,0025 de su límite y el gradiente es 100 veces menor que en cero, por lo que una entrada de ese intervalo apenas modifica los pesos que la generaron.
La sigmoide en las capas ocultas#
Las primeras redes multicapa utilizaban la sigmoide en todas las capas ocultas, lo que provocaba dos problemas. La propagación hacia atrás multiplica una derivada de activación por cada capa y, como la derivada de la sigmoide nunca supera 0,25, en diez capas sigmoides esas derivadas por sí solas reducen el gradiente como máximo a 0,25¹⁰, menos de una millonésima: es el problema del desvanecimiento del gradiente. Además, las salidas de la sigmoide siempre son positivas, por lo que todos los gradientes de los pesos de una neurona que las recibe comparten el mismo signo en cada actualización, y los pesos solo pueden zigzaguear hacia su óptimo. Tanh centra las salidas en cero, y en 2010 Xavier Glorot y Yoshua Bengio demostraron que la media positiva de la sigmoide lleva a la capa oculta superior de una red profunda inicializada aleatoriamente a la saturación. ReLU eliminó ambos problemas y se convirtió en la opción predeterminada para las capas ocultas; sus sucesoras suaves, como SiLU, x · σ(x), siguen utilizando la sigmoide como compuerta.
La sigmoide como capa de salida#
En la clasificación binaria, una única salida z se convierte en p = σ(z), la probabilidad predicha de la clase positiva, y aplicar a p un umbral de 0,5 equivale a aplicar a z un umbral de 0. El entrenamiento combina la sigmoide con la entropía cruzada binaria, cuyo gradiente respecto al logit es simplemente p − y: la probabilidad predicha menos la etiqueta. Los frameworks fusionan ambas operaciones para lograr estabilidad numérica: BCEWithLogitsLoss de PyTorch recibe logits sin procesar y aplica internamente el truco log-sum-exp, lo que evita calcular el logaritmo de una probabilidad que se haya redondeado exactamente a 0 o 1.
Cuando las etiquetas pueden coexistir, un modelo utiliza una sigmoide por etiqueta; esta configuración se denomina clasificación multietiqueta. En cambio, softmax hace que las clases compitan por una única unidad de probabilidad, por lo que resulta adecuado para etiquetas mutuamente excluyentes:
import torch
# Logits from a classifier for the labels "person", "backpack", and "car"
logits = torch.tensor([2.0, 1.5, -3.0])
# Sigmoid scores each label on its own; softmax makes the labels compete for one total
sigmoid_probs = torch.sigmoid(logits)
softmax_probs = torch.softmax(logits, dim=0)
print(f"Sigmoid: {[round(p, 3) for p in sigmoid_probs.tolist()]}, sum {sigmoid_probs.sum():.3f}")
print(f"Softmax: {[round(p, 3) for p in softmax_probs.tolist()]}, sum {softmax_probs.sum():.3f}")Las puntuaciones sigmoides [0.881, 0.818, 0.047] suman 1,746, por lo que tanto «persona» como «mochila» superan 0,5; en cambio, softmax reparte los mismos logits en [0.62, 0.376, 0.004] y solo «persona» se mantiene por encima de 0,5. Los modelos de detección YOLO26 calculan la puntuación de cada clase con una sigmoide independiente entrenada con BCEWithLogitsLoss, por lo que las puntuaciones de clase de una caja no tienen por qué sumar 1; los modelos de pose YOLO26 aplican una sigmoide al logit de visibilidad de cada punto clave para obtener la probabilidad de que ese punto sea visible.
La sigmoide como compuerta#
Como su salida está entre 0 y 1, la sigmoide puede escalar otra señal elemento a elemento, desde bloquearla por completo hasta dejarla pasar por completo, y seguir siendo diferenciable:
- Celdas LSTM y GRU: Las compuertas sigmoides determinan cuánta memoria anterior se conserva, cuánto contenido nuevo se escribe y cuánto estado se muestra en cada paso temporal, mientras que tanh da forma al propio contenido.
- SwiGLU: Las capas prealimentadas de muchos modelos de lenguaje grandes (LLM) multiplican una proyección aprendida por una segunda proyección activada con SiLU, una compuerta basada en la sigmoide.
- SigLIP: Este modelo de imagen y texto puntúa cada par de imagen y pie de foto de un lote con su propia sigmoide, una probabilidad de coincidencia de sí o no; por eso, su pérdida no necesita normalizarse entre los elementos del lote.
La sigmoide frente a funciones relacionadas#
- Función logística: Sinónimo de sigmoide en ML. En matemáticas, «sigmoide» también engloba otras curvas en forma de S, como tanh y la función de error.
- Softmax: Normaliza un vector completo para convertirlo en probabilidades cuya suma es 1. Para dos clases, softmax aplicado a los logits (z₁, z₂) da σ(z₁ − z₂) para la primera clase, por lo que un softmax de dos salidas y una sigmoide de una salida describen el mismo modelo.
- Tanh: Sigmoide reescalada, tanh(x) = 2σ(2x) − 1, con salidas de −1 a 1 centradas en cero y una derivada máxima de 1.
- Sigmoide fuerte: Aproximación lineal a trozos que evita la exponencial en hardware móvil. MobileNetV3 utiliza ReLU6(x + 3) / 6, que vale 0 por debajo de x = −3, 1 por encima de x = 3 y sigue una línea recta entre ambos valores.










