La función de activación Swish (SiLU)
Índice de contenidos
La función Swish, también llamada SiLU, multiplica la entrada por su sigmoide: swish(x) = x·σ(x). Es suave, no monótona y se autorregula, por lo que suele superar a ReLU en redes profundas. Modelos como LLaMA y EfficientNet la usan como activación por defecto.
La función Swish, conocida también como SiLU, se define como swish(x) = x·σ(x): la entrada multiplicada por su propia sigmoide. Nació en 2017 de una búsqueda automática de funciones de activación y desde entonces se ha convertido en la opción por defecto de arquitecturas como LLaMA y EfficientNet. Es suave, no monótona y se regula a sí misma, tres propiedades que explican por qué suele rendir mejor que ReLU en redes profundas. Esta guía la desmonta pieza a pieza. La misma explicación está disponible en inglés.
Puntos clave
- La función Swish se define como
swish(x) = x·σ(x), dondeσes la sigmoide; por eso también se la llama SiLU (Sigmoid Linear Unit). - Es suave y derivable en todo su dominio, a diferencia de ReLU, que tiene un vértice no derivable en 0.
- Es no monótona: presenta un mínimo cercano a -0,278 alrededor de
x = -1,278, una hondonada que ReLU no tiene. - El mecanismo de autopuerta (self-gating) hace que la propia entrada module cuánto de sí misma deja pasar.
- Modelos modernos como LLaMA (en su variante SwiGLU) y EfficientNet la adoptan como activación por defecto.
¿Qué es Swish (SiLU)?
Swish es una función de activación: la operación no lineal que se aplica a la suma ponderada z = Wx + b de una neurona para producir su salida a = f(z). Sin esa no linealidad, apilar capas no serviría de nada, porque la composición de funciones lineales sigue siendo lineal.
La historia tiene dos orígenes casi simultáneos en 2017. El equipo de Google Brain (Ramachandran, Zoph y Le) la descubrió mediante una búsqueda automatizada entre miles de candidatas y la bautizó Swish. De forma independiente, Elfwing, Uchibe y Doya la propusieron en el contexto del aprendizaje por refuerzo con el nombre SiLU. Hoy ambos nombres designan la misma curva: x·σ(x).
La forma general admite un parámetro β: swish(x) = x·σ(βx). Con β = 1 se recupera la SiLU estándar; cuando β crece, la función se parece cada vez más a ReLU, y con β = 0 se reduce a la función lineal x/2. En la práctica, la mayoría de implementaciones fijan β = 1.
Fórmula y derivada
Partimos de la sigmoide, $\sigma(x) = \dfrac{1}{1 + e^{-x}}$, que ya analizamos en detalle en la función sigmoide. La Swish la usa como puerta:
$$\operatorname{swish}(x) = x\,\sigma(x) = \dfrac{x}{1 + e^{-x}}$$
Su derivada tiene una forma compacta y elegante. Usando la regla del producto y la propiedad $\sigma'(x) = \sigma(x)\bigl(1-\sigma(x)\bigr)$, se obtiene:
$$\operatorname{swish}'(x) = \sigma(x) + x\,\sigma(x)\bigl(1-\sigma(x)\bigr) = \operatorname{swish}(x) + \sigma(x)\bigl(1-\operatorname{swish}(x)\bigr)$$
A diferencia de ReLU, la derivada de Swish es continua en todo su dominio, incluido el origen. Esa suavidad es la que sostiene el descenso de gradiente en redes muy profundas y evita el pliegue anguloso que ReLU tiene en cero.
Tres consecuencias numéricas conviene retener. Para valores muy positivos, $\sigma(x)$ tiende a 1 y la Swish se comporta casi como la identidad $x$. Para valores muy negativos, tiende a 0 con suavidad, sin cortar de golpe como ReLU. Y en el entorno de $x = -1{,}278$ alcanza su mínimo global, aproximadamente $-0{,}278$: ahí es donde aparece la característica hondonada.
Ver la derivación de la derivada
Aplicando la regla del producto a $x\,\sigma(x)$: el primer término deriva $x$ y deja $\sigma(x)$; el segundo mantiene $x$ y deriva $\sigma(x)$, cuya derivada es $\sigma(x)\bigl(1-\sigma(x)\bigr)$. Sumando ambos: $\operatorname{swish}'(x) = \sigma(x) + x\,\sigma(x)\bigl(1-\sigma(x)\bigr)$, que se reescribe como $\operatorname{swish}(x) + \sigma(x)\bigl(1-\operatorname{swish}(x)\bigr)$.
Autopuerta (self-gating) y suavidad
El término clave para entender Swish es autopuerta. En arquitecturas con puertas, como las LSTM, un valor externo decide cuánta información pasa. En Swish, la puerta σ(x) la calcula la propia entrada: x decide cuánto de sí mismo deja fluir. Cuando x es grande, la puerta se abre y deja pasar casi todo; cuando es muy negativo, la puerta se cierra suavemente.
La suavidad importa por dos razones. Primero, el gradiente es continuo en todas partes, lo que ayuda a la optimización basada en derivadas y evita el pliegue anguloso de ReLU en el origen. Segundo, al permitir un pequeño flujo negativo, Swish no sufre el problema de las "neuronas muertas" de ReLU, donde una neurona que solo recibe entradas negativas deja de aprender porque su gradiente se queda fijo en 0. El artículo original de Ramachandran, Zoph y Le, Searching for Activation Functions[1], argumenta que estas propiedades, y no una sola de ellas, explican la mejora observada.
Uso en LLaMA y modelos modernos
Swish dejó de ser una curiosidad académica cuando entró en modelos de referencia. EfficientNet, la familia de redes de visión de Google de 2019, la usa como activación por defecto en todos sus bloques y con ella se situó a la vanguardia en ImageNet con menos parámetros que sus competidoras.
En los grandes modelos de lenguaje, la variante más influyente es SwiGLU, una unidad con puerta que combina Swish con el mecanismo GLU. LLaMA, de Meta, la adopta en las capas de su red feed-forward, siguiendo la línea del trabajo de Noam Shazeer, GLU Variants Improve Transformer[2]. En los marcos actuales tienes la función lista para usar: en PyTorch es torch.nn.SiLU[3], y el nombre SiLU, no Swish, es el que quedó como estándar en la documentación.
Swish frente a ReLU
ReLU, max(0, x), sigue siendo la activación más usada por su simplicidad y su bajo coste. Entonces, ¿por qué molestarse con Swish? La diferencia se nota sobre todo en redes muy profundas. En sus experimentos, los autores observaron mejoras de en torno al 0,6 % al 0,9 % en la precisión top-1 de ImageNet al sustituir ReLU por Swish en redes como Mobile NASNet-A e Inception-ResNet-v2, sin cambiar nada más.
El coste es real: cada evaluación de Swish implica calcular una exponencial y una multiplicación, mientras que ReLU es una simple comparación. Por eso ReLU sigue siendo preferible cuando la latencia manda o la red es poco profunda, y Swish gana terreno cuando la profundidad y la calidad final importan más que unos milisegundos por capa. Puedes situar ambas dentro del recorrido completo en el mapa de las matemáticas de las redes neuronales.
Preguntas frecuentes
¿Swish y SiLU son lo mismo?
Sí. SiLU (Sigmoid Linear Unit) fue el nombre que le dieron Elfwing y sus colaboradores; Swish es el que eligió el equipo de Google Brain. Ambos describen exactamente la misma función x·σ(x). En la documentación de PyTorch y TensorFlow verás sobre todo el nombre SiLU.
¿Cuándo conviene usar Swish en lugar de ReLU?
Merece la pena en redes profundas donde la precisión final es prioritaria, como grandes modelos de visión o de lenguaje. Si la red es pequeña o la velocidad de inferencia es crítica, ReLU suele ser suficiente y bastante más barata de calcular.
¿Por qué se dice que Swish es no monótona?
Porque no crece de forma constante: para entradas negativas la función baja hasta un mínimo cercano a -0,278 antes de volver a subir. Esa pequeña hondonada le permite representar relaciones que una función siempre creciente, como ReLU, no captura igual de bien.
Conclusión
La función Swish resume una idea potente en una fórmula minúscula: deja que la entrada regule su propio paso con x·σ(x). Suavidad, no monotonía y autopuerta se combinan para superar a ReLU en las arquitecturas más exigentes, de EfficientNet a LLaMA. El siguiente paso natural es compararla con las demás activaciones y con la función sigmoide que le sirve de puerta.