Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Redes convolucionales (CNN), Unidad 4 — Funciones de activación y no linealidad, 4.2 — Activaciones modernas (visión general) ·

Cuándo usarlas

Cuándo usarlas: Activaciones modernas en redes convolucionales

Introducción

Las redes convolucionales (CNNs) son una parte crucial de la visión por computador y muchos otros campos que implican procesamiento de imágenes. Sin embargo, estas redes no solo utilizan la convolución para extraer características de las imágenes; también dependen de funciones de activación para introducir no linealidad en el modelo. Las funciones de activación tradicionales como ReLU se han mostrado efectivas en muchos casos, pero hay una variedad creciente de opciones más avanzadas que pueden mejorar aún más la capacidad del modelo para aprender características complejas.

En esta unidad, exploraremos algunas de las funciones de activación modernas y cómo elegir entre ellas. Estudiarás cuándo es apropiado usar Leaky ReLU, ELU (Exponential Linear Unit) o GELU (Gaussian Error Linear Unit), y cómo pueden afectar al rendimiento del modelo en diferentes tareas.

Explicación principal con ejemplos

1. ReLu

ReLu (Rectified Linear Units) es la función de activación más comúnmente utilizada. Su definición simple es: \[ \text{ReLU}(x) = \max(0, x) \]

La ventaja de ReLu es que reduce el número de parámetros del modelo y permite una mayor velocidad en la entrenamiento. Sin embargo, también tiene problemas conocidos como _dead neurons_ cuando se introducen valores negativos. Esto puede llevar a que ciertos neuronas nunca aprendan.

import torch.nn as nn

relu = nn.ReLU()

2. Leaky ReLU

Leaky ReLU es una versión modificada de ReLu que permite un pequeño flujo de gradiente para los valores negativos, lo que ayuda a resolver el problema de _dead neurons_.

\[ \text{LeakyReLU}(x) = \max(\alpha x, x), \quad 0 < \alpha << 1 \]

Un valor típico para $\alpha$ es $0.01$.

import torch.nn as nn

leaky_relu = nn.LeakyReLU(negative_slope=0.01)

3. ELU (Exponential Linear Unit)

ELU también permite un flujo de gradiente en los valores negativos pero utiliza una exponencial, lo que puede mejorar aún más el aprendizaje.

\[ \text{ELU}(x) = \begin{cases} x & \text{si } x > 0 \\ \alpha (e^x - 1) & \text{si } x \leq 0 \end{cases} \]

Un valor típico para $\alpha$ es $1.0$.

import torch.nn as nn

elu = nn.ELU(alpha=1.0)

4. GELU (Gaussian Error Linear Unit)

GELU es una función de activación que se inspira en la distribución normal acumulativa y ha demostrado excelentes resultados en varios modelos.

\[ \text{GELU}(x) = x\Phi(x), \quad \Phi(x) = \frac{1}{2}\left[ 1 + erf\left(\frac{x}{\sqrt{2}}\right)\right] \]

import torch.nn as nn

gelu = nn.GELU()

Errores típicos / trampas

Trampa 1: No entender la diferencia entre ReLu y Leaky ReLU

ReLu y Leaky ReLu son muy similares, pero el uso de un pequeño flujo en Leaky ReLu puede evitar que ciertas neuronas se congelen. Sin embargo, si se aplica una tasa negativa excesivamente alta a Leaky ReLu, puede no mejorar la capacidad del modelo.

Trampa 2: Usar GELU sin comprender su implicación

GELU tiene un impacto significativo en el aprendizaje del modelo y es especialmente útil para datos con distribución normal. Sin embargo, puede ser computacionalmente más costoso que ReLu o Leaky ReLU debido a la evaluación de la función de error.

Trampa 3: Ignorar los parámetros de $\alpha$ en Leaky ReLU y ELU

Los valores del parámetro $\alpha$ pueden afectar significativamente el rendimiento del modelo. Un valor muy pequeño puede no tener efecto, mientras que uno muy grande puede hacer que la función se comporte más como ReLu.

Checklist accionable

  1. Entiende la diferencia entre ReLU y Leaky ReLU: El Leaky ReLU permite un flujo de gradiente en valores negativos, lo que ayuda a prevenir el problema de _dead neurons_.
  2. Aprende las ventajas e inconvenientes de GELU: GELU es particularmente útil para datos con distribución normal y puede mejorar significativamente la precisión del modelo.
  3. Elije $\alpha$ cuidadosamente en Leaky ReLU y ELU: El valor de $\alpha$ puede afectar el rendimiento del modelo, por lo que debe seleccionarse adecuadamente basándose en el conjunto de datos y la tarea específica.
  4. Comprueba las curvas de entrenamiento después de cambiar funciones de activación: Evalúa regularmente cómo se comporta tu modelo con diferentes funciones de activación para garantizar un buen rendimiento.

Cierre: Siguientes pasos

1. Practica con datasets reales

Aplica las nuevas funciones de activación en diferentes conjuntos de datos y mide su impacto en el rendimiento del modelo.

2. Explora arquitecturas de modelos más avanzados

Aprende a integrar estas funciones de activación en arquitecturas más complejas como ResNet o Inception para mejorar aún más el rendimiento.

3. Realiza proyectos en equipo

Participa en proyectos de visión por computador en conjunto con otros programadores para entender mejor cómo se utilizan las funciones de activación modernas en entornos de trabajo real.

Siguiendo estos pasos, podrás mejorar significativamente el rendimiento de tus modelos de CNN y estar a la vanguardia en la aplicación de técnicas avanzadas en visión por computador.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).