Activación probabilística usada en Transformers y LLMs
La GELU (Gaussian Error Linear Unit) es una función de activación suave que pondera las entradas según su probabilidad bajo una distribución normal.
👉 Es la activación estándar en modelos como BERT, GPT y Transformers modernos.
Definición corta
La GELU activa valores de forma probabilística, suavizando la transición entre activado y no activado
Definición matemática
👉 donde es la función de distribución acumulada de una normal estándar.
Aproximación común (más eficiente)
Intuición
GELU responde:
👉 “Activo una entrada según qué tan probable es que sea relevante”
Valores grandes → activados
Valores pequeños → parcialmente activados
Valores negativos → suavemente atenuados
Interpretación geométrica
- curva suave
- transición gradual
- no linealidad continua
Comparación conceptual
ReLU → corte brusco
GELU → transición probabilística
Diferencia clave con ReLU
| Propiedad | ReLU | GELU |
|---|---|---|
| Tipo | determinista | probabilística |
| Suavidad | no | sí |
| Negativos | 0 | pequeños valores |
| Derivada | discontinua | continua |
Interpretación probabilística
👉 pondera la activación según la probabilidad.
📊 Ejemplo conceptual
Entrada
↓
Probabilidad asociada
↓
Activación ponderada
Ventajas
- transición suave
- mejor flujo de gradiente
- mayor expresividad
- mejor rendimiento en modelos grandes
🧠 Desventajas
- más costosa que ReLU
- menos intuitiva
- no siempre necesaria en modelos simples
Uso en arquitecturas modernas
🔹 Transformers
- BERT
- GPT
- LLMs
🔹 Redes profundas avanzadas
- modelos con alta capacidad
📊 Ejemplo conceptual
Transformer
↓
GELU
↓
Representación rica
GELU vs otras activaciones
- vs ReLU → más suave
- vs Swish → similar pero diferente base
- vs Mish → más estable en práctica
📊 Ejemplo en Python
import numpy as npdef gelu(x): return 0.5 * x * (1 + np.tanh(np.sqrt(2/np.pi)*(x + 0.044715*x**3)))x = np.array([-2, -1, 0, 1, 2])print(gelu(x))
Ejemplo en PyTorch
import torchimport torch.nn as nngelu = nn.GELU()x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])print(gelu(x))
Ejemplo en modelo
import torch.nn as nnmodel = nn.Sequential( nn.Linear(10, 20), nn.GELU(), nn.Linear(20, 1))
Qué muestra este ejemplo
- activación suave
- comportamiento probabilístico
- uso en modelos modernos
Errores comunes
Pensar que siempre supera a ReLU
Depende del modelo.
Usarla en sistemas con restricciones
Puede ser costosa.
No entender su naturaleza probabilística
Clave para su comportamiento.
Ejemplo conceptual en ML
Entrada
↓
GELU
↓
Activación suave
↓
Mejor representación
Interpretación profunda
GELU introduce un cambio clave:
👉 De activaciones deterministas a activaciones probabilísticas
Esto permite:
- decisiones más suaves
- mejor modelado de incertidumbre
- mayor capacidad en modelos complejos
Conclusión
La GELU es una función de activación moderna que combina suavidad y probabilidad, siendo clave en Transformers y modelos de lenguaje actuales.
👉 Es una de las razones del éxito de los LLMs modernos.