Activación centrada en cero para un mejor flujo de aprendizaje
La Tanh (Tangente hiperbólica) es una función de activación que transforma valores en un rango entre -1 y 1, manteniendo una forma sigmoide pero centrada en cero.
👉 Fue ampliamente utilizada en redes neuronales antes de la adopción masiva de ReLU.
Definición corta
La Tanh es una función de activación que mapea valores al rango [−1,1].
Definición matemática
👉 es una versión escalada y centrada de Sigmoid.
Intuición
Tanh responde:
👉 “Normalizo los valores alrededor de cero”
Negativos → valores negativos
Positivos → valores positivos
Centro → 0
Interpretación geométrica
- curva en forma de “S”
- simétrica respecto al origen
Ejemplo conceptual
-∞ → -1
0 → 0
+∞ → 1
🔄 Relación con otros conceptos
- Sigmoid
- Softsign
- ReLU
- Función de activación
Propiedades clave
🔹 1. Centrada en cero
👉 mejora el flujo de gradiente.
🔹 2. Diferenciable
Derivada:
👉 gradiente máximo en 0.
🔹 3. No lineal
Permite modelar relaciones complejas.
Ejemplo conceptual
Salida balanceada
↓
Gradiente más estable
↓
Mejor aprendizaje
Ventaja sobre Sigmoid
- centrada en cero
- gradiente más fuerte
- mejor convergencia
Comparación conceptual
Sigmoid → [0,1]
Tanh → [-1,1]
Problema principal: saturación
Para valores grandes:
- x≫0 → salida ≈ 1
- x≪0 → salida ≈ -1
👉 gradiente ≈ 0
📊 Ejemplo conceptual
Entrada grande
↓
Salida plana
↓
Gradiente ≈ 0
Impacto en redes profundas
- desvanecimiento del gradiente
- aprendizaje lento en capas profundas
Uso en machine learning
🔹 1. Redes neuronales clásicas
- capas ocultas
🔹 2. RNNs
- modelado de secuencias
🔹 3. Sistemas antiguos
- antes de ReLU
Ejemplo conceptual
Entrada
↓
Tanh
↓
Salida centrada
↓
Mejor propagación
Tanh vs ReLU
- Tanh → suave pero saturada
- ReLU → no saturada en positivos
Tanh vs Softsign
- Tanh → saturación rápida
- Softsign → transición más gradual
Ejemplo en Python
import numpy as npdef tanh(x): return np.tanh(x)x = np.array([-2, -1, 0, 1, 2])print(tanh(x))
Ejemplo en PyTorch
import torchimport torch.nn as nntanh = nn.Tanh()x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])print(tanh(x))
Ejemplo en modelo
import torch.nn as nnmodel = nn.Sequential( nn.Linear(10, 20), nn.Tanh(), nn.Linear(20, 1))
🧠 Qué muestra este ejemplo
- activación centrada
- transformación no lineal
- uso clásico en redes
Errores comunes
Usarla en redes profundas modernas
ReLU suele ser mejor.
Ignorar saturación
Afecta gradiente.
Pensar que es suficiente para todo
Tiene limitaciones.
Ejemplo conceptual en ML
Entrada
↓
Tanh
↓
Salida balanceada
↓
Gradiente más estable
Interpretación profunda
Tanh representa un paso clave en la evolución:
👉 De funciones probabilísticas (Sigmoid) → a funciones centradas (Tanh) → a funciones eficientes (ReLU)
Conclusión
La Tanh es una función de activación centrada en cero que mejora el flujo de gradiente respecto a Sigmoid, pero sigue sufriendo saturación en redes profundas.
👉 Es fundamental para entender la evolución hacia activaciones modernas.