← Volver a Aprende con CDIA

Deep LearningRedes neuronales

IntermedioDeep Learning7 min de lectura

Redes neuronales

Apilar neuronas en capas con funciones de activación no lineales para aproximar casi cualquier función. El perceptrón multicapa, pieza central del deep learning.

Una red neuronal apila muchos perceptrones en capas, de modo que la salida de unos alimenta a los siguientes. Ese simple gesto —conectar neuronas en capas— le permite aprender relaciones curvas y complejas que una sola neurona jamás podría.

De una neurona a una red

La arquitectura clásica, el perceptrón multicapa (MLP), tiene tres tipos de capa:

  • Capa de entrada: recibe las variables ().
  • Capas ocultas: una o más capas de neuronas que transforman la señal. Aquí ocurre la magia.
  • Capa de salida: entrega el resultado (una clase, una probabilidad, un número).

Cada neurona de una capa se conecta con todas las de la siguiente, cada conexión con su propio peso. La información fluye hacia adelante, capa por capa: a esto se le llama paso hacia adelante (forward pass).

Entrada Capa oculta Salida
Un perceptrón multicapa: cada neurona se conecta con todas las de la capa siguiente, y la señal avanza de izquierda a derecha.

El ingrediente secreto: la no-linealidad

Si cada neurona solo hiciera una suma ponderada, apilar capas no serviría de nada: la composición de funciones lineales sigue siendo lineal. La clave está en la función de activación, que introduce una curva entre capa y capa. Las más usadas:

  • ReLU: simple y rapidísima, la favorita en capas ocultas.
  • Sigmoide — comprime a ; útil en la salida para probabilidades.
  • Softmax — reparte probabilidad entre varias clases en la salida.

Gracias a estas curvas, una red con suficientes neuronas puede aproximar casi cualquier función (el teorema de aproximación universal). Por eso resuelve el XOR que derrotaba a un perceptrón solo: dos capas bastan.

La fórmula de una capa

Cada capa transforma su entrada en una salida con una matriz de pesos , un vector de sesgos y una activación :

Una red profunda no es más que esta operación encadenada muchas veces.

En código

scikit-learn incluye un MLP listo para usar; basta indicar el tamaño de las capas ocultas:

from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline

# Dos capas ocultas de 16 y 8 neuronas, con activación ReLU.
red = make_pipeline(
    StandardScaler(),
    MLPClassifier(hidden_layer_sizes=(16, 8), activation="relu", max_iter=500),
).fit(X_train, y_train)

red.predict(X_test)

Escalar las entradas es casi obligatorio: las redes entrenan mucho mejor con variables en rangos parecidos.

Para llevar

Una red neuronal conecta neuronas en capas, y una función de activación no lineal entre ellas es lo que le da su poder: puede aproximar casi cualquier función. Pero queda una pregunta clave: con millones de pesos, ¿cómo sabe la red cómo ajustarlos? La respuesta es el algoritmo de la próxima lección: backpropagation.