Эпоха 3 · Взрыв deep learning · 2013

17 Word2Vec

Efficient Estimation of Word Representations in Vector Space · Mikolov, Chen, Corrado, Dean · ICLR workshop
🟧 оригинал выборочно~30–40 миноригинал ↗
Суть за 20 секунд. Дешёвое обучение эмбеддингов слов: две простые архитектуры (CBOW и Skip-gram) + negative sampling вместо дорогого softmax. Векторы кодируют семантику линейно — king − man + woman ≈ queen. Плотные эмбеддинги стали стандартным входом NLP.

Контекст

После нейроязыковой модели Бенжио (#13) ясно, что эмбеддинги полезны, но обучать их через полную LM дорого. Миколов с командой (Google) делает их дёшево и в масштабе.

Идея и механизм

Убрать дорогой скрытый слой и свести к простой задаче. CBOW предсказывает центральное слово по окну контекста; Skip-gram — наоборот, по слову предсказывает слова контекста. Обучение ускоряет negative sampling: вместо нормировки softmax по всему словарю — отличить настоящее контекстное слово от нескольких случайных. Можно прогнать миллиарды слов даже на CPU.

теория вероятностей Negative sampling: из softmax в бинарную классификацию

Честная вероятность контекстного слова требует softmax по всему словарю — сумма по V словам на каждый шаг, слишком дорого:

P(c | w) = evc·vwΣk=1V evk·vw

Negative sampling заменяет это задачей «настоящая пара или случайная»: для верной пары (w, c) и нескольких случайных «негативов» nk максимизируем

log σ(vc·vw) + Σk log σ(−vnk·vw)

Никакого суммирования по словарю — только по нескольким негативам. Почему возникают аналогии. Цель сближает слова со схожими контекстами, и систематические отношения («мужское→женское», «страна→столица») кодируются одинаковыми сдвигами в пространстве. Поэтому vking − vman + vwoman ≈ vqueen — аналогия решается арифметикой векторов.

NumPy Аналогия через арифметику эмбеддингов
import numpy as np
# a − b + c ≈ ?   (king − man + woman ≈ queen)
def analogy(a, b, c, E, vocab):
    v = E[vocab[a]] - E[vocab[b]] + E[vocab[c]]
    sims = E @ v / (np.linalg.norm(E, axis=1) * np.linalg.norm(v))
    return vocab.itos[sims.argmax()]      # ближайший по косинусу
CBOW контекст контекст контекст слово Skip-gram слово контекст контекст контекст CBOW: контекст → слово  ·  Skip-gram: слово → контекст
Две зеркальные задачи. Обе учат один и тот же побочный продукт — эмбеддинги, где геометрия кодирует смысл.
Аналогия. Чтобы понять смысл незнакомого слова, вы смотрите, в какой компании оно ходит. Word2vec делает это в промышленном масштабе: расставляет слова в пространстве так, что «соседи по контексту» оказываются соседями по координатам. А раз отношения регулярны, их можно «складывать»: взять направление «женскости» от man→woman и применить к king.

Почему это важно

Плотные предобученные эмбеддинги стали стандартным входом NLP на годы. Принцип «учить представления через self-supervised задачу предсказания из контекста» — прямая предтеча BERT/GPT: те же эмбеддинги, только контекст теперь строит Transformer.

Связи

Бенжио учил эмбеддинги как деталь языковой модели. Word2vec вынес их в самоцель и выкинул дорогой скрытый слой ради скорости — эволюция «эмбеддинг как побочный продукт» → «эмбеддинг как продукт».

↔ родственник24. GloVe

Два подхода к одному результату. Word2vec — предсказательный (локальные окна, negative sampling); GloVe — счётный (глобальная матрица со-встречаемости). Качество сопоставимо, и GloVe объясняет, почему работает арифметика аналогий.

→ ведёт к32. Transformer

Идея «слово = вектор, обучаемый из контекста» — фундамент входного слоя любой LLM. Transformer добавляет контекстные эмбеддинги (вектор слова зависит от предложения), но статические word2vec-векторы — их прямой предок.

Вопросы пытливого ума

Аналогии king−man+woman≈queen — это реальное свойство или подгонка под красивые примеры?

Частично и то, и другое. Линейная структура реальна и измерима на многих отношениях, но метрика аналогий чувствительна к деталям: обычно из кандидатов исключают сами слова a, b, c, иначе ответом часто оказывается одно из них. Есть отношения, которые ловятся плохо. Так что эффект настоящий, но раздут отбором эффектных примеров — здоровый скепсис уместен.

В чём принципиальное ограничение этих эмбеддингов?

Они статические: у слова один вектор независимо от контекста. «Замок» (строение) и «замок» (на двери) получают один и тот же эмбеддинг — полисемия не разрешается. Это и чинят контекстные модели (ELMo, BERT, GPT): там вектор слова зависит от всего предложения.

Почему negative sampling вообще работает — это же не настоящая вероятность?

Это noise-contrastive оценка: вместо моделирования полного распределения учим различать данные и шум. Доказуемо, при правильном выборе шумового распределения такая задача даёт те же эмбеддинги, что и полный softmax, но без суммы по словарю. Жертвуем точной нормировкой ради скорости — и почти ничего не теряем в качестве представлений.

Что читать в оригинале

Читать ключевое — CBOW/Skip-gram. Детали обучения (negative sampling) подробнее в компаньон-статье 1310.4546; чёткая формулировка аналогий — в NAACL-статье «Linguistic Regularities».