Activation Function
Una función de activación es la función no lineal que una neurona aplica a su entrada ponderada, lo que permite a las redes aprender patrones curvos. Compara las opciones más habituales.
Una función de activación es la función que una neurona de una red neuronal (NN) aplica a la suma ponderada de sus entradas para producir su salida. Su función esencial es añadir no linealidad: sin ella, cualquier pila de capas se reduce a una única transformación lineal y la profundidad no aporta nada. Con ella, una red puede representar fronteras de decisión curvas, desde los trazos de los dígitos manuscritos hasta el contorno de un peatón en la imagen de una cámara. Las funciones de activación cumplen dos funciones. En las capas ocultas, funciones como ReLU, SiLU y GELU permiten que la red aprenda características. En la capa de salida, funciones como sigmoid y softmax convierten las puntuaciones sin procesar en probabilidades.
Por qué las redes necesitan no linealidad#
Una capa sin función de activación calcula Wx + b. Dos capas de este tipo producen W₂(W₁x + b₁) + b₂, que equivale a (W₂W₁)x + (W₂b₁ + b₂), es decir, otra única capa lineal. Una función de activación entre las capas evita esta reducción, y el teorema de aproximación universal demuestra que una capa oculta con suficientes unidades no lineales puede aproximar cualquier función continua en un dominio acotado.
La derivada de la función de activación es tan importante como su forma, porque la retropropagación multiplica estas derivadas capa a capa. La derivada de sigmoid nunca supera 0,25 y la de tanh se aproxima a cero para entradas grandes, por lo que los gradientes se reducen al pasar por muchas capas saturantes: es el problema del desvanecimiento del gradiente. La derivada de ReLU es exactamente 1 para cada entrada positiva, una de las principales razones por las que se volvió práctico entrenar redes muy profundas.
Funciones de activación habituales#
- ReLU: max(0, x). Es barata, tiene un gradiente de 1 para las entradas positivas y devuelve exactamente cero para las negativas. Desde AlexNet, en 2012, ha sido la función de activación oculta predeterminada de las CNN, pero las unidades que solo reciben entradas negativas dejan de aprender.
- Leaky ReLU: Multiplica las entradas negativas por una pendiente pequeña, como 0,01 o 0,1, para que todas las unidades mantengan un gradiente.
- SiLU (Swish): x · σ(x), una curva suave que desciende ligeramente por debajo de cero con las entradas negativas. Es habitual en CNN eficientes y detectores en tiempo real.
- GELU: x · Φ(x), donde Φ es la función de distribución acumulada normal estándar. Es la función de activación habitual en BERT, GPT-2 y los transformers de visión.
- Tanh: Comprime las entradas en el intervalo de −1 a 1 en torno a cero. Da forma al estado oculto de redes recurrentes como GRU.
- Sigmoid: Comprime las entradas en el intervalo de 0 a 1, lo que resulta adecuado para salidas binarias y multietiqueta, así como para las puertas de las células recurrentes.
- Softmax: Convierte un vector completo de puntuaciones en una distribución de probabilidad cuya suma es 1, para la clasificación de una sola etiqueta y los pesos de atención.
- SwiGLU: Capa con compuerta que multiplica una proyección activada con SiLU por una segunda proyección aprendida. Ha sustituido a la función de activación simple en las capas de propagación hacia delante de muchos modelos de lenguaje grandes (LLM) recientes.
PyTorch ofrece cada función elemento a elemento como un módulo en torch.nn, así que es fácil compararlas con las mismas entradas:
import torch
from torch import nn
x = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
# Common activations, each applied element-wise to the same inputs
activations = {
"ReLU": nn.ReLU(),
"Leaky ReLU": nn.LeakyReLU(0.1),
"SiLU": nn.SiLU(),
"GELU": nn.GELU(),
"Tanh": nn.Tanh(),
"Sigmoid": nn.Sigmoid(),
}
for name, act in activations.items():
print(f"{name:>10}: {[round(v, 3) for v in act(x).tolist()]}")Para las entradas −3, −1, 0, 1 y 3, ReLU imprime [0.0, 0.0, 0.0, 1.0, 3.0] y Leaky ReLU, [-0.3, -0.1, 0.0, 1.0, 3.0]. SiLU produce [-0.142, -0.269, 0.0, 0.731, 2.858] y GELU, [-0.004, -0.159, 0.0, 0.841, 2.996]: ambas dejan pasar los valores negativos pequeños y se acercan a ReLU con entradas grandes. Tanh produce [-0.995, -0.762, 0.0, 0.762, 0.995] y sigmoid, [0.047, 0.269, 0.5, 0.731, 0.953]; ambas se aplanan en ±3, donde sus gradientes ya son pequeños.
Cómo elegir una función de activación#
Las capas ocultas suelen seguir las convenciones de la familia de arquitecturas, mientras que la capa de salida depende de la tarea. Softmax es adecuada para tareas en las que cada entrada pertenece exactamente a una clase, sigmoid es adecuada para etiquetas que pueden darse a la vez, y las salidas de regresión no utilizan ninguna función de activación, para que puedan tomar cualquier valor. El hardware también puede limitar la elección: algunos aceleradores de borde solo ejecutan de forma nativa funciones sencillas, como ReLU, Leaky ReLU y Hard-Swish. YOLO26 aplica SiLU después de la convolución y la normalización por lotes de cada bloque Conv, puntúa cada clase de detección con una función sigmoid independiente para que las puntuaciones de clase de una caja no tengan que sumar 1 y aplica softmax a las 1.000 clases de ImageNet en sus modelos de clasificación.
Funciones de activación y términos relacionados#
- Función de pérdida: La función de activación determina la salida de cada neurona durante la pasada hacia delante, y la función de pérdida compara la predicción final de la red con la etiqueta. Las bibliotecas suelen integrar la última función de activación en la función de pérdida, como hace
CrossEntropyLosscon softmax, para mejorar la estabilidad numérica. - Normalización por lotes: La normalización por lotes o por capas reescala las activaciones a un intervalo estable mediante estadísticas y parámetros aprendidos. Se sitúa junto a la función de activación, normalmente justo antes, y no añade no linealidad por sí misma.
- Activaciones: Como sustantivo plural, las activaciones son los valores de salida que produce una capa. «No linealidad» y el término más antiguo «función de transferencia» son sinónimos de función de activación. Durante el entrenamiento, los frameworks guardan en memoria las activaciones de todas las capas para la pasada hacia atrás; por eso, la recomputación de gradientes ahorra memoria descartando algunas activaciones y volviendo a calcularlas durante la retropropagación.










