Inicio · Parte 15
Perceptrón, MLP, activaciones, pérdidas, backpropagation paso a paso, grafos de cómputo, inicialización, normalización, convolución, recurrencia y embeddings.
Una red neuronal es una función compuesta con muchos parámetros, entrenada minimizando una pérdida con descenso de gradiente. Esa frase contiene todo, y esta parte la desarrolla pieza por pieza usando exactamente lo construido antes: la regla de la cadena de la parte 07, el gradiente y la autodiferenciación de la parte 08, los optimizadores de la parte 12 y las pérdidas de la parte 13.
Las clases 301 y 302 marcan la frontera histórica. El perceptrón converge si y solo si los datos son linealmente separables, y su incapacidad para resolver XOR —señalada por Minsky y Papert en 1969— congeló el campo durante una década. La solución es apilar capas con no linealidad entre ellas: sin ella, componer transformaciones lineales da otra transformación lineal y la profundidad no aporta nada. La capa oculta no clasifica: construye una representación en la que el problema sí es separable, y ese es el mecanismo esencial del aprendizaje profundo.
Las clases 303 a 306 son el motor. Cada activación tiene su zona de saturación, y la sigmoide, con derivada máxima de 0,25, garantiza que el gradiente se atenúe al menos cuatro veces por capa: por eso ReLU la desplazó. Backpropagation se desarrolla aquí paso a paso, con números, y se ve que no es un algoritmo nuevo sino la regla de la cadena aplicada en orden topológico inverso sobre el grafo de cómputo. El detalle que más se olvida al implementarlo a mano es que un nodo reutilizado acumula gradientes de todos sus consumos.
Las clases 307 a 309 tratan lo que hace entrenable una red profunda. La inicialización no es un detalle: con escala 0,01 las activaciones colapsan a cero en ocho capas y con escala 1,0 se saturan, mientras que Xavier y He mantienen la varianza estable en ambos sentidos. La normalización estabiliza la escala interna, y batch norm y layer norm se distinguen simplemente por el eje sobre el que promedian —una razón concreta por la que los Transformers usan layer norm—. El dropout introduce ruido en entrenamiento y conserva la esperanza en inferencia mediante escalado.
Las clases 310 a 312 desarrollan la convolución como capa: la fórmula del tamaño de salida con padding y stride, el campo receptivo que crece al apilar capas, y el hecho de que dos convoluciones de 3×3 cubren lo mismo que una de 5×5 con menos parámetros y más no linealidad —la observación que define VGG—.
Las clases 313 a 316 tratan las secuencias. Una RNN comparte pesos en el tiempo y acumula historia en su estado, pero el gradiente a través de 50 pasos es un producto de 50 factores: si cada uno es menor que 1 el producto se desvanece exponencialmente, y si es mayor explota. La LSTM resuelve el desvanecimiento con un camino aditivo para el estado de celda, y la GRU lo consigue con dos puertas en vez de tres y un 25 % menos de parámetros.
El cierre conecta con la práctica: embeddings como geometría del significado, las técnicas reales de entrenamiento —warmup, clipping, planificadores—, y la comparación entre el motor Var de la parte 08 y PyTorch o JAX, que hacen lo mismo con otra escala de ingeniería. El capstone entrena una red completa en Python puro sobre dos espirales entrelazadas, y comprueba que el gradiente derivado a mano coincide con el automático.
| # | Clase | Demostración ejecutable |
|---|---|---|
301 |
Perceptrón y separabilidad | perceptron |
302 |
MLP como composición de funciones | mlp |
303 |
Funciones de activación | activations |
304 |
Funciones de pérdida | loss_functions |
305 |
Backpropagation paso a paso | backpropagation |
306 |
Computational graphs | computational_graphs |
307 |
Inicialización de pesos | weight_initialization |
308 |
Batch normalization y layer normalization | normalization |
309 |
Regularización y dropout | dropout_regularization |
310 |
Convolución discreta | discrete_convolution |
311 |
CNN y receptive fields | cnn_receptive_fields |
312 |
Pooling y downsampling | pooling |
313 |
RNN y recurrencia | rnn |
314 |
Vanishing y exploding gradients | vanishing_exploding |
315 |
LSTM y compuertas | lstm |
316 |
GRU | gru |
317 |
Embeddings como espacios vectoriales | embeddings |
318 |
Optimización de redes profundas | deep_optimization |
319 |
Autodiff con PyTorch/JAX | autodiff_frameworks |
320 |
Capstone: red neuronal desde cero en Python puro | capstone_neural_network |
compmath run --part 15
| Término | Definición | Clase |
|---|---|---|
| Perceptrón | Neurona lineal con umbral. Converge si y solo si los datos son linealmente separables. | 301 |
| Separabilidad lineal | Existencia de un hiperplano que separa las clases sin error. XOR no la cumple. | 301 |
| Perceptrón multicapa | Composición de capas lineales con no linealidad entre ellas. | 302 |
| Capa oculta | Capa intermedia que construye una representación donde el problema sí es separable. | 302 |
| Teorema de aproximación universal | Una capa oculta suficientemente ancha aproxima cualquier función continua. No dice cómo entrenarla. | 302 |
| Función de activación | No linealidad aplicada tras la transformación lineal. Sin ella la profundidad no aporta nada. | 303 |
| Saturación | Zona donde la derivada de la activación es casi nula y el gradiente deja de fluir. | 303 |
| ReLU | max(0, x). Derivada 1 en positivo: no satura por la derecha y es barata. | 303 |
| Pérdida de Huber | Cuadrática cerca de cero y lineal lejos. Robusta ante valores atípicos. | 304 |
| Backpropagation | Regla de la cadena aplicada en orden topológico inverso sobre el grafo de cómputo. | 305 |
| Paso hacia adelante | Cálculo de las salidas capa a capa, guardando los valores intermedios. | 305 |
| Grafo de cómputo | Representación de la expresión como nodos de operaciones y aristas de dependencia. | 306 |
| Acumulación de gradientes | Un nodo usado en varios sitios suma las contribuciones de todos sus consumos. | 306 |
| Inicialización de Xavier | Escala 1/√n. Mantiene la varianza estable con activaciones simétricas como tanh. | 307 |
| Inicialización de He | Escala √(2/n). Compensa que ReLU anula la mitad de las activaciones. | 307 |
| Ruptura de simetría | Inicializar con valores distintos para que las neuronas de una capa no aprendan lo mismo. | 307 |
| Batch normalization | Normaliza cada característica sobre el lote. Depende del tamaño del lote. | 308 |
| Layer normalization | Normaliza cada muestra sobre sus características. Independiente del lote. | 308 |
| Dropout | Apagar neuronas al azar durante el entrenamiento para evitar coadaptación. | 309 |
| Inverted dropout | Escalar durante el entrenamiento para que la inferencia no requiera ajuste. | 309 |
| Padding | Relleno del borde que permite conservar el tamaño espacial tras convolucionar. | 310 |
| Stride | Salto del núcleo al desplazarse. Reduce el tamaño de salida. | 310 |
| Campo receptivo | Región de la entrada que influye en una activación concreta. Crece al apilar capas. | 311 |
| Compartición de parámetros | El mismo núcleo se aplica en todas las posiciones. Reduce parámetros e impone invariancia. | 311 |
| Pooling | Reducción espacial por máximo o media. Sin parámetros aprendidos. | 312 |
| Red recurrente | Procesa secuencias manteniendo un estado oculto y compartiendo pesos en el tiempo. | 313 |
| Estado oculto | Vector que resume la historia procesada hasta el instante actual. | 313 |
| Gradiente que se desvanece | Producto de muchas derivadas menores que 1: el gradiente tiende a cero exponencialmente. | 314 |
| Gradient clipping | Acotar la norma del gradiente conservando su dirección. Evita la explosión. | 314 |
| LSTM | Celda con puertas de olvido, entrada y salida, y un camino aditivo para el gradiente. | 315 |
| Estado de celda | Memoria de largo plazo de la LSTM, actualizada de forma aditiva. | 315 |
| GRU | Celda recurrente con puertas de actualización y reinicio. Un 25 % menos de parámetros que LSTM. | 316 |
| Embedding | Representación densa aprendida donde la proximidad geométrica refleja similitud. | 317 |
| Similitud coseno | Coseno del ángulo entre dos vectores. Ignora la magnitud y mide solo la dirección. | 317 |
| Warmup | Subir el learning rate gradualmente al inicio para no divergir con estadísticas inmaduras. | 318 |
| Autodiferenciación en modo reverso | Una pasada hacia adelante y una hacia atrás dan todos los gradientes de una salida escalar. | 319 |