Funciones de activación y no linealidad en redes neuronales

Capítulo 3

Tiempo estimado de lectura: 7 minutos

+ Ejercicio

Por qué la no linealidad es imprescindible

Una red neuronal típica alterna transformaciones lineales (multiplicaciones por matrices y sumas) con funciones de activación. Si eliminamos las activaciones no lineales, la red completa se reduce a una sola transformación lineal, aunque tenga muchas capas.

Idea clave: la composición de funciones lineales sigue siendo lineal. Si tuvieras dos capas sin activación: h = W1 x + b1 y y = W2 h + b2, entonces y = (W2 W1) x + (W2 b1 + b2). Es decir, todo equivale a una única matriz y un único sesgo.

¿Qué aporta la no linealidad? Permite “doblar” el espacio de representación para capturar relaciones complejas (fronteras de decisión no lineales, interacciones entre variables, patrones jerárquicos). En práctica, la activación decide cómo fluye la información y el gradiente durante el entrenamiento.

Ejemplo intuitivo (sin repetir perceptrón)

Piensa en un problema donde la salida depende de una interacción: y = 1 si (A y B) se cumplen, o si (C y D) se cumplen; y 0 en caso contrario. Una sola transformación lineal no puede representar bien combinaciones lógicas “por bloques” sin ingeniería manual de características. Con activaciones no lineales, capas ocultas pueden construir detectores intermedios (A∧B, C∧D) y una capa posterior combinarlos.

Activaciones habituales: qué son y cómo se comportan

Al elegir una activación, conviene comparar: rango de salida, derivabilidad, saturación (zonas donde el gradiente se vuelve muy pequeño), y estabilidad numérica (riesgo de overflow/underflow o gradientes problemáticos).

Continúa en nuestra aplicación.
  • Escuche el audio con la pantalla apagada.
  • Obtenga un certificado al finalizar.
  • ¡Más de 5000 cursos para que explores!
O continúa leyendo más abajo...
Download App

Descargar la aplicación

ActivaciónDefiniciónRangoDerivabilidadSaturaciónNotas de estabilidad numéricaUso típico
Sigmoideσ(x)=1/(1+e^{-x})(0, 1)Suave (derivable)Fuerte en |x| grande (gradiente ≈ 0)e^{-x} puede desbordar si x es muy negativo; se usan implementaciones establesSalida binaria (probabilidad) o compuertas (gating); rara en ocultas modernas
tanhtanh(x)(-1, 1)Suave (derivable)Fuerte en |x| grandeMás centrada en 0 que sigmoide; aún puede saturarAlgunas ocultas (especialmente en modelos recurrentes clásicos), menos común en MLP/CNN modernas
ReLUmax(0, x)[0, ∞)No derivable en 0 (se usa subgradiente); derivable en el restoNo satura para x>0; “muere” si queda en x<0 siempreMuy estable y eficiente; gradiente constante en zona positivaCapas ocultas por defecto en muchas arquitecturas
Leaky ReLUmax(αx, x) con α pequeño (p.ej. 0.01)(-∞, ∞)No derivable en 0 (subgradiente)Reduce el riesgo de neuronas muertas (gradiente en x<0)Similar a ReLU; suele entrenar de forma estableCapas ocultas cuando ReLU da neuronas muertas
Softmaxsoftmax(z)_i = e^{z_i}/∑_j e^{z_j}Cada componente en (0,1) y suma 1Suave (derivable)Puede producir probabilidades extremas si logits grandesRequiere truco de estabilidad: restar max(z) antes de exponentiarCapa de salida multiclase (probabilidades)

Qué activación usar y en qué capa

Capas ocultas

  • ReLU: opción estándar por simplicidad, buen flujo de gradiente en la región positiva y eficiencia computacional.
  • Leaky ReLU: alternativa cuando observas muchas activaciones en cero (neuronas “muertas”) o entrenamiento lento por unidades que no se recuperan.
  • tanh: útil si quieres salidas centradas en 0 y acotadas, pero requiere cuidado por saturación; hoy se usa menos en redes profundas feed-forward.
  • Sigmoide: generalmente evitar en ocultas profundas por saturación y gradientes pequeños; se reserva para mecanismos de compuertas o casos específicos.

Capa de salida

  • Softmax: clasificación multiclase (una clase correcta). Produce una distribución de probabilidad sobre clases.
  • Sigmoide: clasificación binaria o multietiqueta (varias clases pueden ser 1 a la vez). Cada salida es una probabilidad independiente.

Saturación, gradientes y efectos prácticos

La saturación ocurre cuando la activación entra en una zona donde su derivada es muy pequeña. En entrenamiento con descenso por gradiente, esto implica actualizaciones diminutas y aprendizaje lento o estancado.

  • Sigmoide: para x muy positivo, σ(x)≈1; para x muy negativo, σ(x)≈0; en ambos casos la derivada se acerca a 0.
  • tanh: saturación similar, pero centrada en 0 (lo que suele ayudar algo en optimización frente a sigmoide).
  • ReLU: no satura en la parte positiva; en la parte negativa el gradiente es 0 (riesgo de neuronas muertas).
  • Leaky ReLU: mantiene un gradiente pequeño en la parte negativa, mitigando neuronas muertas.
  • Softmax: puede volverse muy “picuda” si un logit domina; con pérdida de entropía cruzada y una implementación estable suele entrenar bien.

Estabilidad numérica: cómo evitar problemas comunes

Softmax estable (truco del máximo)

Para evitar overflow al calcular e^{z_i} cuando los logits son grandes, se usa:

z_shift = z - max(z)  # resta escalar por muestra (o por fila en batch)softmax_i = exp(z_shift_i) / sum_j exp(z_shift_j)

Este cambio no altera el resultado porque sumar/restar una constante a todos los logits no cambia la distribución softmax.

Sigmoide/tanh: cuidado con magnitudes grandes

Si las entradas a sigmoide/tanh crecen mucho (por pesos grandes o mala normalización), la activación se satura y el gradiente desaparece. En práctica, se mitiga con inicialización adecuada, normalización (p.ej., BatchNorm/LayerNorm) y evitando profundidades excesivas con estas activaciones.

Guía práctica paso a paso para elegir activación e inicialización

Paso 1: identifica el tipo de salida

  • Multiclase exclusiva (una clase correcta): usa softmax en la salida.
  • Binaria: usa sigmoide en la salida (una neurona).
  • Multietiqueta: usa sigmoide por clase (varias neuronas).

Paso 2: elige activación en ocultas

  • Empieza con ReLU como baseline.
  • Si observas muchas activaciones exactamente 0 o neuronas que no se recuperan, prueba Leaky ReLU (p.ej. α=0.01) o ajusta tasa de aprendizaje/inicialización.
  • Si necesitas salidas acotadas y centradas (por diseño del modelo), considera tanh, pero asume más riesgo de saturación.

Paso 3: usa inicialización compatible con ReLU/Leaky ReLU

Con ReLU y variantes, una recomendación estándar es la inicialización de He (también llamada Kaiming), diseñada para mantener la varianza de activaciones/gradientes a través de capas.

  • Para pesos con distribución normal: W ~ N(0, 2/fan_in)
  • Para uniforme: límites proporcionales a sqrt(6/fan_in) ajustados al factor 2

En librerías modernas suele estar disponible como he_normal o kaiming_normal.

Paso 4: precauciones específicas con sigmoide/tanh

  • Evita usarlas en muchas capas ocultas profundas si no hay una razón clara: la saturación puede frenar el aprendizaje.
  • Si las usas, cuida que las entradas estén en rangos moderados (normalización de entradas, regularización, inicialización tipo Xavier/Glorot más apropiada para activaciones simétricas como tanh).
  • Monitorea durante el entrenamiento: si la mayoría de activaciones están cerca de 0/1 (sigmoide) o -1/1 (tanh), probablemente estás saturando.

Paso 5: verifica con señales simples durante el entrenamiento

  • Distribución de activaciones: histogramas por capa para detectar saturación (tanh/sigmoide) o exceso de ceros (ReLU).
  • Normas de gradiente: si se vuelven muy pequeñas en capas tempranas, revisa activación, inicialización y normalización.
  • Pérdida y exactitud: estancamiento temprano puede indicar saturación o mala escala de logits (softmax).

Ejemplos de configuración recomendada (plantillas)

Clasificación multiclase

  • Ocultas: ReLU + inicialización He
  • Salida: Softmax (implementación estable) + entropía cruzada

Clasificación binaria

  • Ocultas: ReLU o Leaky ReLU + inicialización He
  • Salida: Sigmoide + pérdida binaria (entropía cruzada binaria)

Multietiqueta

  • Ocultas: ReLU + inicialización He
  • Salida: Sigmoide por clase (sin softmax) + pérdida binaria por etiqueta

Ahora responde el ejercicio sobre el contenido:

¿Qué ocurre si una red neuronal apila varias capas lineales pero no usa funciones de activación no lineales entre ellas?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

La composición de transformaciones lineales sigue siendo lineal, por lo que varias capas sin activaciones no lineales se pueden reescribir como una sola matriz y un solo sesgo, perdiendo capacidad para modelar relaciones no lineales.

Siguiente capítulo

Pérdidas, métricas y formulación del entrenamiento de redes neuronales

Arrow Right Icon
Portada de libro electrónico gratuitaIntroducción a las Redes Neuronales: Del Perceptrón al Deep Learning
23%

Introducción a las Redes Neuronales: Del Perceptrón al Deep Learning

Nuevo curso

13 páginas

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.