Sigmoid vs Tanh

Dos funciones clásicas: probabilidades vs centrado en cero

La comparación entre Sigmoid y Tanh es clave para entender los orígenes del deep learning y los problemas que llevaron al uso de funciones modernas como ReLU.

👉 Ambas son funciones suaves y no lineales, pero difieren en su rango de salida y comportamiento del gradiente.

Definición corta

  • Sigmoid: comprime valores entre 0 y 1
  • Tanh: comprime valores entre -1 y 1

Definición matemática

🔹 Sigmoid

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

🔹 Tanh

tanh(x)=exexex+ex\tanh(x) = \frac{e^x – e^{-x}}{e^x + e^{-x}}

👉 Ambas son funciones sigmoides (en forma de “S”).

🧠 Intuición

  • Sigmoid: convierte valores en probabilidades
  • Tanh: normaliza valores alrededor de cero
Sigmoid → [0, 1]  
Tanh → [-1, 1]

Comparación visual conceptual

Sigmoid:
____
/
--/
Tanh:
/
---/---
/

🔄 Diferencia clave

PropiedadSigmoidTanh
Rango[0, 1][-1, 1]
Centrado en cero
Gradiente máximomenormayor
Saturaciónaltaalta
Uso típicosalidacapas ocultas (histórico)

Problema compartido: saturación

Para valores grandes:x0ox0x \gg 0 \quad \text{o} \quad x \ll 0

👉 ambas funciones se “aplanan”.

Ejemplo conceptual

Entrada grande  

Salida casi constante

Gradiente ≈ 0

Impacto en gradiente

🔹 Sigmoid

σ(x)=σ(x)(1σ(x))\sigma'(x) = \sigma(x)(1 – \sigma(x))

👉 gradiente máximo ≈ 0.25

🔹 Tanh

tanh(x)=1tanh2(x)\tanh'(x) = 1 – \tanh^2(x)

👉 gradiente máximo = 1

Interpretación

Tanh → gradiente más fuerte  
Sigmoid → gradiente más débil

Ventaja de Tanh

Al estar centrada en cero:

👉 facilita el aprendizaje


📊 Ejemplo conceptual

Media ≈ 0  

Mejor propagación

Entrenamiento más estable

Desventaja clave (ambas)

  • saturación
  • desvanecimiento del gradiente

👉 problema crítico en redes profundas.

Cuándo usar cada una

Usa Sigmoid cuando:

  • necesitas probabilidades
  • clasificación binaria
  • capa de salida

Usa Tanh cuando:

  • quieres activación centrada
  • redes pequeñas o clásicas
  • RNNs tradicionales

Ejemplo en Python

import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def tanh(x):
return np.tanh(x)
x = np.array([-2, -1, 0, 1, 2])
print("Sigmoid:", sigmoid(x))
print("Tanh:", tanh(x))

Ejemplo en PyTorch

Python
import torch
import torch.nn as nn
sigmoid = nn.Sigmoid()
tanh = nn.Tanh()
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
print("Sigmoid:", sigmoid(x))
print("Tanh:", tanh(x))

Ejemplo en red neuronal

model = nn.Sequential(
nn.Linear(10, 20),
nn.Tanh(),
nn.Linear(20, 1),
nn.Sigmoid()
)

Qué muestra este ejemplo

  • Tanh en capas ocultas
  • Sigmoid en salida
  • flujo clásico de redes

Errores comunes

Usar sigmoid en capas profundas

Provoca gradientes débiles.


Ignorar saturación

Limita el aprendizaje.

Pensar que Tanh soluciona todo

También satura.

Ejemplo conceptual en ML

Entrada  

Activación

Saturación

Gradiente pequeño

Interpretación profunda

Esta comparación refleja una transición histórica:

  • Sigmoid → probabilidades
  • Tanh → mejor flujo
  • ReLU → solución moderna

👉 Es la evolución del diseño de redes neuronales.

Conclusión

  • Sigmoid es ideal para salidas probabilísticas
  • Tanh mejora el flujo de gradiente al estar centrada en cero

👉 Sin embargo, ambas sufren saturación, lo que llevó al uso de ReLU y variantes modernas.

Related Concepts

  • Función de activación
  • ReLU
  • Desvanecimiento del gradiente
  • Backpropagation
  • Optimización