14 · Word2Vec: Skip-Gram
Skip-Gram invierte CBOW: predice cada palabra de contexto A PARTIR de la palabra central — mejor para palabras raras y corpus especializados, más lento de entrenar.
Skip-Gram INVIERTE CBOW: predice cada palabra de contexto A PARTIR de la palabra central — mejor para palabras raras, más lento de entrenar.
Sin esto:
Atascado solo en CBOW que tiene sesgo contra las palabras raras.
CBOW predice la palabra central a partir de un promedio de las palabras de contexto. Este promediado es computacionalmente eficiente pero tiene una desventaja: las palabras raras contribuyen igualmente al promedio pero reciben pocas señales de gradiente de vuelta, por lo que sus embeddings permanecen ruidosos.
Skip-Gram invierte la dirección: dada la palabra central, predice cada palabra de contexto circundante individualmente. Para "the quick brown fox jumps" con ventana=2, los pares de entrenamiento generados para la palabra central "brown" son:
(brown, the) (brown, quick) (brown, fox) (brown, jumps)
Cada par es una señal de entrenamiento independiente. Una palabra rara que aparece incluso una sola vez genera pares de entrenamiento para cada palabra en su ventana — dando al embedding muchas más actualizaciones de gradiente por ocurrencia que CBOW.
La desventaja: con una ventana de 2 y N palabras centrales, Skip-Gram genera ~2 × 2 × N = 4N pares de entrenamiento, en comparación con N pares en CBOW. El entrenamiento es 3–5× más lento.
La regla general: CBOW para corpus generales grandes, Skip-Gram para corpus pequeños y especializados con términos raros importantes.
Arquitectura Skip-Gram: palabra central → predecir cada palabra de contexto circundante independientemente
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
gensim Skip-Gram (sg=1) — ejecutar esto localmente; gensim no está disponible en Pyodide
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Guía de decisión CBOW vs Skip-Gram
Si tu corpus tiene muchos términos especializados raros, ¿cuál prefieres — CBOW o Skip-Gram?
- El objetivo de Skip-Gram: dada la palabra central, predecir cada palabra de contexto circundante individualmente. Un corpus de N palabras con ventana W genera ~2WN pares de entrenamiento — 3–5× más que CBOW, de ahí el entrenamiento más lento.
- Skip-Gram favorece las palabras raras: cada ocurrencia genera W pares de entrenamiento independientes, dando a los tokens raros muchas más actualizaciones de gradiente por aparición que la única actualización promediada de CBOW.
- El muestreo negativo (5–20 palabras de contexto 'incorrectas' aleatorias por par positivo) reemplaza el softmax completo, reduciendo el cómputo de O(V) a O(k) por actualización — el truco clave que permite Word2Vec en corpus de mil millones de palabras.
- Los embeddings de Word2Vec son estáticos: un vector fijo por palabra sin importar el contexto. Esta es su principal limitación en comparación con los embeddings contextuales (BERT, GPT) — pero los embeddings estáticos siguen siendo competitivos en tareas con documentos cortos y sin ambigüedad.
El Skip-Gram pre-entrenado es la base de fastText y muchos embeddings de dominio especializados (biomédico: BioWordVec, legal: inicialización de LegalBERT, código: code2vec). El patrón de generación de pares (centro, contexto) sobrevivió en el aprendizaje contrastivo moderno (pares (imagen, leyenda) de CLIP, pares (vista aumentada, vista aumentada) de SimCLR) — el aprendizaje contrastivo ES Skip-Gram generalizado a modalidades arbitrarias.
Si lo quitas: Sin Skip-Gram, el aprendizaje contrastivo (CLIP, SimCLR, DPR, E5) es un misterio. Todos estos métodos generan pares positivos (ancla, objetivo) y pares negativos (ancla, aleatorio), exactamente como Skip-Gram hace con (centro, contexto) y (centro, palabra-ruido). Entender Skip-Gram significa entender la familia de métodos de aprendizaje de representaciones auto-supervisados que dominan la IA moderna.