Setup. Una telco con 70 clientes generados con semilla fija (mulberry32). El eje x es la antigüedad en meses. Arriba, regresión: predecir el gasto mensual en euros con una recta w x+b que tú controlas (la verdad generadora es gasto = 35 + 0.55·antigüedad + ruido). Abajo, clasificación: predecir si churneará (puntos en 0/1, con jitter para verlos) con una sigmoide σ(wcx+bc); la verdad generadora hace que los clientes jóvenes churneen mucho más.
Juega. Cada slider re-evalúa la pérdida sobre los 70 clientes y la compara con la mejor posible: para la recta, la solución cerrada de mínimos cuadrados; para la sigmoide, una regresión logística ajustada por descenso de gradiente al cargar la muestra. Estás haciendo a mano lo que el entrenamiento automatiza.
Lee así. Mismo cliente, misma feature, dos preguntas de negocio distintas: "¿cuánto gastará?" (un número, MSE, euros) y "¿se irá?" (una probabilidad, log-loss, decisión). La pérdida no es un detalle técnico: define qué significa equivocarse.
Mensaje. Todo el deep learning del curso es esto mismo con modelos más ricos: elegir una familia de funciones, una pérdida que mida el error en las unidades del problema, y un algoritmo que baje esa pérdida. Hoy la familia será la neurona y el MLP.
Términos. MSE: error cuadrático medio, pérdida estándar de regresión. log-loss: cross-entropy binaria, pérdida estándar de clasificación probabilística. churn: baja del cliente. sigmoide: σ(z) = 1/(1+e−z), convierte un número real en una probabilidad.
Setup. Forecast de demanda en retail (piensa en una referencia de Inditex): el eje x es la intensidad promocional normalizada y el eje y la demanda normalizada. La verdad generadora (curva gris discontinua) es una onda suave; los puntos llevan ruido gaussiano. Ajusto por mínimos cuadrados un polinomio de grado d sobre los n puntos de entrenamiento, y evalúo la MSE sobre 200 puntos de validación que el ajuste nunca ve. Abajo: las dos MSE para todos los grados 0…12, con tu d marcado.
Juega. El panel inferior es la figura más importante del machine learning aplicado: la U del error de validación. A su izquierda, infraajuste; a su derecha, sobreajuste; en el valle, el modelo que pondrías en producción.
Lee así. El lector marca el grado que minimiza la MSE de validación en esta muestra. Fíjate en que ese ganador también baila al cambiar de muestra: por eso en la práctica se promedia con validación cruzada en vez de confiar en una partición única.
Mensaje. Las redes del curso tienen miles de "grados de libertad", así que viven permanentemente a la derecha de esta U. Todo el Día 03 (regularización, early stopping) consiste en empujarlas hacia el valle.
Términos. capacidad: riqueza de la familia de funciones que el modelo puede representar. overfitting: memorizar ruido de la muestra; train baja, validación sube. validación: datos apartados que no tocan el ajuste. varianza: sensibilidad del modelo ajustado a la muestra concreta.
Setup. Cada punto es un cliente de la telco en el plano (antigüedad normalizada, llamadas al soporte normalizadas): dorados oscuros = churn, blancos = se quedan; las dos nubes salen de mulberry32 con semilla fija. El fondo es el mapa de calor de la salida de TU neurona a = σ(w₁x₁ + w₂x₂ + b) en cada punto del plano (blanco = salida baja, sepia = alta), y la línea negra es la frontera z = 0. Abajo: la activación elegida, con el z del cliente seguido marcado.
Juega. El lector da el z y la salida del cliente seguido, y la accuracy de tu neurona sobre los 80 clientes con la regla "churn si z > 0". Intenta superar el 90%: necesitas w₁ negativo (la antigüedad protege) y w₂ positivo (las llamadas delatan).
Lee así. Una neurona es exactamente una regresión logística cuando σ es la sigmoide: lo que ya sabías de ML clásico es el caso d = 1 capa. Lo nuevo del curso empieza al apilarlas.
Mensaje. Pesos = orientación de la frontera; sesgo = posición; activación = cómo se gradúa la respuesta a cada lado. Con esto leído, el MLP de dos slides más adelante es solo "varias de estas, en cadena".
Términos. z: pre-activación, la suma ponderada antes de σ. frontera de decisión: lugar donde z = 0 y la predicción cambia de bando. ReLU: rectified linear unit, la activación moderna por defecto.
Setup. El cliente del deck, en vivo: tres atributos observables (tenure, monthly, support_calls) y la neurona con los pesos del día, w = (−0.04, 0.02, 0.55) y b = −0.50. Arriba: cada contribución wixi y el sesgo como barras que suman z. Abajo: la sigmoide con el punto (z, ŷ) del cliente actual y el umbral 0.5 marcado.
Juega. Los tres sliders son la ficha del cliente. El JS rehace la cuenta completa en cada movimiento: no hay nada precalculado. La cuenta del deck imprime z = 2.49 con monthly = 80; la aritmética real de esos pesos da 2.89, y el 2.49 corresponde a monthly = 60: el paso 2 del guion te lo deja ver.
Lee así. z es un marcador en "unidades de riesgo": cada feature empuja a favor o en contra según el signo de su peso. La sigmoide solo traduce ese marcador a probabilidad; la decisión de negocio (campaña sí/no) es el umbral.
Mensaje. Esto es TODO el forward de una neurona: una suma ponderada y una función. El forward de la red entera de la slide siguiente es esta misma cuenta repetida capa a capa.
Términos. forward (pass): evaluar la red de entrada a salida. contribución: wixi, el aporte de cada feature a z. umbral: probabilidad a partir de la cual se actúa; aquí 0.5, en la slide de churn verás que el negocio lo mueve.
Setup. Arriba: las tres activaciones (trazo continuo) y sus derivadas (discontinuo). Abajo, el experimento de verdad: construyo una red de L capas y 20 neuronas por capa con pesos Wℓ ~ N(0, g²/20) (mulberry32), hago un forward con entrada aleatoria, inyecto un gradiente aleatorio arriba y ejecuto la recursión de backprop de la Ec. 5, capa a capa y para las tres activaciones con los MISMOS pesos. La curva es la norma media de δℓ (en log₁₀, promediada sobre 10 redes) en función de la capa.
Juega. El slider g es la decisión que en PyTorch toma init por ti; el slider L es la profundidad. El lector resume el factor total ‖δ1‖/‖δL‖ de cada activación: léelo como "cuántas veces más débil (o fuerte) llega la señal de aprendizaje a la primera capa".
Lee así. Esto explica un hecho histórico: antes de 2012 las redes profundas con sigmoide no entrenaban. ReLU + inicialización correcta (He) es lo que hizo entrenables las redes de 20, 50, 150 capas que verás en el curso.
Mensaje. La activación no es una preferencia estética: decide si el gradiente sobrevive al viaje de vuelta. ReLU por defecto; sigmoide solo en la capa de salida, donde su lectura como probabilidad es lo que el negocio necesita.
Términos. δℓ: señal de error de la capa ℓ, gradiente de la pérdida respecto a zℓ. ⊙: producto componente a componente. gain g: factor de escala de la desviación típica inicial de los pesos. He init: g = √2, la escala que conserva la señal con ReLU. saturación: zona plana de la activación donde σ′ ≈ 0.
| cantidad | cálculo | valor |
|---|
Setup. La red 2→2→1 del deck con sus pesos exactos: capa oculta w = (0.5, 0.3 | 0.2, 0.7), sesgos (0.1, −0.1), ReLU; capa de salida (0.6, −0.4), sesgo 0.1, sigmoide. Arriba: el grafo con los valores fluyendo (grosor de arista proporcional a |peso|; dorado = positivo, gris = negativo; dentro de cada nodo, su z y su a actuales). Abajo: la salida ŷ como función de x₁ con tu x₂ fijo, con el punto actual marcado.
Juega. La tabla recalcula las seis cantidades del ejemplo en cada movimiento, en el orden exacto en que las calcularías a mano: primero las dos z ocultas, luego las ReLU, luego zo, la sigmoide y la pérdida con y = 1.
Lee así. Piensa en x₁, x₂ como dos atributos estandarizados de un cliente (por ejemplo, desviaciones de gasto y de llamadas respecto a la media). El forward es una cascada de las cuentas de la slide anterior: ninguna pieza nueva, solo composición.
Mensaje. Si sabes hacer ESTA tabla a mano, sabes qué hace cualquier MLP por dentro: multiplicar matrices, sumar sesgos, aplicar activaciones. Lo único que crece en las redes reales es el tamaño de las matrices.
Términos. capa oculta: la que ni recibe la entrada cruda ni emite la salida final. aj: activación, salida de la neurona j tras la ReLU. neurona muerta: ReLU con z < 0 para todas las entradas de interés; no contribuye ni aprende.
| parám. | valor | ∂ℒ/∂· | tras el paso |
|---|
Setup. La misma red 2→2→1 con la entrada fija x = (1, 2) y la etiqueta y = 1. El JS implementa la regla de la cadena simbólica: δout = ŷ−y, las δ ocultas con la indicatriz de la ReLU, y los nueve gradientes exactos (seis pesos y tres sesgos). Izquierda: la trayectoria de la pérdida paso a paso. Derecha: los nueve gradientes actuales como barras. La tabla muestra cada parámetro, su gradiente y dónde quedará tras un paso con tu η.
Juega. El botón "un paso" ejecuta literalmente la Ec. 4: θ ← θ − ηg, recalcula el forward y añade el punto a la trayectoria. No hay ninguna curva precocinada: si cambias η cambias la trayectoria que se dibuja.
Lee así. Los gradientes de la capa de salida son los más grandes (la señal aún no se ha atenuado) y los de h₂ tienen signo contrario a los de h₁ porque w₆ = −0.4 invierte el error al repartirlo. El signo del gradiente dice hacia dónde NO moverse.
Mensaje. Esto es exactamente lo que hace loss.backward() en PyTorch sobre millones de parámetros: la misma regla de la cadena, el mismo "error destino × activación origen", automatizado sobre el grafo de operaciones.
Términos. δ: gradiente de la pérdida respecto a la pre-activación de un nodo. 𝟙z>0: derivada de la ReLU (1 si viva, 0 si muerta). paso de descenso: θ ← θ − ηg. check de gradiente: comparar el gradiente analítico con (ℒ(w+ε)−ℒ(w−ε))/2ε.
Setup. Vuelvo a la regresión de la primera slide: predecir gasto mensual a partir de la antigüedad con dos parámetros, θ = (w, b). El mapa de calor es la MSE real sobre los 60 clientes (blanco = bajo, sepia = alto, en escala log de color), la estrella es el mínimo de mínimos cuadrados, y la línea dorada es la trayectoria exacta de descenso de gradiente desde θ₀ con tu η y tus T pasos. Derecha: la MSE en cada iteración, en escala log.
Juega. El lector calcula la Hessiana exacta, sus autovalores, κ y ηcrít = 2/λmáx; todo cambia al pulsar "nueva muestra" o al estandarizar. La frontera convergencia/divergencia que ves en pantalla es la teórica, al pixel.
Lee así. Este valle con dos parámetros es la caricatura honesta de los millones de parámetros de una red: allí también hay direcciones empinadas y suaves, y el learning rate vive atrapado entre divergir y no avanzar. Por eso el deck dice que el 80% de los entrenamientos fallidos son un η mal puesto.
Mensaje. Dos remedios al mal condicionamiento: arreglar los datos (estandarizar: lo acabas de ver) y arreglar el algoritmo (adaptar el paso por coordenada: la slide siguiente, Adam).
Términos. superficie de pérdida: R̂n como función de los parámetros. Hessiana: matriz de curvaturas. κ: número de condición, alargamiento del valle. divergencia: pasos que sobrepasan el valle y amplifican el error.
Setup. El banco de pruebas clásico: el valle cuadrático mal condicionado f(θ) = ½(θ₁² + κ θ₂²), con gradiente exacto (θ₁, κθ₂). Los tres corredores parten del mismo punto (−9, 1.6) y dan 160 pasos: SGD puro, SGD con momentum, y Adam con corrección de sesgo completa, implementados ecuación a ecuación. Derecha: f en cada iteración (escala log), la carrera en versión métrica.
Juega. κ controla cuán alargado es el valle (el mapa de contorno se re-dibuja); η es compartido por SGD y momentum para que la comparación sea limpia, y Adam lleva el suyo porque su paso efectivo tiene otras unidades (es ≈ η, no ≈ η·gradiente).
Lee así. En las redes reales el valle no es cuadrático, pero localmente se le parece y κ es gigantesco. Lo que ves aquí es la razón operativa del consejo del deck: AdamW con η = 10&supmin;³ como punto de partida para casi todo.
Mensaje. SGD fracasa por geometría, no por mala suerte; momentum cura el síntoma (oscilación) y Adam cura la causa (escala por coordenada). Elegir optimizador es elegir cuánta geometría quieres ignorar.
Términos. gt: gradiente del paso t. mt, vt: medias móviles de g y g². corrección de sesgo: dividir por 1−βt para compensar el arranque en cero. ε: 10&supmin;⁸, evita dividir por cero. weight decay λ: encogimiento θ ← θ−ηλθ de AdamW.
Setup. La regresión gasto~antigüedad con la feature ya estandarizada y n = 256 clientes. Izquierda: el valle MSE con la trayectoria de SGD mini-batch durante 2 épocas exactas con tu B: en cada paso muestreo B clientes (mulberry32), calculo su gradiente medio y actualizo. Derecha: el experimento de varianza: en el punto de partida extraigo 150 mini-batches de cada tamaño y mido la desviación ‖ĝB − g‖ respecto al gradiente completo; la línea discontinua es la teoría 1/√B anclada en B = 1.
Juega. El lector da los pasos por época (256/B), el error relativo medio del gradiente con tu B, y la predicción teórica. La comparación medido vs teoría es la honestidad de la slide: nada está dibujado a mano.
Lee así. Hay dos relojes: pasos (cada actualización aprende) y datos procesados (cada época cuesta lo mismo procese B = 1 o B = 256). El mini-batch pequeño gana en el primer reloj y empata en el segundo: por eso existe.
Mensaje. Los 32–128 del deck no son folclore: son el compromiso cuantitativo entre una curva de ruido con pendiente −½ y un coste por paso lineal en B. Ahora sabes derivarlo, no solo recitarlo.
Términos. mini-batch: submuestra aleatoria de B ejemplos por actualización. época: una pasada completa por los n datos. insesgado: estimador cuya media es la cantidad verdadera. 1/√B: ley de reducción del ruido al promediar B observaciones independientes.
| realidad \ modelo | marcado (p ≥ τ) | no marcado |
|---|
Setup. El caso del día, de punta a punta: 400 clientes telco sintéticos y reproducibles (mulberry32) con tenure, monthly y support_calls; el churn verdadero sale de una logística con los signos de la slide "Forward" (la antigüedad protege, las llamadas delatan). Sobre ellos entreno al cargar, por descenso de gradiente sobre la BCE, una regresión logística con features estandarizadas: la neurona del día, completa. Arriba: las probabilidades predichas p̂ separadas por clase real (contorno tinta = se quedan, relleno dorado = churn) con tu umbral τ. Abajo: el ahorro anual en euros como función de τ, con el máximo marcado.
Juega. La matriz de confusión, las métricas y los euros se recalculan en cada movimiento. El AUC del lector resume cuánto separa el modelo las dos distribuciones de arriba, independientemente del umbral.
Lee así. La trampa del accuracy del deck, en vivo: con τ = 0.9 el modelo marca a casi nadie y aun así conserva un accuracy en torno al 65% (la tasa de no-churn), mientras el ahorro se hunde a cero. La métrica de negocio y el accuracy no votan igual.
Mensaje. Este es el pipeline completo del día: datos → neurona (regresión logística) → entrenamiento por gradiente → probabilidad → decisión en euros. En la práctica del curso harás exactamente esto sobre el Telco Customer Churn real, con un MLP en PyTorch en lugar de la neurona.
Términos. TP/FP/FN/TN: aciertos y errores de cada signo al cruzar predicción con realidad. LTV: lifetime value, valor del cliente. s: probabilidad de que la oferta retenga a un churner (aquí 0.6). AUC: probabilidad de que un churner al azar reciba más p̂ que un no-churner al azar. calibración: que p̂ = 0.3 signifique "30% de las veces churnea".
En una frase. Hoy has abierto la caja negra: una red es una composición de sumas ponderadas y activaciones, su aprendizaje es la regla de la cadena más un descenso bien dosificado, y su valor se mide en la moneda del negocio, no en porcentaje de aciertos.