17 Word2Vec
Контекст
После нейроязыковой модели Бенжио (#13) ясно, что эмбеддинги полезны, но обучать их через полную LM дорого. Миколов с командой (Google) делает их дёшево и в масштабе.
Идея и механизм
Убрать дорогой скрытый слой и свести к простой задаче. CBOW предсказывает центральное слово по окну контекста; Skip-gram — наоборот, по слову предсказывает слова контекста. Обучение ускоряет negative sampling: вместо нормировки softmax по всему словарю — отличить настоящее контекстное слово от нескольких случайных. Можно прогнать миллиарды слов даже на CPU.
теория вероятностей Negative sampling: из softmax в бинарную классификацию
Честная вероятность контекстного слова требует softmax по всему словарю — сумма по V словам на каждый шаг, слишком дорого:
Negative sampling заменяет это задачей «настоящая пара или случайная»: для верной пары (w, c) и нескольких случайных «негативов» nk максимизируем
Никакого суммирования по словарю — только по нескольким негативам. Почему возникают аналогии. Цель сближает слова со схожими контекстами, и систематические отношения («мужское→женское», «страна→столица») кодируются одинаковыми сдвигами в пространстве. Поэтому 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()] # ближайший по косинусу
Почему это важно
Плотные предобученные эмбеддинги стали стандартным входом NLP на годы. Принцип «учить представления через self-supervised задачу предсказания из контекста» — прямая предтеча BERT/GPT: те же эмбеддинги, только контекст теперь строит Transformer.
Связи
Бенжио учил эмбеддинги как деталь языковой модели. Word2vec вынес их в самоцель и выкинул дорогой скрытый слой ради скорости — эволюция «эмбеддинг как побочный продукт» → «эмбеддинг как продукт».
Два подхода к одному результату. Word2vec — предсказательный (локальные окна, negative sampling); GloVe — счётный (глобальная матрица со-встречаемости). Качество сопоставимо, и GloVe объясняет, почему работает арифметика аналогий.
Идея «слово = вектор, обучаемый из контекста» — фундамент входного слоя любой 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».