Inteligencia Artificial · Capítulo 4

Redes Neuronales Artificiales: La Arquitectura del Aprendizaje Profundo

Cómo la inspiración en el cerebro biológico produjo la tecnología más transformadora de nuestra era.


La Inspiración Biológica

El cerebro humano contiene aproximadamente 86 mil millones de neuronas, cada una conectada a miles de otras mediante sinapsis. Cuando una neurona recibe suficiente estimulación de sus vecinas, "dispara" un impulso eléctrico que viaja a través del axón y activa a su vez a otras neuronas. Este mecanismo masivamente paralelo y distribuido es lo que nos permite reconocer rostros, aprender idiomas, componer música y resolver ecuaciones, todo con un consumo energético de apenas 20 vatios.

En la década de 1940, Warren McCulloch y Walter Pitts propusieron el primer modelo matemático de una neurona artificial. En 1957, Frank Rosenblatt inventó el perceptrón, el primer algoritmo de aprendizaje para una neurona artificial. Aunque aquel primer perceptrón solo podía resolver problemas linealmente separables, sus descendientes —las redes neuronales profundas modernas— son capaces de superar a los seres humanos en un número creciente de tareas.

La Neurona Artificial

Una neurona artificial es una función matemática que toma múltiples entradas, las pondera, las suma, y aplica una función de activación para producir una salida.

Neurona artificial (formulación matemática): Entradas: x₁, x₂, x₃ (ej: píxeles de una imagen) Pesos: w₁, w₂, w₃ (valores aprendidos durante entrenamiento) Sesgo: b (desplazamiento, también aprendido) Suma ponderada: z = w₁·x₁ + w₂·x₂ + w₃·x₃ + b Función de activación: salida = f(z) Donde f puede ser: sigmoide, ReLU, tanh, etc.

Los pesos (weights) son los parámetros más importantes: son los números que el algoritmo aprende durante el entrenamiento. Un peso grande y positivo significa "esta entrada es muy importante y correlaciona positivamente con la salida"; un peso negativo significa "cuando esta entrada es alta, la salida tiende a bajar". El sesgo (bias) permite que la función se desplace, dando al modelo más flexibilidad.

Funciones de Activación

Sin una función de activación no lineal, una red neuronal de múltiples capas seguiría siendo equivalente a una sola capa (la composición de funciones lineales es lineal). Las funciones de activación introducen la no linealidad que permite a las redes aprender patrones complejos.

Función Fórmula Rango Cuándo usarla Problema
Sigmoide 1/(1+e⁻ᶻ) (0, 1) Capa de salida para clasificación binaria Gradiente se desvanece en valores extremos
Tanh (eᶻ - e⁻ᶻ)/(eᶻ + e⁻ᶻ) (-1, 1) Capas ocultas en RNNs También sufre desvanecimiento de gradiente
ReLU max(0, z) [0, ∞) Capas ocultas en la mayoría de redes modernas Neuronas muertas (salida siempre cero)
Leaky ReLU max(0.01z, z) (-∞, ∞) Alternativa a ReLU que evita neuronas muertas El 0.01 es un hiperparámetro a ajustar
Softmax eᶻⁱ/Σeᶻʲ (0, 1), suma=1 Capa de salida para clasificación multiclase Costosa computacionalmente con muchas clases

La función ReLU (Rectified Linear Unit) dominó la última década por una razón simple: es computacionalmente barata (solo un máximo), no satura para valores positivos (lo que mitiga el problema de desvanecimiento de gradiente), y en la práctica produce redes que aprenden más rápido que con sigmoide o tanh.

El problema del gradiente que se desvanece (Vanishing Gradient): Durante el entrenamiento, los gradientes fluyen hacia atrás a través de las capas. Con funciones como la sigmoide, los gradientes se multiplican repetidamente por números pequeños (menores a 0.25) en cada capa. En redes profundas de 10+ capas, el gradiente que llega a las primeras capas es tan pequeño que prácticamente no hay aprendizaje. ReLU mitiga esto porque su derivada es exactamente 1 para entradas positivas, impidiendo que el gradiente se encoja.

Arquitectura de una Red Neuronal

Una red neuronal se organiza en capas de neuronas donde cada neurona de una capa está conectada a todas las neuronas de la capa siguiente (arquitectura "densa" o "fully connected").

El número de capas ocultas y neuronas por capa son hiperparámetros: decisiones de diseño que el ingeniero elige antes del entrenamiento, no parámetros que la red aprende automáticamente.

Propagación hacia Adelante (Forward Propagation)

Veamos un ejemplo numérico simplificado. Supón una red con 2 entradas, 2 neuronas ocultas y 1 salida.

Entrada: x = [0.5, 0.8] Pesos capa oculta (2×2): w_oculta = [[0.3, -0.2], [0.5, 0.1]] Sesgo oculto: b = [0.1, 0.2] Cálculo neurona oculta 1: z₁ = 0.3×0.5 + 0.5×0.8 + 0.1 = 0.15 + 0.40 + 0.10 = 0.65 a₁ = ReLU(0.65) = 0.65 Cálculo neurona oculta 2: z₂ = -0.2×0.5 + 0.1×0.8 + 0.2 = -0.10 + 0.08 + 0.20 = 0.18 a₂ = ReLU(0.18) = 0.18 Pesos capa salida: w_salida = [0.7, 0.9], sesgo = 0.0 z_out = 0.7×0.65 + 0.9×0.18 = 0.455 + 0.162 = 0.617 salida = sigmoide(0.617) ≈ 0.65 → probabilidad predicha: 65%

Retropropagación (Backpropagation)

La retropropagación es el algoritmo que hace posible el entrenamiento de redes neuronales. Su esencia: calcular cuánto contribuyó cada peso al error final, y ajustar los pesos en la dirección que reduce ese error.

El proceso completo en cada iteración de entrenamiento:

  1. Forward pass: Propaga los datos hacia adelante para obtener una predicción.
  2. Calcular la pérdida: Compara la predicción con el valor real usando una función de pérdida (ej: error cuadrático medio para regresión, entropía cruzada para clasificación).
  3. Backward pass: Usando la regla de la cadena del cálculo diferencial, calcula el gradiente de la pérdida respecto a cada peso en la red, empezando desde la capa de salida y yendo hacia atrás.
  4. Actualizar pesos: Cada peso se ajusta en la dirección opuesta al gradiente: w ← w − η·(∂L/∂w), donde η (eta) es la tasa de aprendizaje (learning rate).
La tasa de aprendizaje (learning rate) es el hiperparámetro más crítico. Si es demasiado grande, los pesos saltan de un lado al otro y el entrenamiento no converge. Si es demasiado pequeña, el entrenamiento es extremadamente lento. Valores típicos: 0.001 a 0.1. Técnicas modernas como Adam, RMSprop y AdaGrad ajustan la tasa de aprendizaje automáticamente durante el entrenamiento.

Redes Neuronales Convolucionales (CNNs)

Las redes totalmente conectadas (dense) tienen un problema crítico con las imágenes: una imagen de 224×224 píxeles en color tiene 224×224×3 = 150,528 entradas. Conectar eso a una capa de 1,000 neuronas ya requiere 150 millones de parámetros, solo en esa capa. Las CNNs resuelven este problema de forma elegante aprovechando la estructura espacial de las imágenes.

Las imágenes tienen propiedades que las redes densas ignoran: los píxeles cercanos están relacionados, un borde vertical se ve igual sin importar dónde esté en la imagen (invarianza a la traslación), y las características jerárquicas (bordes → formas → partes → objetos) son reutilizables.

Componentes de una CNN

Redes Neuronales Recurrentes (RNNs)

Las CNNs son excelentes con datos espaciales (imágenes). Pero ¿qué pasa con datos secuenciales donde el orden importa: texto, audio, series temporales? Las RNNs están diseñadas para esto. A diferencia de las redes estándar, las RNNs tienen conexiones que "van hacia atrás": la salida de un paso de tiempo se retroalimenta como entrada al siguiente.

Esto les da una forma de "memoria": el estado oculto en el tiempo t contiene información sobre todo lo que ha procesado hasta ese momento. Sin embargo, las RNNs básicas sufren el problema del gradiente que se desvanece para secuencias largas: la información de pasos muy anteriores se "olvida" gradualmente.

LSTM: Long Short-Term Memory

Las LSTMs, propuestas por Hochreiter y Schmidhuber en 1997, resuelven el problema de las dependencias largas con un mecanismo de "puertas" (gates). Una celda LSTM tiene tres puertas:

Este mecanismo permite a las LSTMs mantener información relevante durante cientos de pasos de tiempo, siendo el estándar para traducción automática, reconocimiento de voz y generación de texto durante gran parte de la década de 2010, hasta que los transformers las superaron en 2017.

El Hardware del Deep Learning: Por Qué Importan las GPUs

Una GPU (Graphics Processing Unit) puede realizar miles de operaciones matemáticas simples en paralelo. Originalmente diseñadas para renderizar gráficos de videojuegos, resultaron perfectas para el álgebra lineal masiva que requiere el deep learning. Una NVIDIA A100 (usada en centros de datos de IA) puede realizar 312 teraflops de cálculos en punto flotante (312 billones de operaciones por segundo). Una CPU moderna realiza apenas unos 100 gigaflops en las mismas condiciones.

Entrenar GPT-3 (175,000 millones de parámetros) requirió aproximadamente 355 años de tiempo de GPU (realizados en paralelo en miles de GPUs durante semanas). Este costo computacional es una de las razones por las que el acceso a modelos de IA de última generación está concentrado en pocas organizaciones.

Arquitecturas Famosas y el Teorema de Aproximación Universal

Arquitectura Año Contribución clave
AlexNet 2012 Primera CNN profunda en ganar ImageNet; inició la era del deep learning
VGG-16 2014 Demostró que la profundidad (16-19 capas) mejora el rendimiento sistemáticamente
ResNet 2015 Conexiones residuales (skip connections) permitieron entrenar redes de 152+ capas
Transformer 2017 Mecanismo de atención; base de GPT, BERT y toda la IA generativa moderna
BERT 2018 Preentrenamiento bidireccional para comprensión del lenguaje natural
GPT-3 2020 175B parámetros; demostró generación de texto de calidad humana

El Teorema de Aproximación Universal (Cybenko, 1989) establece que una red neuronal con al menos una capa oculta y un número suficiente de neuronas puede aproximar cualquier función continua con precisión arbitraria. Esto no significa que las redes sean mágicas —encontrar los pesos correctos sigue siendo el desafío— pero garantiza que en principio, la arquitectura tiene la capacidad expresiva suficiente para cualquier problema.

Resumen del Capítulo