24 GloVe
Контекст
К 2014-му есть два лагеря эмбеддингов: счётные методы (по матрице со-встречаемости, как LSA) и предсказательные (word2vec). Пеннингтон, Сошер, Мэннинг из Stanford их объединяют.
Идея и механизм
Строим глобальную матрицу со-встречаемости Xij (как часто слово j встречается в контексте i по всему корпусу) и учим векторы так, чтобы их скалярное произведение приближало логарифм счётчика. Качество сопоставимо с word2vec, но обучение идёт на глобальной статистике, а не на локальных окнах.
линейная алгебра Почему именно отношения вероятностей — и log-билинейная форма
Сравним два слова через «пробу» k. Отдельная вероятность P(k|i) малоинформативна, а вот их отношение различает смысл:
GloVe требует, чтобы разности векторов кодировали такие лог-отношения. Это приводит к цели: скалярное произведение ≈ логарифм счётчика, со взвешиванием f, гасящим вклад очень редких и очень частых пар:
Лог-билинейная форма — это и есть причина, по которой разности эмбеддингов соответствуют отношениям вероятностей, а значит работает арифметика аналогий (как у word2vec, но выведенная из глобальной статистики).
NumPy Целевая функция GloVe
import numpy as np
# учим W так, чтобы wᵢ·wⱼ + bᵢ + bⱼ ≈ log X_ij
def glove_loss(W, b, X, xmax=100, alpha=0.75):
f = np.minimum((X / xmax) ** alpha, 1.0) # весовая функция
pred = W @ W.T + b[:, None] + b[None, :]
return (f * (pred - np.log(X + 1)) ** 2).sum() # взвешенный МНК
Почему это важно
Дал единый взгляд на счётные и предсказательные эмбеддинги и объяснил, почему работает арифметика аналогий (через лог-отношения). GloVe-векторы были популярным предобученным входом NLP наравне с word2vec до прихода контекстных моделей.
Связи
Тот же результат — эмбеддинги с линейной структурой — но из другой философии: word2vec предсказывает из локальных окон, GloVe аппроксимирует глобальную статистику со-встречаемости. Позже показали, что они математически близки (skip-gram неявно факторизует похожую матрицу).
Общая идея «слово = плотный вектор, кодирующий смысл из контекста» заложена нейроязыковой моделью. GloVe — ещё один способ получить такие векторы, на этот раз из глобальных счётчиков, а не из обучения LM.
Статические эмбеддинги (GloVe, word2vec) были стандартным входным слоем NLP, пока их не сменили контекстные представления из трансформеров, где вектор слова зависит от всего предложения. GloVe — предшественник этого входного слоя.
Вопросы пытливого ума
Если word2vec и GloVe дают похожий результат, в чём практическая разница?
GloVe работает с заранее посчитанной глобальной матрицей со-встречаемости — это позволяет распараллелить и переиспользовать статистику, но требует памяти под матрицу. Word2vec идёт по корпусу окнами, потоково и экономно по памяти. На практике выбор часто решался доступностью предобученных векторов; качество сопоставимо.
Зачем весовая функция f(X) — нельзя просто минимизировать ошибку по всем парам?
Без неё очень частые пары (вроде «the … of») доминировали бы в сумме, а очень редкие вносили бы шум. f растёт для умеренных частот и насыщается для огромных — балансируя вклад. Это инженерная деталь, но без неё качество эмбеддингов заметно падает.
Эти эмбеддинги наследуют предвзятость из текста?
Да, и это важная проблема. Известно, что GloVe-векторы воспроизводят социальные стереотипы из корпуса (например, гендерные ассоциации профессий), потому что просто отражают статистику употребления. Это породило целое направление по измерению и снижению bias в эмбеддингах — представление наследует предубеждения данных, на которых обучено.
Что читать в оригинале
Читать ключевое — вывод целевой функции из отношений со-встречаемости (мат-блок). Это образец того, как из простого статистического наблюдения выводят обучаемую модель.