SELU (Scaled ELU)

Activación diseñada para redes auto-normalizadas

La SELU (Scaled Exponential Linear Unit) es una función de activación que extiende ELU añadiendo factores de escala para mantener automáticamente la media y varianza estables durante el entrenamiento.

👉 Fue diseñada para crear Self-Normalizing Neural Networks (SNNs).

Definición corta

La SELU es una versión escalada de ELU que mantiene activaciones normalizadas automáticamente.

Definición matemática

f(x)=λ{xx0α(ex1)x<0f(x)=\lambda\begin{cases}x & x\ge 0 \\ \alpha(e^x-1) & x<0\end{cases}

👉 donde típicamente:

  • λ1.0507\lambda \approx 1.0507λ≈1.0507
  • α1.6733\alpha \approx 1.6733α≈1.6733

Intuición

SELU responde:

👉 “No solo activo valores, también mantengo el sistema estable automáticamente”

Activación  

Escalado

Media ≈ 0
Varianza ≈ 1

Interpretación geométrica

  • región positiva → lineal escalada
  • región negativa → exponencial escalada

👉 similar a ELU, pero ajustada para estabilidad.

Comparación conceptual

ELU → suavidad  
SELU → suavidad + normalización

Diferencia clave

PropiedadELUSELU
Escaladono
Auto-normalizaciónno
Media estableparcial
Varianza estableno

Idea clave: auto-normalización

SELU mantiene:E[x]0,Var(x)1\mathbb{E}[x] \approx 0, \quad \text{Var}(x) \approx 1

👉 sin necesidad de BatchNorm.

Ejemplo conceptual

Entrada  

SELU

Salida normalizada

Entrenamiento estable

¿Por qué es importante?

En redes profundas:

  • activaciones pueden explotar o desaparecer
  • SELU controla esto automáticamente

Ventajas

  • estabilidad en entrenamiento
  • reduce necesidad de normalización
  • mejora convergencia
  • ideal para redes profundas

Desventajas

  • requiere condiciones específicas
  • menos flexible que otras activaciones
  • menos usada en arquitecturas modernas

Requisitos para funcionar correctamente

Para lograr auto-normalización:

🔹 1. Inicialización adecuada

  • LeCun normal

🔹 2. Arquitectura específica

  • redes feedforward

🔹 3. Sin BatchNorm

  • ya no es necesario

🔹 4. Uso de AlphaDropout

  • mantiene propiedades estadísticas

Ejemplo conceptual

Inicialización correcta  
+ SELU

Red estable

SELU vs ReLU

  • ReLU → simple, eficiente
  • SELU → estable, auto-normalizada

SELU vs ELU

  • ELU → mejora gradiente
  • SELU → mejora gradiente + normaliza

Cuándo usar SELU

Usa SELU cuando:

  • trabajas con redes profundas feedforward
  • quieres evitar BatchNorm
  • necesitas estabilidad automática

Evítala cuando:

  • usas Transformers o CNNs modernas
  • no puedes cumplir sus requisitos

Ejemplo en Python

import numpy as np
alpha = 1.6733
lam = 1.0507
def selu(x):
return lam * np.where(x > 0, x, alpha * (np.exp(x) - 1))
x = np.array([-2, -1, 0, 1, 2])
print(selu(x))

Ejemplo en PyTorch

import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.SELU(),
nn.Linear(20, 1)
)

Ejemplo en modelo

import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.SELU(),
nn.Linear(20, 1)
)

🧠 Qué muestra este ejemplo

  • activación auto-normalizada
  • estabilidad en profundidad
  • alternativa a BatchNorm

⚠️ Errores comunes

Usar BatchNorm con SELU

Rompe la auto-normalización.


No usar inicialización adecuada

Pierde sus ventajas.


Usarla en cualquier arquitectura

No siempre funciona bien.

Ejemplo conceptual en ML

Capas profundas  

SELU

Activaciones estables

Entrenamiento robusto

Interpretación profunda

SELU introduce una idea poderosa:

👉 Las redes pueden auto-estabilizarse sin intervención externa

Esto abre el camino a:

  • modelos más simples
  • entrenamiento más robusto
  • menor dependencia de técnicas adicionales

Conclusión

La SELU es una función de activación diseñada para mantener automáticamente la estabilidad en redes profundas, reduciendo la necesidad de normalización explícita.

👉 Es una solución elegante, aunque con requisitos específicos.

Related Concepts

  • ELU
  • ReLU
  • Batch Normalization
  • AlphaDropout
  • Estabilidad numérica