Capped ReLU

ReLU con límite superior para controlar activaciones

La Capped ReLU es una variante de ReLU que introduce un límite máximo (cap) en la salida, evitando que las activaciones crezcan indefinidamente.

👉 Es una generalización de ReLU6, donde el valor máximo no está fijado en 6 sino en un parámetro configurable.


Definición corta

La Capped ReLU es una ReLU con un valor máximo definido.

Definición matemática

f(x)=min(max(0,x),c)f(x)=\min(\max(0,x),c)

👉 donde cc es el valor máximo permitido.

Intuición

Capped ReLU responde:

👉 “Activo valores positivos, pero evito que se vuelvan demasiado grandes”


Negativos → 0  
Positivos → lineales
Valores grandes → limitados a c

Interpretación geométrica

  • igual que ReLU al inicio
  • se aplana al alcanzar el límite

Comparación visual conceptual

ReLU:
/
----/Capped ReLU:
______
/
---/

Relación con otras variantes

FunciónLímite superior
ReLU
ReLU66
Capped ReLUc (configurable)

👉 Capped ReLU es la versión general.

Por qué limitar la activación?

🔹 1. Estabilidad numérica

Evita valores extremadamente grandes.

🔹 2. Control del rango

Útil en sistemas cuantizados.

🔹 3. Regularización implícita

Reduce sobreajuste en algunos casos.

Ejemplo conceptual

Activación alta  

Recorte

Control del modelo

Impacto en el gradiente

  • x<0x < 0x<0 → gradiente = 0
  • 0<x<c0 < x < c0<x<c → gradiente = 1
  • x>cx > cx>c → gradiente = 0

👉 introduce saturación superior.

Interpretación

Región útil → gradiente activo  
Región saturada → gradiente = 0

Ventajas

  • controla activaciones
  • mejora estabilidad
  • útil en hardware limitado
  • configurable

Desventajas

  • saturación adicional
  • posible pérdida de información
  • menos expresiva que ReLU

Comparación con ReLU

  • ReLU → más flexible
  • Capped ReLU → más controlada

Comparación con ReLU6

  • ReLU6 → caso específico
  • Capped ReLU → generalizable

Cuándo usar Capped ReLU

Usa Capped ReLU cuando:

  • trabajas con cuantización
  • necesitas controlar rango
  • optimización numérica es crítica

Evítala cuando:

  • necesitas máxima expresividad
  • redes profundas sin restricciones

Ejemplo en Python




Python
import numpy as np
def capped_relu(x, c=6):
return np.minimum(np.maximum(0, x), c)
x = np.array([-2, 0, 3, 10])
print(capped_relu(x))

Ejemplo en PyTorch

Python
import torch
def capped_relu(x, c=6):
return torch.clamp(x, min=0.0, max=c)
x = torch.tensor([-2.0, 0.0, 3.0, 10.0])
print(capped_relu(x))

Ejemplo en modelo

Python
import torch.nn as nn
import torch
class CappedReLU(nn.Module):
def __init__(self, cap=6):
super().__init__()
self.cap = cap
def forward(self, x):
return torch.clamp(x, 0, self.cap)

🧠 Qué muestra este ejemplo

  • activación controlada
  • uso práctico
  • implementación flexible

Errores comunes

Elegir mal el valor c

Puede limitar demasiado el modelo.


Usarla sin necesidad

Reduce expresividad.

Ignorar saturación superior

Puede afectar aprendizaje.


📊 Ejemplo conceptual en ML

Activaciones  

Recorte

Modelo más estable

Interpretación profunda

Capped ReLU refleja un principio importante:

👉 Limitar el rango puede mejorar estabilidad, aunque reduzca flexibilidad

Conclusión

La Capped ReLU es una extensión de ReLU que introduce un límite superior para controlar activaciones y mejorar estabilidad en ciertos contextos.

👉 Es especialmente útil en sistemas optimizados y cuantizados.


Related Concepts