13 · Word2Vec: CBOW (Bolsa Continua de Palabras)
CBOW entrena una red neuronal superficial para predecir una palabra central a partir de su contexto circundante — los pesos de la capa oculta SON los embeddings.
CBOW entrena una red neuronal superficial para PREDECIR una palabra central a partir de su contexto circundante — los pesos de la capa oculta SON los embeddings.
Sin esto:
Word2Vec sigue siendo una llamada opaca a librería en lugar de un algoritmo que entiendes.
Word2Vec no es un solo modelo — es una familia de objetivos de entrenamiento que todos producen el mismo tipo de salida: una matriz de vectores de palabras aprendidos. Las dos variantes son CBOW (Bolsa Continua de Palabras) y Skip-Gram (próxima lección).
El objetivo de aprendizaje de CBOW es simple: dadas las palabras de contexto circundantes, predecir la palabra central. Para la oración "the quick brown fox jumps" con una ventana de 2, el ejemplo de entrenamiento para "brown" es:
contexto: ["the", "quick", "fox", "jumps"] → predecir: "brown"
La arquitectura de la red es intencionalmente superficial — solo dos matrices de pesos:
- Matriz de embedding (V × D): una fila por palabra del vocabulario; esto es lo que queremos aprender.
- Matriz de contexto (D × V): la proyección de salida; a menudo se descarta después del entrenamiento.
Las cuatro palabras de contexto se codifican en one-hot, se mapean a través de la matriz de embedding (una búsqueda de fila por palabra), se promedian para producir un solo vector D-dimensional, se proyectan a través de la matriz de contexto y se pasan por un softmax para producir una distribución de probabilidad sobre todo el vocabulario.
La "tarea falsa" de predecir la palabra central obliga a la red a comprimir estadísticas de co-ocurrencia en la capa oculta D-dimensional. Después de entrenar en millones de oraciones, esa capa oculta resulta codificar relaciones semánticas. Los pesos son los embeddings.
Arquitectura CBOW: entradas one-hot → lookup de embedding → promedio → predecir palabra central
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
CBOW vs Skip-Gram: dirección de predicción, velocidad y sesgo hacia palabras raras
En CBOW, los pesos de la capa oculta almacenan...
- El objetivo de CBOW es: dadas las palabras de contexto circundantes (ventana ±2), predecir la palabra central. La red superficial tiene dos matrices de pesos: W1 (los embeddings) y W2 (la proyección de salida, descartada después del entrenamiento).
- El muestreo negativo reemplaza el softmax completo sobre el vocabulario: en lugar de normalizar sobre todas las V palabras, muestrea 5–20 palabras 'negativas' incorrectas y resuelve un problema de clasificación binaria por muestra — el truco de eficiencia clave que hizo práctico a Word2Vec.
- La SVD de una matriz de co-ocurrencia se aproxima estrechamente a CBOW — GloVe hace esta conexión explícita ajustando directamente en la matriz de log co-ocurrencia. Ambos métodos extraen el mismo tipo de estructura semántica.
- CBOW promedia el contexto → sesgado hacia palabras frecuentes, rápido de entrenar; preferirlo para corpus generales grandes. Skip-Gram predice cada palabra de contexto individualmente → mejor para palabras raras, más lento; preferirlo para dominios especializados.
Los embeddings pre-entrenados de Word2Vec y GloVe todavía se usan como primera capa de muchos clasificadores de texto y modelos NER. La idea de Word2Vec 'predecir contexto para aprender representaciones' se generalizó a item2vec (sistemas de recomendación), node2vec (embeddings de grafos) y embeddings de proteínas en bioinformática — cualquier secuencia donde la co-ocurrencia sea significativa puede embeberse con este enfoque.
Si lo quitas: Sin entender CBOW, la idea de pre-entrenamiento auto-supervisado detrás de BERT y GPT es una caja negra. El modelo de lenguaje enmascarado de BERT y la predicción de siguiente token de GPT son ambos objetivos auto-supervisados de 'tarea falsa' que producen embeddings contextuales — son Word2Vec con transformers reemplazando la red superficial.