Setup. Arriba ves el embudo: T tokens de entrada, cada uno un embedding de dx = 16 números (en gris), tienen que pasar por el tubo de un único estado hT de dh números (celdas doradas). Abajo, la curva "números por token" dh/T en función de T para tu dh elegido, con la línea de referencia en 1: por debajo de ella, el estado ni siquiera puede dedicar un número entero a cada token. Piensa en el caso Inditex del curso: 156 semanas de historia de una tienda, o una reseña de cliente de 200 palabras, comprimidas en 64 números.
Juega. Mueve T con dh fijo y mira cómo el embudo se estrangula: la entrada crece, el tubo no. Luego intenta compensar con dh y observa en el lector el precio: parámetros de W y coste por paso crecen con dh².
Lee así. El factor de compresión T·dx/dh es cuántos números de entrada compiten por cada hueco del estado. No es una metáfora: es una cota dura de cuánta información puede sobrevivir, igual que resumir El Quijote en un post-it.
Mensaje. La capacidad informacional de hT es fija; la entrada no lo es. Todo lo demás del día (atención, Transformer) nace de esta asimetría. La slide siguiente la mide en vivo con la recurrencia de verdad.
Términos. seq2seq: arquitectura encoder–decoder para mapear secuencia a secuencia. hT: estado oculto final, el "resumen" de toda la entrada. dx: dimensión del embedding de cada token. Factor de compresión: T·dx/dh.
Setup. Esto no es un esquema: el navegador está ejecutando ahora mismo la recurrencia ht = tanh(W ht−1 + U xt) con dh = 32, W aleatoria de ganancia g (entradas N(0, g²/dh), semilla reproducible) y T tokens. La corro dos veces cambiando solo x1 y pinto arriba log₁₀ de la distancia δt entre ambos estados en cada paso. Abajo, el barrido completo: δT final en función de g, con tu g actual marcado, y las tres zonas (olvido / frontera / caos).
Juega. El slider de g es el "volumen" de la matriz W. Busca un g que conserve el primer token sin caos: comprobarás que no existe. Piensa en churn telco: el evento que predice la fuga (un impago hace 14 meses) está al principio de la secuencia; con g = 0.9 su rastro en hT es 10−9 veces el ruido.
Lee así. El eje y es logarítmico: una recta ahí abajo es una exponencial. Cada paso de la cadena multiplica la señal por un factor < 1 (ganancia × derivada de tanh); T pasos son ese factor elevado a T.
Mensaje. El estado oculto es un canal con fuga: la información del pasado lejano se diluye exponencialmente en el forward y el gradiente que querría corregirlo se desvanece igual en el backward. Necesitamos un mecanismo que llegue al token 1 sin atravesar la cadena. Eso es la atención.
Términos. δt: distancia entre los dos estados gemelos en el paso t; mide cuánta huella queda del primer token. Jacobiano Js: matriz que dice cómo una perturbación en hs−1 pasa a hs. Edge of chaos: frontera g ≈ 1 entre olvido y caos.
Setup. Frase de juguete de tres tokens con embeddings 2D: los keys son k1 = (1, 0), k2 = (0, 1), k3 = (1, 1) y, para poder dibujarlo todo en el mismo plano, los values coinciden con los keys (V = K), exactamente como en el ejemplo a mano del deck. Arriba: el plano con los keys (tinta), tu query (flecha dorada) y el vector contexto c (flecha dorada gruesa). Abajo: los pesos αj como barras sobre los tokens, con los scores ej = q·kj impresos. Todo se recalcula con cada movimiento del slider: producto punto, escalado, softmax, media ponderada.
Juega. La query es la pregunta. Gírala por el plano y mira el orden de las barras cambiar; el contexto c persigue siempre a los values con más peso. En el caso Netflix del curso: los keys son las películas vistas, la query es "¿qué le apetece ahora?", y c es el perfil instantáneo con el que se puntúa el catálogo.
Lee así. En el lector, Σαj = 1.000 siempre: la softmax reparte un presupuesto fijo de atención. Un token solo puede ganar peso quitándoselo a otros.
Mensaje. No hay estado que arrastrar ni orden que respetar: la salida se construye mirando directamente todos los tokens y ponderándolos. El cuello de botella de la slide anterior ha desaparecido por construcción.
Términos. query q: qué busco. key kj: etiqueta de cada token, qué ofrece. value vj: contenido que se llevará quien lo atienda. score ej: afinidad q·kj. contexto c: la media ponderada Σαjvj.
| token | kj | ej | exp(ej) | αj | αjvj |
|---|
Setup. El ejemplo a mano del deck con sus números exactos: keys k1 = (1, 0), k2 = (0.5, 0.5), k3 = (−1, 0.5) y values escalares v = (10, 20, 30); piensa en tres transacciones con importes 10, 20 y 30 €. Arriba, el plano con los keys y tu query (que ahora controlas en polares: ángulo y módulo). Abajo, las barras αj y, en la recta inferior, la salida ŷ deslizándose entre 10 y 30. La tabla central es el cálculo completo columna a columna: nada está precocinado, cada celda se recalcula al mover un slider.
Juega. Haz el barrido completo de θ de −180° a 180° despacio y observa la salida ŷ recorrer su rango: la atención es una función continua de la query. No hay saltos: la softmax suaviza la selección que un "argmax" haría a tirones.
Lee así. Columnas de la tabla en orden de cálculo: producto punto → exponencial → normalización → mezcla. Comprueba en cada posición que Σαj = 1.000 y que ŷ queda entre el menor y el mayor value.
Mensaje. Sabes hacer atención a mano: tres productos punto, tres exponenciales, una división y una media. La práctica del día te pide exactamente esto en numpy, verificado contra torch.nn.functional.scaled_dot_product_attention.
Términos. polares: la query expresada como ángulo + módulo; el ángulo elige a quién mirar, el módulo decide cuán dura es la elección. combinación convexa: media ponderada con pesos positivos que suman 1.
Setup. Dos experimentos en uno. Arriba, los tres scores del ejemplo a mano, e = (1, 0.5, −1), pasados por la softmax con la temperatura τ que elijas: las barras son α(τ), de uniforme a argmax. Abajo, la curva completa de la entropía H(α(τ)) con tu τ marcada en dorado, entre las dos referencias: log 3 (difusa) y 0 (dura). En paralelo, el lector corre un Monte Carlo real con la semilla reproducible: sortea 300 pares (q, k) con componentes N(0, 1) en dimensión dk y mide la desviación típica empírica de q·k, antes y después de dividir por √dk.
Juega. El slider de τ es logarítmico (0.1 a 10). Recorre la curva de entropía de punta a punta y localiza dónde estaba el ejemplo de la slide anterior (τ = 1). Después juega con dk: estás midiendo el fenómeno exacto que motivó el √dk del paper del Transformer.
Lee así. Las probabilidades del lector suman 1.000 en cualquier régimen; lo que cambia es cómo se reparten. La entropía es el número que resume el reparto: úsala como diagnóstico cuando entrenes (atención siempre saturada o siempre uniforme = algo va mal con la escala).
Mensaje. El misterioso √dk de la fórmula Att(Q, K, V) = softmax(QK⊤/√dk)V no es decoración: es fijar la temperatura de la softmax para que la atención nazca blanda y entrenable, independientemente de la dimensión.
Términos. τ: temperatura; divide los scores. H(α): entropía de los pesos, en nats; máxima si uniforme, 0 si argmax. saturación: régimen donde la softmax ya es un argmax y su gradiente ≈ 0. √dk: la temperatura que compensa el crecimiento del producto punto con la dimensión.
Setup. Backprop de verdad sobre una RNN escalar ht = tanh(w ht−1 + u xt) con T = 60, u = 0.5 y entrada aleatoria reproducible. Para cada distancia Δ el canvas pinta |∂hT/∂xT−Δ|, calculado con la regla de la cadena exacta (el producto de la izquierda del panel de ecuaciones), en escala logarítmica. La línea dorada horizontal es el camino directo de la atención con pesos uniformes: |∂c/∂vj| = αj = 1/60, idéntico a cualquier distancia. Abajo, el resumen estructural: para conectar dos tokens separados Δ posiciones, la RNN necesita Δ aristas encadenadas y la atención exactamente 1.
Juega. Tu objetivo es encontrar un w que mantenga el gradiente RNN por encima de la línea dorada a todas las distancias. Comprobarás que el slider no tiene ese valor: pequeño se desvanece, grande satura. El forecast de demanda con estacionalidad anual (Δ = 52 semanas) vive exactamente en la zona muerta de la curva.
Lee así. Eje y logarítmico: cada 10× de caída es un orden de magnitud menos de señal de aprendizaje. Donde la curva de la RNN cruza por debajo de la dorada, la atención aprende esa dependencia más rápido que la RNN, por pura geometría del grafo de cómputo.
Mensaje. El deck lo enuncia ("el gradiente se desvanece o explota"); aquí lo has medido. La atención no "mejora" la cadena: la elimina. Camino O(Δ) → camino O(1).
Términos. Δ: distancia en posiciones entre el token que influye y la salida. desvanecimiento: producto de factores < 1 a lo largo de la cadena. saturación: tanh en sus mesetas, derivada ≈ 0. camino directo: arista única salida–token con peso αj.
Setup. Arriba, FLOPs por capa en función de T (ambos ejes logarítmicos) para tu d elegida: curva tinta = recurrencia T·d², curva dorada = atención T²·d. El punto de cruce T = d está marcado, y la línea vertical es tu T actual. Abajo, la otra métrica: pasos que el hardware debe ejecutar en orden (profundidad secuencial), T para la RNN frente a 1 para la atención, en escala log.
Juega. Los dos sliders son potencias de 2, como en la práctica. Encuentra las combinaciones realistas: un BERT base (d = 768, T = 512) queda a la izquierda del cruce (atención barata incluso en FLOPs); un documento largo (T = 8192, d = 256) a la derecha. El lector siempre dice quién gana en FLOPs, en cuánto, y quién gana en profundidad.
Lee así. En escala log-log, T·d² y T²·d son rectas de pendiente 1 y 2: la atención siempre acaba por encima para T suficientemente grande. Ese es el precio estructural que la slide siguiente convierte en gigabytes.
Mensaje. La atención compra profundidad 1 pagando FLOPs T². En GPU, el cambio sale muy a cuenta hasta que T se hace enorme; ahí empieza la historia de Mamba y las alternativas sub-cuadráticas del Día 10.
Términos. FLOPs: operaciones de coma flotante; proxy de coste de cómputo. profundidad secuencial: longitud de la cadena de dependencias que no se puede paralelizar. cruce T = d: donde T·d² = T²·d.
| modelo | coste/tiempo | memoria | aquí (T, d=512) |
|---|
Setup. Arriba, los GiB que ocupa la matriz de scores QK⊤ en función de T (ejes log-log), con las líneas de referencia de dos GPUs reales: A6000 (48 GiB) y H100 (80 GiB). Tu T actual es el punto dorado; el badge dice si cabe o no en la A6000. Abajo, la memoria de los tres mecanismos del curso para tu mismo T con d = 512: estado RNN (dh números), matriz de atención (T²) y estado SSM (N = 16 por canal, fijo), en barras logarítmicas. La tabla es la de la nota técnica del día, con tus números en la última columna.
Juega. El slider de T es logarítmico, de 1 000 a 250 000 tokens: de un email a un libro. Busca el T exacto donde el badge cambia de color en fp32 y compáralo con el Tmax teórico del lector: coinciden porque son la misma cuenta.
Lee así. En log-log la curva T² es una recta de pendiente 2: cada 10× de contexto multiplica la memoria por 100. Contra eso no se puede comprar hardware: hay que cambiar el algoritmo o el mecanismo.
Mensaje. El Transformer paga su calidad con memoria O(T²). Para informes de 500 páginas (caso RAG del curso) la solución no es una GPU más grande: es no materializar la matriz, o no usar atención densa. Día 10.
Términos. GiB: 230 bytes. KV-cache: almacén lineal de keys y values ya calculados para la generación. Flash Attention: atención exacta por bloques, memoria O(T). SSM: modelo de espacio de estados con memoria fija (Mamba, Día 10).
Setup. Frase española "el gato negro duerme en casa" y su traducción "the black cat sleeps at home". Cada palabra lleva un embedding de juguete en ℝ6: la dirección de su concepto (DET, GATO, NEGRO, DORMIR, EN, CASA) más ruido gaussiano de tamaño σ con semilla reproducible. Las palabras inglesas hacen de queries; las españolas, de keys. Arriba, la matriz de atención 6×6 completa como heatmap (blanco → dorado → sepia con la rampa del curso), con tu fila t enmarcada; abajo, esa fila como barras sobre las palabras fuente. Todo sale de productos punto y softmax calculados en vivo, no de una matriz pintada a mano.
Juega. El slider t es el decoder avanzando palabra a palabra. La pareja negro/black–cat/gato es el detalle importante: la atención aprende el reordenamiento entre idiomas sin que nadie se lo programe, porque la afinidad semántica (producto punto) ignora las posiciones.
Lee así. El lector te da, para tu fila: la palabra fuente más atendida, su peso αmax, la suma de la fila (1.000 siempre) y la entropía de la fila como medida de nitidez del alineamiento.
Mensaje. Esto es lo que cambió Google Translate en 2017: el decoder dejó de leer un hT exhausto y pasó a consultar cada palabra fuente justo cuando la necesita. La matriz de atención es además un mapa interpretable de esa consulta, gratis.
Términos. alineamiento: correspondencia palabra-a-palabra entre frase fuente y destino. fila t: a qué miro cuando genero la palabra t; suma 1. columna j: cuánto se usa la palabra fuente j; no tiene por qué sumar 1. cobertura: suma por columnas, diagnóstico de omisiones.
Setup. Un cliente de telco con 8 eventos en su historial, del alta hace 3 años al uso de esta semana. Cada evento lleva 3 rasgos en [0, 1]: recencia (1 = ayer), severidad y señal de riesgo; esos rasgos son su key y su value. La query del modelo se interpola con λ entre dos preguntas de negocio reales: detectar fuga (pesa severidad y riesgo) o detectar oportunidad de venta (pesa recencia y salud de la relación). Arriba, los pesos αj de cada evento como barras horizontales etiquetadas; abajo, la curva P(churn) en función de λ con tu posición marcada. El slider de antigüedad mueve de verdad el rasgo de recencia del impago (recencia = e−m/6) y recalcula todo el pipeline.
Juega. Eres el científico de datos del caso churn del curso: con los dos sliders puedes auditar qué mira el modelo según la pregunta y según la frescura de la evidencia. Fíjate en que Σα = 1.000 en el lector: el presupuesto de atención se reparte, no se crea.
Lee así. Las barras son la columna "por qué" del informe que entregarías a retención: top de eventos con su peso. El número P(churn) por sí solo no dispara ninguna acción útil; el par (P, α) sí: a quién llamar y de qué hablarle.
Mensaje. La atención no es solo arquitectura para el Transformer: es una pieza de negocio. Pondera historial heterogéneo, responde a preguntas distintas sobre los mismos datos y deja un rastro interpretable. Con esto y el Día 09 (self-attention) tienes el Transformer completo.
Términos. evento: transacción o interacción del historial, con sus rasgos. query de negocio: la pregunta que el modelo lanza al historial. σ(·): sigmoide, convierte el score final en probabilidad. atribución: reparto del peso de la predicción entre los eventos.
En una frase. La atención sustituye el resumen único y secuencial de la RNN por una media ponderada consultable de toda la secuencia: scores, softmax y mezcla; un cambio de grafo que elimina el cuello de botella y el desvanecimiento a cambio de un coste cuadrático, y que es el cimiento exacto del Transformer del Día 09.