Atlasingeniería

Aprendizaje automáticoRedes neuronalesTema 1

Del perceptrón a la red multicapa

Una neurona artificial es una regresión logística. Lo que cambia todo es apilarlas: con una capa oculta y una no linealidad alcanza para aproximar cualquier función continua.

Para este tema conviene tener claro:Regresión logística

Una neurona artificial hace algo que ya conocemos: suma sus entradas con pesos y aplica una función. Es una regresión logística con otro nombre. Todo el poder aparece al conectarlas en capas, y el motivo es más preciso de lo que suele contarse.

El perceptrón y lo que no podía

El perceptrón original, de 1958, calcula una suma ponderada y devuelve uno o cero según supere un umbral. Aprende ajustando los pesos ante cada error.

Su límite lo señalaron Minsky y Papert: al ser lineal, no puede representar el XOR, una función de dos variables trivial. Ese resultado frenó el campo durante años, y la respuesta —apilar capas— ya estaba disponible; lo que faltaba era cómo entrenarlas.

Antes de seguir, predecí

Una red de tres capas sin función de activación entre ellas. ¿Qué puede representar?

Apilar capas, y por qué hace falta la no linealidad

Una red multicapa conecta neuronas en niveles: la salida de una capa es la entrada de la siguiente. Las capas intermedias se llaman ocultas porque no se observan ni en la entrada ni en la salida.

Hay una condición que no se puede saltear: entre capas tiene que haber una no linealidad. Sin ella, componer transformaciones lineales da otra transformación lineal, y diez capas equivaldrían a

Esta es ReLU: cero hasta un punto y lineal después. El peso cambia la inclinación y el sesgo mueve el codo. Ese codo es toda la no linealidad que hace falta: sin él, apilar capas no agregaría nada.f(x) = (abs(a * x + b) + (a * x + b)) / 2

una sola. La no linealidad es lo que hace que apilar sirva.

Las activaciones: de la sigmoide a ReLU

La función que introduce esa no linealidad es la activación. La sigmoide fue la clásica y tiene un defecto grave: se satura en los extremos, donde su derivada es casi cero, y en una red profunda esos factores chicos se multiplican hasta que el gradiente desaparece.

ReLU —devolver el valor si es positivo y cero si no— resolvió eso con algo casi ridículo por lo simple: su derivada es uno en la zona positiva, así que el gradiente pasa intacto. Es barata y es el default; su problema conocido son las neuronas que quedan siempre en cero, y de ahí las variantes que dejan una pendiente pequeña del lado negativo.

El teorema de aproximación universal y su letra chica

El teorema de aproximación universal dice que una red con una sola capa oculta, suficientes neuronas y una activación no lineal puede aproximar cualquier función continua con la precisión que se quiera.

Conviene leerlo con cuidado, porque promete menos de lo que parece. Dice que existe esa red, no que el entrenamiento la vaya a encontrar. Y “suficientes neuronas” puede ser una cantidad impracticable: en la práctica, varias capas con pocas neuronas cada una representan lo mismo con muchísimos menos parámetros. La profundidad es una ventaja de eficiencia, no de expresividad.

Las decisiones de diseño, que son pocas

Las decisiones de diseño son pocas y concretas. Cuántas capas y de qué ancho —capacidad—. La activación, que hoy es ReLU o alguna variante. La capa de salida, que depende de la tarea: lineal para regresión, sigmoide para binaria, softmax para multiclase.

Y la inicialización de los pesos, que no es un detalle: arrancar todo en cero deja todas las neuronas de una capa calculando lo mismo para siempre, porque reciben gradientes idénticos. Se inicializa al azar con una escala calculada según el tamaño de la capa, justamente para que las señales no se apaguen ni exploten al atravesarla.

Cuándo una red y cuándo no

Para datos tabulares, una red multicapa rara vez le gana a un ensamble de árboles, y pide más trabajo: escalado, ajuste de hiperparámetros y más datos.

Donde domina es donde los atributos crudos no sirven por sí solos y hay que construir representaciones: imágenes, audio, texto. Ahí las capas aprenden una jerarquía de atributos que nadie programó, y esa es la diferencia real con los modelos clásicos.

Una red mínima, y lo que decide cada línea

import torch.nn as nn

modelo = nn.Sequential(
    nn.Linear(entrada, 256),
    nn.ReLU(),                # sin esto, las tres capas equivalen a una sola
    nn.BatchNorm1d(256),      # estabiliza las escalas entre capas
    nn.Dropout(0.3),          # regulariza: apaga neuronas al azar en entrenamiento
    nn.Linear(256, 64),
    nn.ReLU(),
    nn.Linear(64, 1),         # sin activación al final: la pérdida la incluye
)

La línea imprescindible es la primera ReLU. Sin una no linealidad entre capas, componer transformaciones lineales da otra transformación lineal, y una red de veinte capas tendría exactamente la misma capacidad expresiva que una sola.

La última capa sin activación es una convención que se equivoca seguido: las funciones de pérdida de clasificación de las bibliotecas aplican la sigmoide o la softmax internamente, por estabilidad numérica. Agregarla también en el modelo la aplica dos veces y el entrenamiento no converge.

Cuándo una red y cuándo no

Tipo de datoQué convienePor qué
Tablas con columnas heterogéneasboostinglas redes pierden y son más caras
Imágenesconvolucionalesla localidad es parte del problema
Textotransformers preentrenadosaprender el idioma desde cero es carísimo
Audio y señalesredesestructura temporal
Pocos datos etiquetadosmodelo simple, o ajustar uno preentrenadouna red desde cero necesita muchísimo
La primera fila es la que más se ignora: para datos tabulares, que son la mayoría de los datos de una empresa, una red neuronal suele ser la opción peor y más cara.

Cierre

Una neurona es una regresión logística; apilarlas sirve sólo si hay no linealidad entre capas. ReLU evita el desvanecimiento que traía la sigmoide, la aproximación universal existe pero no garantiza encontrarla, la profundidad ahorra parámetros y la inicialización decide si la red arranca a aprender.

Autoevaluación

¿Lo entendiste?

Una neurona artificial, ¿qué es en términos conocidos?
¿Qué pasa si no hay no linealidad entre capas?
¿Qué señalaron Minsky y Papert sobre el perceptrón?
¿Por qué las capas intermedias se llaman ocultas?