Что такое GloVe? Чем отличается от Word2Vec (матричные разложения vs локальные контексты)?
Краткий тезис
GloVe (Global Vectors) — метод получения плотных векторных представлений слов, основанный на факторизации матрицы совместной встречаемости (co‑occurrence matrix). В отличие от Word2Vec, который использует локальные контекстные окна и обучается предсказанием соседних слов, GloVe явно учитывает глобальную статистику всего корпуса, что, по заявлениям авторов, улучшает качество на задачах аналогий и семантической близости.
2. Считает глобальную статистику (всего корпуса)
В отличие от Word2Vec, который обрабатывает корпус последовательно (онлайн‑обучение), GloVe сначала агрегирует всю статистику в матрицу совместной встречаемости. Это даёт два преимущества:
- Учёт редких, но информативных пар — матрица содержит все пары, а не только те, что попали в окно при проходе.
- Контроль над весами — функция (f(X_{ij})) позволяет уменьшить влияние слишком частых стоп‑слов (например, «the», «and») и одновременно подавить шум от очень редких пар.
Размер матрицы
Для корпуса из (V) уникальных слов матрица имеет размер (V \times V). На практике она разрежена: хранятся только ненулевые элементы (обычно не более 1–5% от всех возможных пар). Для больших словарей (сотни тысяч слов) используют хранение в формате COO или CSR.
Сравнение с Word2Vec по статистике
| Характеристика | GloVe | Word2Vec (Skip‑gram / CBOW) |
|---|---|---|
| Тип статистики | Глобальная (вся матрица) | Локальная (окно) |
| Обучение | Один проход по парам из матрицы | Многократные проходы по корпусу |
| Память | (O([text](/wiki/text){nnz})) (ненулевые элементы) | (O(V \cdot d)) (векторы) |
| Параллелизм | Легко распараллелить по парам | Требует синхронизации градиентов |
3. Word2Vec: локальные окна
Word2Vec (Mikolov et al., 2013) обучает эмбеддинги, решая задачу предсказания слова по контексту (CBOW) или контекста по слову (Skip‑gram). Модель не строит явную матрицу, а использует скользящее окно.
Skip‑gram
Для каждого центрального слова (w_t) модель максимизирует вероятность появления слов в окне (w_{t-k}, \dots, w_{t-1}, w_{t+1}, \dots, w_{t+k}):
[ \max \sum_{t} \sum_{-k \le j \le k, j \ne 0} \log P(w_{t+j} | w_t) ]
где (P(w_O | w_I) = \frac{\exp(v_{w_O}^T v_{w_I})}{\sum_{w} \exp(v_w^T v_{w_I})}).
Практические приёмы
- Negative sampling — аппроксимация softmax через бинарную классификацию.
- Subsampling — удаление частых слов для ускорения.
- Динамическое окно — случайный размер окна от 1 до заданного максимума.
Почему Word2Vec не использует глобальную статистику
- Он обучается на последовательных примерах, что позволяет обрабатывать корпуса любого размера без хранения огромной матрицы.
- Локальные окна лучше улавливают синтаксические и тематические отношения (например, «яблоко» и «зелёное» рядом), но могут упускать глобальные закономерности (например, «яблоко» и «фрукт» встречаются редко в одном окне, но часто в разных документах).
4. Практическое различие: GloVe лучше на аналогиях (по заявлениям)
Авторы GloVe провели эксперименты на наборах аналогий (SemEval, Google Analogy Test Set) и показали, что GloVe превосходит Word2Vec на семантических аналогиях (отношения «часть‑целое», «гипероним‑гипоним»), в то время как Word2Vec может быть сильнее на синтаксических (формы глаголов, степени сравнения).
Примеры аналогий
| Тип | Пример | GloVe (точность) | Word2Vec (точность) |
|---|---|---|---|
| Семантические | «Париж — Франция + Италия ≈ Рим» | 81% | 75% |
| Синтаксические | «бежать — бежал + плыть ≈ плыл» | 67% | 72% |
Причина
GloVe явно моделирует логарифм отношения вероятностей (P(k|i)/P(k|j)), что напрямую соответствует линейным отношениям в пространстве эмбеддингов. Word2Vec же оптимизирует локальные предсказания, и линейные аналогии возникают как побочный эффект, а не как цель.
Ограничения
- GloVe требует хранения всей матрицы co‑occurrence, что для корпусов >10 млрд токенов может быть проблематично.
- Word2Vec легче дообучать на новых данных (инкрементальное обучение).
- На практике разница не всегда значительна; выбор метода часто определяется размером корпуса и доступными вычислительными ресурсами.
5. Пет-проект для закрепления
Задача: Сравнить GloVe и Word2Vec на задаче поиска аналогий в русском языке, используя корпус новостей (например, Lenta.ru или НКРЯ).
Инструменты
- Python, библиотеки:
gensim(Word2Vec),glove-pythonилиnumpyдля ручной реализации GloVe. - Корпус: дамп новостей Lenta.ru (около 800 тыс. статей) или подкорпус НКРЯ.
- Тестовый набор: русские аналогии (например, из статьи «Russian Analogy Test Set» или составленный вручную).
Шаги
- Предобработка: токенизация (spaCy или pymorphy2), удаление пунктуации, нижний регистр.
- Построить матрицу co‑occurrence для GloVe (окно 10, минимальная частота 5).
- Обучить GloVe (размерность 300, 100 итераций AdaGrad).
- Обучить Word2Vec (Skip‑gram, окно 5, negative sampling 5, размерность 300).
- Для каждой аналогии (a:b :: c:d) вычислить вектор (v_b - v_a + v_c) и найти ближайшее слово по косинусной близости.
- Сравнить точность на семантических и синтаксических аналогиях.
Ожидаемый результат
- GloVe покажет более высокую точность на семантических аналогиях (например, «Москва — Россия + Франция ≈ Париж»).
- Word2Vec может быть лучше на синтаксических (например, «идти — шёл + бежать ≈ бежал»).
- Вы получите практическое понимание, когда стоит выбирать глобальную статистику, а когда — локальные окна.
Связь с другими вопросами
Навигация
- Предыдущий: 924
- Следующий: 926
- Индекс: 00. Индекс разборов