Activación suave que reduce el sesgo y mejora el aprendizaje
La ELU (Exponential Linear Unit) es una función de activación que combina una parte lineal para valores positivos con una parte exponencial suave para valores negativos.
👉 Fue diseñada para mejorar el flujo de gradiente y reducir el sesgo en activaciones, superando limitaciones de ReLU.
Definición corta
La ELU es una función que:
- mantiene valores positivos lineales
- transforma valores negativos suavemente con una función exponencial
Definición matemática
👉 donde α controla la pendiente en la región negativa (típicamente 1).
Intuición
ELU responde:
👉 “Los valores negativos no se eliminan, sino que se suavizan”
ReLU → corta negativos
ELU → los suaviza progresivamente
Interpretación geométrica
- región positiva → igual que ReLU
- región negativa → curva exponencial suave
Comparación visual conceptual
ReLU:
/
----/ELU:
/
---/
)
Diferencia clave con ReLU
| Propiedad | ReLU | ELU |
|---|---|---|
| Negativos | 0 | valores negativos suaves |
| Gradiente negativo | 0 | ≠ 0 |
| Suavidad | no | sí |
| Centrado en cero | no | parcialmente |
Ventaja principal
👉 ELU produce activaciones con media cercana a 0
Ejemplo conceptual
Activaciones positivas y negativas
↓
Media ≈ 0
↓
Entrenamiento más estable
Impacto en el gradiente
🔹 ReLU
- gradiente = 0 en negativos
🔹 ELU
👉 mantiene flujo de gradiente.
Interpretación
ELU → evita neuronas muertas
ReLU → puede bloquear neuronas
Ventajas
- reduce el Dying ReLU
- activaciones centradas
- transición suave
- mejor convergencia en algunos casos
Desventajas
- más costosa (exponencial)
- puede saturar en negativos extremos
- menos eficiente que ReLU
Cuándo usar ELU
Usa ELU cuando:
- necesitas estabilidad
- tienes problemas de gradiente
- modelos más pequeños o medianos
Evítala cuando:
- necesitas máxima velocidad
- trabajas con hardware limitado
Ejemplo en Python
import numpy as npdef elu(x, alpha=1.0): return np.where(x >= 0, x, alpha * (np.exp(x) - 1))x = np.array([-2, -1, 0, 1, 2])print(elu(x))
Ejemplo en PyTorch
import torchimport torch.nn as nnelu = nn.ELU(alpha=1.0)x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])print(elu(x))
Ejemplo en modelo
import torch.nn as nnmodel = nn.Sequential( nn.Linear(10, 20), nn.ELU(), nn.Linear(20, 1))
Qué muestra este ejemplo
- activación suave
- flujo continuo de gradiente
- alternativa a ReLU
Errores comunes
Pensar que ELU reemplaza siempre a ReLU
No siempre es necesario.
Ignorar coste computacional
Puede ser relevante en producción.
No ajustar α
Puede afectar comportamiento.
Ejemplo conceptual en ML
Entrada
↓
Activación ELU
↓
Flujo de gradiente continuo
↓
Entrenamiento estable
Interpretación profunda
ELU representa un cambio importante:
👉 De funciones “bruscas” (ReLU) a funciones “suaves” que:
- mantienen información
- mejoran estabilidad
- favorecen aprendizaje profundo
Conclusión
La ELU mejora sobre ReLU al introducir suavidad y mantener gradientes en valores negativos, lo que puede llevar a un entrenamiento más estable.
👉 Es un paso intermedio clave hacia activaciones modernas como GELU y Swish.
Related Concepts
- ReLU
- Leaky ReLU
- GELU
- Función de activación
- Desvanecimiento del gradiente