Ir al contenido principal

Función de activación GELU: fórmula, intuición y uso en deep learning

GELU es una función de activación suave y probabilística que supera a alternativas más simples como ReLU en arquitecturas profundas, y se ha convertido en la opción por defecto en modelos transformer como BERT y GPT.
Actualizado 4 may 2026  · 8 min leer

Las funciones de activación deciden qué señales pasan a través de una red neuronal y cuáles no. Si eliges la equivocada, tu modelo aprende demasiado lento o no generaliza. Durante años, ReLU fue la opción por defecto porque era rápida y suficiente para la mayoría de tareas.

GELU (Gaussian Error Linear Unit) cambió ese panorama. Ahora es la función de activación detrás de algunos de los modelos más potentes jamás creados, como BERT y GPT.

En este artículo verás la intuición detrás de GELU, su fórmula, cómo se compara con otras funciones de activación y dónde conviene usarla en la práctica.

Si eres completamente nuevo en funciones de activación en machine learning, lee nuestro guía para principiantes de la unidad lineal rectificada (ReLU).

¿Qué es la función de activación GELU?

GELU, o Gaussian Error Linear Unit, es una función de activación que pondera las entradas según su magnitud con un enfoque suave y probabilístico.

La mayoría de funciones de activación deciden pasar o bloquear la señal. ReLU, por ejemplo, anula todo lo negativo y deja pasar el resto sin cambios. GELU funciona de otra manera. En lugar de un corte brusco, escala las entradas de forma suave según cuán grandes o pequeñas sean, lo que significa que incluso valores negativos pequeños pueden contribuir a la salida.

La diferencia respecto a ReLU es que GELU es suave y continua en todo su dominio. No hay un ángulo marcado en cero ni transiciones abruptas. Esa suavidad importa durante el entrenamiento porque ofrece al optimizador gradientes más limpios con los que trabajar.

Intuición detrás de GELU

Piensa en GELU como un filtro que no trata todas las entradas por igual.

ReLU es tajante: todo lo negativo se convierte en cero, siempre. GELU, en cambio, se pregunta «¿qué probabilidad hay de que este valor de entrada sea útil?». Los valores claramente grandes y positivos pasan casi sin cambios. Los valores pequeños o negativos se reducen, no se eliminan por completo.

El resultado es una curva suave que atenúa las señales menos relevantes sin descartarlas del todo.

Imagina que revisas un montón de candidaturas. Un filtro estricto eliminaría a cualquiera sin título universitario, sin excepción. Un filtro más inteligente aún consideraría a quienes se acercan, porque quizá tengan experiencia relevante que compense. GELU funciona como ese filtro más inteligente. No hace cortes drásticos; pondera cada entrada según su magnitud y decide cuánto dejar pasar.

Esta escala gradual y probabilística es lo que hace diferente a GELU. No hay transiciones bruscas ni neuronas muertas: solo una decisión suave de pasar o atenuar para cada valor de entrada.

Fórmula de GELU

La fórmula exacta de GELU se basa en la función de distribución acumulada (CDF) gaussiana, y se escribe así:

Gaussian cumulative distribution function

Función de distribución acumulada gaussiana

donde x es el valor de entrada y Φ(x) es la probabilidad de que una variable aleatoria de una normal estándar sea menor o igual que x. En pocas palabras, Φ(x) te indica cuán «normal» o esperable es el valor de entrada, y esa probabilidad es la que GELU usa para escalar la entrada.

Cuanto mayor es la entrada, más se acerca Φ(x) a 1, lo que implica que la señal pasa casi sin cambios. Cuanto menor es la entrada, más se acerca Φ(x) a 0, de modo que la señal se atenúa.

La aproximación usada en la práctica

El problema de la fórmula exacta es que calcular Φ(x) es costoso. Implica la función error, que no tiene forma cerrada simple y es lenta a gran escala.

Los frameworks de deep learning usan esta aproximación:

GELU approximation formula

Fórmula aproximada de GELU

Esta aproximación usa tanh, que es rápida y está muy optimizada en hardware moderno. El resultado es prácticamente idéntico a la fórmula exacta en el rango de entradas que importa en la práctica, por lo que frameworks como PyTorch y TensorFlow la emplean por defecto.

Por supuesto, no necesitas memorizar ninguna de las dos. Pero saber que existe la aproximación —y por qué— te ayuda a entender qué ocurre realmente cuando llamas a GELU en tu código.

GELU frente a otras funciones de activación

Cada función de activación maneja las entradas de forma distinta, y esas diferencias se reflejan en cómo aprende tu modelo.

Así se ve la diferencia de forma visual antes de explicarla con texto:

GELU versus other activation functions graph

Gráfico de GELU frente a otras funciones de activación

Sigmoid

Sigmoid comprime todas las entradas al rango 0–1. Es suave, pero tiene un problema conocido: los gradientes que se desvanecen. Para entradas muy grandes o muy pequeñas, el gradiente tiende a cero, por lo que las capas profundas dejan de aprender. GELU evita este problema porque mantiene gradientes útiles en un rango de entrada más amplio.

Tanh

Tanh es similar a Sigmoid pero centrada en cero, con salidas entre -1 y 1. Maneja mejor las entradas negativas que Sigmoid, pero sigue sufriendo desvanecimiento de gradientes en los extremos. GELU produce una curva de salida más suave y con mejor flujo de gradiente en redes profundas.

ReLU

ReLU es rápida y simple: las entradas positivas pasan sin cambios; las negativas se anulan. El corte brusco en cero provoca el problema de las neuronas moribundas: neuronas que, al recibir valores negativos de forma sostenida, dejan de actualizarse. GELU lo evita escalando las entradas negativas en lugar de recortarlas.

Leaky ReLU

Leaky ReLU soluciona las neuronas moribundas permitiendo que una pequeña fracción de entradas negativas pase. Es un paso adelante respecto a ReLU, pero la transición en cero sigue siendo brusca. GELU produce una curva más suave en general, lo que suele funcionar mejor en arquitecturas profundas donde la calidad del gradiente es clave.

En resumen, estas son las diferencias entre estas cinco funciones de activación:

GELU versus other activation functions table

Tabla de GELU frente a otras funciones de activación

Por qué se usa GELU en transformers

Un transformer no deja de ser una red neuronal profunda. Y cuanto más profunda es la red, más importa la calidad del gradiente.

Modelos como BERT y GPT apilan decenas de capas. A esa profundidad, los pequeños problemas de flujo de gradiente se agravan. Si tu función de activación produce gradientes inestables o casi nulos en ciertas regiones, las capas iniciales apenas se actualizan durante el entrenamiento y, por tanto, aprenden poco.

GELU lo evita manteniendo gradientes suaves y no nulos en un rango de entradas más amplio. No hay un corte como el cero de ReLU, así que el optimizador recibe una señal más limpia en cada capa, no solo cerca de la salida.

Hay otra razón por la que GELU encaja bien en arquitecturas transformer. 

Los transformers procesan entradas mediante mecanismos de atención que generan un rango amplio de activaciones, tanto positivas como negativas. Una activación suave maneja mejor ese rango que otra con transiciones bruscas.

Cuando se publicó el artículo original de BERT, los autores eligieron GELU frente a ReLU y reportaron mejores resultados en sus benchmarks. GPT siguió el mismo camino. Desde entonces, GELU se ha convertido en la activación por defecto en la mayoría de arquitecturas basadas en transformers, no porque sea nueva, sino porque funciona mejor a la escala a la que operan estos modelos.

GELU en la práctica

Usar GELU en tus modelos es tan fácil como cualquier otra función de activación. Tanto PyTorch como TensorFlow la incluyen de serie.

PyTorch

En PyTorch, puedes aplicar GELU como un módulo independiente o en línea dentro de la definición del modelo. Aquí tienes un bloque feedforward sencillo que usa GELU:

import torch
import torch.nn as nn

class FeedForwardBlock(nn.Module):
    def __init__(self, input_dim, hidden_dim):
        super().__init__()
        self.fc1 = nn.Linear(input_dim, hidden_dim)
        self.act = nn.GELU()
        self.fc2 = nn.Linear(hidden_dim, input_dim)

    def forward(self, x):
        return self.fc2(self.act(self.fc1(x)))

block = FeedForwardBlock(input_dim=512, hidden_dim=2048)
x = torch.randn(8, 512)
output = block(x)

nn.GELU() va entre las dos capas lineales, exactamente donde la verás en la subcapa feedforward de un transformer. La activación se ejecuta tras la primera proyección y antes de la segunda.

TensorFlow

En TensorFlow, GELU está disponible a través de la API de Keras:

import tensorflow as tf
from tensorflow import keras

model = keras.Sequential([
    keras.layers.Dense(2048, input_shape=(512,)),
    keras.layers.Activation("gelu"),
    keras.layers.Dense(512)
])

x = tf.random.normal((8, 512))
output = model(x)

También puedes pasarla directamente como cadena al argumento activation de una capa Dense:

keras.layers.Dense(2048, activation="gelu")

Ambos enfoques producen el mismo resultado.

Dónde encaja GELU en una red

GELU va en el mismo lugar que cualquier otra activación: justo después de una transformación lineal y antes de la siguiente capa. En transformers, eso significa dentro de la subcapa feedforward, entre las dos proyecciones densas. En otras redes profundas, colócala tras tu capa lineal o convolucional para escalar la salida antes de pasarla adelante.

Ventajas de GELU

Si has llegado hasta aquí, ya conoces los principales puntos fuertes de GELU frente a otras activaciones. Aquí va un breve repaso:

  • Activación suave: GELU produce una curva continua y diferenciable sin transiciones bruscas, lo que ofrece al optimizador información más limpia en cada paso.
  • Mejor flujo de gradiente: GELU no anula las entradas negativas, así que los gradientes pueden propagarse incluso por neuronas que reciben valores negativos. Esto reduce el riesgo de neuronas muertas durante el entrenamiento.
  • Mejor rendimiento en modelos profundos: En arquitecturas profundas como los transformers, el efecto acumulado de gradientes más suaves suele traducirse en mejores resultados de entrenamiento frente a activaciones más simples.

Limitaciones de GELU

GELU no es la opción adecuada para todos los casos. Ten en cuenta estas limitaciones:

  • Más costosa de calcular que ReLU: GELU implica la función error o una aproximación basada en tanh, ambas más caras que el umbral sencillo de ReLU. En modelos grandes con muchas capas, esto puede acumularse.

  • Menos intuitiva: Funciones como ReLU son fáciles de razonar: los valores positivos pasan, los negativos no. El escalado probabilístico de GELU es más difícil de interpretar.

  • No siempre necesaria: En redes poco profundas o tareas simples, GELU no aporta ventajas significativas. ReLU o Leaky ReLU suelen rendir igual de bien con menor coste computacional.

En conclusión, si vas a construir un transformer u otra arquitectura profunda, GELU es una gran opción por defecto. Para el resto, haz pruebas comparativas antes de decidirte.

Conclusión

GELU no es una mejora universal ni una solución única que sustituya a ReLU. Es una decisión de diseño deliberada que merece la pena en contextos concretos: piensa en redes profundas y modelos tipo transformer.

Si trabajas con BERT, GPT o cualquier modelo basado en transformers, ya estás usando GELU, lo supieras o no. Ahora ya sabes por qué está ahí.

Para todo lo demás, la elección de la activación va de compensaciones. Ninguna función gana siempre; entender qué hace cada una te permite decidir con confianza y no por costumbre.

Si aún te lías con las diferencias entre funciones de activación, apúntate a nuestro Machine Learning Engineer Track y prepárate para tu carrera en machine learning y MLOps.

Conviértete en un Científico ML

Domina las habilidades de Python para convertirte en un científico del aprendizaje automático
Empieza a aprender gratis

Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Científico de Datos Senior con base en Croacia. Top Tech Writer con más de 700 artículos publicados, generando más de 10M de visitas. Autor del libro Automatización del aprendizaje automático con TPOT.

Preguntas frecuentes

¿Qué es la función de activación GELU?

GELU, o Gaussian Error Linear Unit, es una función de activación usada en redes neuronales. A diferencia de ReLU, GELU escala las entradas de forma suave según su magnitud con un enfoque probabilístico. Esto la hace especialmente adecuada para arquitecturas profundas donde la calidad del gradiente importa.

¿En qué se diferencia GELU de ReLU?

ReLU anula todas las entradas negativas con un corte en cero, lo que puede hacer que las neuronas dejen de aprender (neuronas moribundas). GELU lo evita reduciendo gradualmente las entradas negativas en lugar de cortarlas. Obtendrás un flujo de gradiente más suave y mejor rendimiento en redes profundas.

¿Cuándo debería usar GELU en lugar de otras funciones de activación?

GELU funciona mejor en arquitecturas profundas, especialmente en modelos basados en transformers como BERT y GPT. En redes poco profundas o tareas más simples, el sobrecoste computacional rara vez compensa el cambio desde ReLU. Empieza con ReLU como referencia y siempre puedes probar otras opciones.

¿Cuál es la diferencia entre la fórmula exacta de GELU y su aproximación?

La fórmula exacta de GELU usa la función de distribución acumulada gaussiana, que requiere calcular la función error: una operación lenta a gran escala. La aproximación la sustituye por una expresión basada en tanh, más rápida y muy bien soportada en hardware moderno. En la práctica, ambas dan resultados casi idénticos, por eso la mayoría de frameworks usan la aproximación por defecto.

¿GELU funciona tanto en PyTorch como en TensorFlow?

Sí, ambos frameworks admiten GELU. En PyTorch, puedes usar nn.GELU() como módulo dentro de tu modelo. En TensorFlow, puedes pasar "gelu" como cadena al argumento activation de cualquier capa o usar keras.layers.Activation("gelu").

Temas

Aprende con DataCamp

Curso

Reducción de dimensionalidad en Python

4 h
36.1K
Comprende el concepto de reducción de dimensionalidad en los datos y domina las técnicas para hacerlo en Python.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

blog

¿Qué es GPT-4 y por qué es importante?

OpenAI ha anunciado el lanzamiento de su último gran modelo lingüístico, GPT-4. Este modelo es un gran modelo multimodal que puede aceptar tanto entradas de imagen como de texto y generar salidas de texto.
Abid Ali Awan's photo

Abid Ali Awan

9 min

blog

Explicación de la Comprensión del Lenguaje Natural (NLU)

La comprensión del lenguaje natural (NLU) es un subcampo del procesamiento del lenguaje natural (NLP) centrado en permitir que las máquinas comprendan el significado, el contexto y la intención del lenguaje humano.
Dimitri Didmanidze's photo

Dimitri Didmanidze

7 min

Tutorial

Introducción a las funciones de activación en las redes neuronales

Aprende a navegar por las funciones de activación habituales, desde la firme ReLU hasta la destreza probabilística de softmax.
Moez Ali's photo

Moez Ali

Tutorial

Guía introductoria para el ajuste preciso de los LLM

El ajuste preciso de los grandes modelos lingüísticos (LLM) ha revolucionado el procesamiento del lenguaje natural (PLN) y ofrece capacidades sin precedentes en tareas como la traducción lingüística, el análisis del sentimiento y la generación de textos. Este enfoque transformador aprovecha modelos preentrenados como el GPT-2 y mejora su rendimiento en dominios específicos mediante el proceso de ajuste preciso.
Josep Ferrer's photo

Josep Ferrer

Tutorial

Ajuste fino de GPT-3 mediante la API OpenAI y Python

Libere todo el potencial de GPT-3 mediante el ajuste fino. Aprenda a utilizar la API de OpenAI y Python para mejorar este modelo de red neuronal avanzado para su caso de uso específico.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Ajuste fino de LLaMA 2: Guía paso a paso para personalizar el modelo de lenguaje grande

Aprende a ajustar Llama-2 en Colab utilizando nuevas técnicas para superar las limitaciones de memoria y computación y hacer más accesibles los grandes modelos lingüísticos de código abierto.
Abid Ali Awan's photo

Abid Ali Awan

Ver másVer más