Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Redes neuronales desde cero, Unidad 3 — Redes multicapa (MLP), 3.1 — Capas y arquitectura ·

Capas ocultas

Capas ocultas

Introducción

En la arquitectura de las redes neuronales, la capa oculta es un componente crucial que permite a las redes aprender características complejas y abstractas de los datos de entrada. Las capas ocultas están diseñadas para capturar patrones no lineales en los datos, lo cual es fundamental para el rendimiento de muchas aplicaciones de deep learning, como la clasificación de imágenes, la predicción del clima o el análisis de texto.

Explicación principal

Una red neuronal multicapa (MLP) consta de una capa de entrada, una o varias capas ocultas y una capa de salida. Las capas ocultas son las encargadas de extraer características relevantes de los datos a través de funciones de activación. Por ejemplo, en un clasificador de imágenes, una capa oculta puede identificar bordes y formas simples, mientras que capas posteriores pueden reconocer patrones más complejos como caras o objetos.

Matemáticamente, la salida de una capa oculta \( l \) se calcula a través de una función de activación aplicada a la suma ponderada de las entradas:

\[ z^{(l)} = W^{(l-1)} a^{(l-1)} + b^{(l)} \]

donde:

  • \( z^{(l)} \) es el vector de salidas (antes de la función de activación).
  • \( W^{(l-1)} \) son los pesos entre la capa \( l-1 \) y \( l \).
  • \( a^{(l-1)} \) son las entradas a la capa \( l \), que pueden ser las salidas de una capa anterior.
  • \( b^{(l)} \) es el bias para la capa \( l \).

Ejemplo de implementación en Python

import numpy as np

def activacion_sigmoid(z):
    return 1 / (1 + np.exp(-z))

# Definir pesos y bias aleatorios
W = np.random.randn(5, 3)  # Pesos entre la capa oculta y la de salida
b = np.zeros((5, 1))       # Bias para cada neuron en la capa oculta

# Entradas a la capa oculta (sin incluir bias)
inputs = np.array([[0.2], [0.3], [0.4], [0.5], [0.6]])

# Calcular salidas de la capa oculta
z = np.dot(W, inputs) + b  # Suma ponderada
activaciones = activacion_sigmoid(z)  # Aplicar función de activación

print("Salida de la capa oculta:", activaciones)

Errores típicos / trampas

  1. Capas demasiado profundas: Aunque las redes con muchas capas pueden aprender características más complejas, también suelen ser más propensas a overfitting y requieren más recursos computacionales.
  2. Inicialización de pesos inadecuada: Si los pesos se inicializan mal (por ejemplo, todos muy grandes o pequeños), puede llevar a problemas como la saturación de activaciones o el desaparecimiento del gradiente.
  3. Función de activación no adecuada: Usar una función de activación incorrecta para un tipo específico de problema puede limitar las capacidades de aprendizaje de la red.

Checklist accionable

  1. Elegir la cantidad adecuada de capas ocultas y neuronas en cada capa.
  2. Usar funciones de activación apropiadas (por ejemplo, ReLU para capas ocultas).
  3. Inicializar los pesos siguiendo mejores prácticas como Xavier o He initialization.
  4. Monitorear el rendimiento durante la fase de entrenamiento y ajustar si es necesario.
  5. Evitar overfitting mediante técnicas de regularización (L1, L2, dropout).

Cierre

Las capas ocultas son fundamentales para que las redes neuronales puedan aprender características complejas en los datos. Al elegir correctamente el número y la arquitectura de estas capas, se puede mejorar significativamente el rendimiento del modelo. Sin embargo, es importante estar atento a posibles errores y trampas durante el diseño y entrenamiento para evitar problemas comunes.

Siguientes pasos

  • Aprender sobre regularización para prevenir overfitting.
  • Explorar diferentes arquitecturas de capa oculta (por ejemplo, usos múltiples de ReLU o tanh).
  • Implementar una red neuronal básica en Python desde cero, sin usar frameworks como PyTorch o TensorFlow.

Contacto

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