◐ learning · kind concept · level 2 · 8h
- Requiere: Neural Network
- Generaliza: Self-Attention
Un mecanismo que permite a un modelo enfocarse selectivamente en las partes más relevantes de una secuencia de entrada al producir cada parte de la salida. En lugar de comprimir toda la secuencia en un vector fijo (como en encoder-decoder con RNN), la atención calcula pesos dinámicos que indican qué tokens son más importantes para cada paso.
Mecanismo. Dado un conjunto de vectores de consulta Q (querry), clave K (key), y valor V (value), la atención escalada se compute como:
donde es la dimensionalidad de las claves, y el factor previene que los productos punto crezcan demasiado y saturen la función softmax. Cada elemento de la secuencia de salida es una combinación ponderada de los valores V, donde los pesos son determinados por la similitud entre la consulta y las claves.
Las variantes principales son:
- Self-attention: Q, K, V provienen de la misma secuencia — permite que cada token “mire” a todos los demás
- Cross-attention: Q de una secuencia, K y V de otra — usado en decoder del transformer para atender al encoder
- Multi-head attention: Múltiples atenciones en paralelo con subespacios proyectados diferente, permite al modelo enfocarse en diferentes tipos de relaciones simultáneamente
Pitfall. La atención es en la longitud de secuencia — para secuencias muy largas (>10k tokens) se vuelve prohibitiva. Esto motivó variants como sparse attention, linear attention, y windowed attention. Además, la atención no implica causalidad — un transformer autoregresivo necesita masking causal para que cada token solo atienda a tokens anteriores.
Ejercicio. Ver notebooks/attention-visualization.ipynb para una implementación step-by-step de self-attention desde numpy, con visualización de los pesos de atención para una frase de ejemplo.
Referencias. Vaswani et al. (2017) “Attention Is All You Need” — arXiv:1706.03762. Bahdanau et al. (2014) attention para traducción automática.
title: Clustering kind: algorithm status: learning level: 2 hours: 6 edges:
- to: unsupervised-learning rel: includes
- to: dimensionality-reduction rel: relates tags: [ml, unsupervised, clustering] open_questions: [] sources:
- name: Wikipedia url: ‘https://en.wikipedia.org/wiki/Cluster_analysis’
- name: arXiv url: ‘https://arxiv.org/abs/1905.05655’
Agrupación de puntos de datos en clusters donde los puntos dentro de un cluster son más similares entre sí que con puntos de otros clusters. Es una técnica fundamental de aprendizaje no supervisado para descubrir estructura en datos sin etiquetas.
Mecanismo. La familia k-means es el algoritmo más usado: dado k (número de clusters), inicializa k centroides aleatorios, asigna cada punto al centroide más cercano (usualmente distancia euclidiana), recalcula los centroides como el promedio de los puntos asignados, y repite hasta convergencia. El objetivo es minimizar la varianza within-cluster (inertia): .
Variantes y alternativas:
- Hierarchical clustering: Construye un dendrograma mergeando (aglomerativo) o dividiendo (divisivo) clusters — permite ver la estructura a múltiples niveles de granularidad
- DBSCAN: Agrupa por densidad — encuentra clusters de forma arbitraria y marca puntos en zonas sparse como noise — no requiere especificar k
- Spectral clustering: Usa la descomposición espectral de la matriz de similaridad del grafo de datos — útil cuando los clusters no son convexos
- Gaussian Mixture Models (GMM): Asume que los datos son una mezcla de distribuciones Gaussianas, cada una representando un cluster — permite clusters elípticos y asignación soft (probabilística)
Pitfall. El número de clusters k es un hiperparámetro que debe elegirse — métodos como elbow method, silhouette score, o gap statistic ayudan pero no son definitivos. K-means asume clusters esféricos de tamaño similar, y falla en clusters con forma arbitraria o densidades muy diferentes. Los resultados dependen de la inicialización (k-means++) y de la escala de las features — siempre escalar antes de clusteare.
Ejercicio. Ver notebooks/kmeans-essentials.ipynb para una implementación desde scikit-learn con visualización de los clusters y elbow method para elegir k.
Referencias. MacQueen (1967) “Some methods for classification and analysis of multivariate observations.” Lloyd (1982) “Least squares quantization in PCM.”
Enlaces
- Requiere: Neural Network
- Generaliza: Self-Attention