🧮 Computational Mathematics

Inicio · Parte 15 — Matemática de Deep Learning

320 — Capstone: red neuronal desde cero en Python puro

deep-learning clase 20 de 20 4 horas demostración capstone_neural_network

Una red de 337 parámetros en Python puro separa dos espirales entrelazadas.

Fórmulas

arquitectura: 2 → 16 (ReLU) → 16 (ReLU) → 1 (sigmoid)
inicialización He, SGD por muestra, lr = 0,08
verificación: gradiente manual ≈ gradiente automático

Desarrollo

El capstone reúne toda la parte en una red completa escrita desde cero, sin NumPy ni frameworks: inicialización, paso hacia adelante, backpropagation, actualización y evaluación. Lo único que importa es que cada pieza sea legible y que el conjunto funcione.

El problema elegido, dos espirales entrelazadas, es un banco clásico y deliberadamente difícil para modelos lineales: no hay ninguna recta ni curva simple que las separe. Un modelo lineal queda en torno al 50 %, y resolverlo demuestra que las capas ocultas están construyendo una representación no trivial.

Las decisiones de diseño vienen todas de clases anteriores y conviene enumerarlas: inicialización He porque la activación es ReLU, ReLU en las ocultas para que el gradiente no se sature, sigmoide en la salida con entropía cruzada para que el gradiente se simplifique a a − y, y SGD por muestra por su ruido regularizador. Nada es arbitrario.

La comprobación final es la que cierra el programa: el gradiente derivado a mano coincide con el que produce el motor de autodiferenciación de la parte 08. Ese acuerdo entre dos caminos independientes es la mejor prueba de que la teoría y la implementación dicen lo mismo, y es exactamente el criterio de verificación que el programa entero defiende.

Ejemplo trabajado

Configuración y resultado del capstone.

problema: dos espirales entrelazadas
          (no linealmente separables)

arquitectura:  2 → 16 (ReLU) → 16 (ReLU) → 1 (sigmoid)
parámetros:    337
inicialización: He (√(2/n_in))
optimizador:   SGD por muestra
learning rate: 0,08

Desglose de los 337 parámetros:
  capa 1:  2×16 + 16 =  48
  capa 2: 16×16 + 16 = 272
  capa 3: 16×1  +  1 =  17
  total              = 337                          ✓

Un modelo lineal sobre estos datos queda en ≈ 50 %.
Verificación: gradiente manual ≈ gradiente de Var.

Qué calcula el laboratorio

Capstone: red neuronal completa desde cero, entrenada y evaluada.

python classes/part-15-matematica-de-deep-learning/320-capstone-red-neuronal-desde-cero-en-python-puro/lab.py
compmath run 320

Salidas del laboratorio (14)

Muestra de la ejecución real

{
  "problema": "dos espirales entrelazadas (no linealmente separables)",
  "arquitectura": "2 → 16 (ReLU) → 16 (ReLU) → 1 (sigmoid)",
  "parametros": 337,
  "inicializacion": "He (√(2/n_in))",
  "optimizador": "SGD por muestra",
  "learning_rate": 0.08
}

Errores comunes

Dónde se usa

Comprensión profunda de los frameworks, entrevistas técnicas, docencia, depuración de implementaciones y diseño de capas personalizadas.

Idea rectora de la parte

El gradiente que se desvanece es un producto de derivadas menores que uno.

Error a evitar

Aplicar softmax sin restar el máximo y provocar overflow.

Conexión con IA

Toda arquitectura moderna, incluido el Transformer, se construye sobre estos bloques y sobre este mismo mecanismo de derivación.

Bibliografía de la clase

Archivos de la clase