В мире обработки естественного языка (NLP) трудно найти тех, кто не слышал бы о Word2Vec. Эта модель произвела настоящую революцию в том, как мы представляем слова в виде плотных векторов (эмбеддингов). Однако мало кто задумывается, какие именно «секретные ингредиенты» делают Word2Vec таким эффективным, и почему по своим результатам он так похож на более «старые» подходы — так называемые «распределённые семантические модели» (Distributional Semantic Models - DSMs).
Ниже я поделюсь своим видением того, как взаимосвязаны классические подходы (анализ частоты совместного появления слов в тексте) и нейронные методы (вроде Word2Vec), а также теми настройками и приёмами, которые действительно выводят современные векторные представления на передний план.
В чём магия Word2Vec?
На первый взгляд Word2Vec обязан своей популярностью именно «нейронной» начинке. Идея проста: возьмём центральное слово и попробуем предсказать его контекст (или наоборот). Если взглянуть глубже, то кроются несколько ключевых особенностей:
🍏 Использование обучающей выборки: Word2Vec не просто «смотрит», с какими словами какое слово встречается; он «учится» предсказывать вероятные окружения, что даёт более гибкие результаты.
🍏 Негативные примеры (negative sampling): Вместо полного перебора контекстов мы случайно выбираем слова, которые «не должны» быть рядом, и учим сеть отличать истинный контекст от ложного.
🍏 Динамическое окно контекста: Модель уделяет больше внимания словам, которые ближе всего к целевому слову.
Но, как оказалось, многое из того, что Word2Vec делает внутри — это неявная факторизация (разложение) матрицы со-частот (co-occurrence matrices). А это сближает метод с классическими моделями, основанными на подсчётах совместной встречаемости слов.
От «счётных» моделей к «предсказательным»
Исторически мы имеем два больших лагеря:
🔎 Распределённые модели (DSMs): мы берём большой корпус текста, строим матрицу встречаемости (где по строкам — слова, по столбцам — контексты) и используем статистику (например, PPMI, SVD).
🔎 Предсказательные (Word2Vec, GloVe): мы пытаемся «научиться» восстанавливать окружение, используя более сложные алгоритмы.
Раньше считалось, что предсказательные модели (особенно Word2Vec) заметно превосходят классические «счётные» подходы. Но оказалось, что это не совсем так. При правильных настройках обычные методы (например, SVD-факторизация матрицы PPMI) работают не хуже современных нейронных.
Почему традиционные методы (DSMs) могут конкурировать с Word2Vec?
Если рассмотреть популярные исследования (например, работы Леви и др.), можно выявить несколько факторов, которые «улучшают» как Word2Vec, так и классические модели:
⚙️ Сглаживание распределения контекстов: Word2Vec вырезает или занижает частоту слишком популярных слов. Классические модели могут делать то же самое (занижая частоту вектора контекста).
⚙️ Сдвиг метрики PMI: в Word2Vec количество 'негативных' сэмплов регулирует константа, равная –log(k). Аналогичный подход можно применить к PPMI, получая Shifted PPMI (SPPMI).
⚙️ Различные «хитрости» в обработке данных: динамический размер окна, удаление слишком редких слов, складывание векторов слов и контекстов и т.д.
Как только мы переносим эти «рецепты» из нейронных моделей в классические, то получаем сравнимые по качеству результаты.
GloVe: «хитрая» интерпретация со-частот
GloVe — ещё одна популярная модель, часто упоминаемая рядом с Word2Vec. Её идея в том, чтобы явно использовать «отношения» между парами слов. Если Word2Vec Skip-Gram Negative Sampling (SGNS) выполняет это неявно, то GloVe строит взвешенную функцию, аппроксимирующую логарифм частоты совместных вхождений слов..
Многие отмечают, что GloVe выглядит «серединным» вариантом: вроде бы нейронка, но фактически работает с матрицей со-частот, используя её разложение (по сути, линейная алгебра в красивой упаковке).
Что на практике улучшает векторные представления?
Ниже — список настроек, которые, согласно разным исследованиям, имеют решающее значение:
💡 Умное окно контекста (dynamic window)
Чем ближе слово, тем больший «вес» придаём ему. Word2Vec меняет размер окна случайным образом — это даёт разнообразие обучающих примеров.
🧹 Сглаживание частот (subsampling)
Слишком частые слова (наподобие «the», «и», «a») удаляются из выборки с некоторой вероятностью, чтобы не «загрязнять» обучение.
⚖️ Контекстная дистрибуция
Вместо того чтобы учитывать все слова с равной вероятностью, повышаем вероятность редких слов (или понижаем для частых). В Word2Vec частота f(c) возводится в степень α=0.75.
🔗 Сдвиг метрики PMI
Иногда негативные примеры «имитируют» логарифм k, и это можно внедрить прямо в формулу PMI, получая SPPMI.
🔌 Постобработка векторов
Для SVD, например, важно правильно выбрать степень для матрицы собственных значений (eigenvalue weighting) и иногда нормировать векторы. GloVe и Word2Vec иногда суммируют вектора слова и вектора контекста.
В итоге получается, что грамотная настройка и постобработка может дать столь же высокие результаты, что и популярные предсказательные модели.
Личное мнение и практические выводы
🌟 Не всё решают «нейроны»
Нередко успех Word2Vec приписывают магии нейронных сетей, но фактически фундамент — это распределение со-частот.
🌟 Уделяйте внимание гиперпараметрам
Очень часто алгоритмы «старой школы» (PPMI + SVD) показывают чудеса, если правильно подобрать окно контекста, способ сглаживания, размерность и т.д.
🌟 Нет единого «универсального» победителя
На практике всё зависит от задачи. Например, для аналогий часто выигрывает SGNS, а на задачах схожести слов (similarity) лучше может выступать SVD.
🌟 GloVe — не панацея
Он удобен и часто даёт отличные результаты, но, согласно ряду экспериментов, SGNS (Word2Vec) бывает даже успешнее.
Технические детали для любопытных
🚀 SVD (разложение матрицы сингулярных чисел) в связке с «позитивной PPMI» даёт классические векторные представления, весьма конкурентные с Word2Vec.
🚀 Shifted PPMI делает упор на учёт негативных примеров через логи, что роднит такие классические модели с тем, что делает SGNS (просто при другой формулировке).
🚀 Добавление контекстных векторов (суммирование векторов слова и контекста) — это трюк, который часто улучшает оценки похожести слов в GloVe и SGNS.
Если вы впервые слышите о таких приёмах, это значит, что мир дистрибутивной лингвистики не стоит на месте и тоже эволюционирует со временем, используя находки из нейронных методов.
Заключение
Сегодня можно сказать, что Word2Vec не опровергает классические идеи, а наоборот, дополняет их, популяризирует и даёт новые способы обработки больших корпусов. Но это не значит, что «старые» подходы безнадёжно устарели: как только мы заимствуем оттуда «секретные ингредиенты» (сглаживание контекстов, сдвиги PMI и другие «хакеры»), мы получаем топовые результаты даже на современных бенчмарках.
Весьма вероятно, что в будущем появятся новые гибридные алгоритмы, которые будут совмещать плюсы и SGNS, и SVD, и прочих подходов, ещё сильнее стирая границы между «предсказательным» и «счётным» лагерями.
Ссылка на новость
- Оригинальная статья «On word embeddings – Part 3: The secret ingredients of Word2Vec»:
https://www.ruder.io/secret-word2vec/
Если вы интересуетесь темой эмбеддингов и хотите ещё глубже вникнуть в механику Word2Vec или других методов, советую заглянуть в эти материалы — они проливают свет на то, как «большие идеи» открывают второе дыхание для давно знакомых алгоритмов и приёмов.