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

24 GloVe

GloVe: Global Vectors for Word Representation · Pennington, Socher & Manning · EMNLP
🟧 оригинал выборочно~40 миноригинал ↗
Суть за 20 секунд. Эмбеддинги из глобальной статистики со-встречаемости: учим векторы так, чтобы их скалярное произведение приближало логарифм счётчика. Ключевая идея — смысл кодируют отношения вероятностей со-встречаемости. Объединяет счётный и предсказательный подходы.

Контекст

К 2014-му есть два лагеря эмбеддингов: счётные методы (по матрице со-встречаемости, как LSA) и предсказательные (word2vec). Пеннингтон, Сошер, Мэннинг из Stanford их объединяют.

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

Строим глобальную матрицу со-встречаемости Xij (как часто слово j встречается в контексте i по всему корпусу) и учим векторы так, чтобы их скалярное произведение приближало логарифм счётчика. Качество сопоставимо с word2vec, но обучение идёт на глобальной статистике, а не на локальных окнах.

линейная алгебра Почему именно отношения вероятностей — и log-билинейная форма

Сравним два слова через «пробу» k. Отдельная вероятность P(k|i) малоинформативна, а вот их отношение различает смысл:

P(solid | ice)P(solid | steam) ≫ 1,   P(gas | ice)P(gas | steam) ≪ 1,   P(water | ice)P(water | steam) ≈ 1

GloVe требует, чтобы разности векторов кодировали такие лог-отношения. Это приводит к цели: скалярное произведение ≈ логарифм счётчика, со взвешиванием f, гасящим вклад очень редких и очень частых пар:

J = Σi,j f(Xij) (wi·wj + bi + bj − log Xij)²

Лог-билинейная форма — это и есть причина, по которой разности эмбеддингов соответствуют отношениям вероятностей, а значит работает арифметика аналогий (как у 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()  # взвешенный МНК
проба k:solidgaswater P(k|ice)/P(k|steam) ≫ 1≪ 1≈ 1 отличает «лёд» (твёрдое)……от «пар» (газ); «вода» нейтральна к обоим
Смысл кодируют не сами вероятности, а их отношения: «solid» резко различает лёд и пар, «water» — нет. GloVe учит векторы повторять эти лог-отношения.
Аналогия. Чтобы понять разницу между двумя людьми, бесполезно спрашивать «любит ли каждый поесть» (оба любят). Полезны различающие вопросы: «кто чаще в спортзале?». GloVe ищет именно такие пробы-слова, чьи отношения частот разводят понятия по разным углам пространства.

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

Дал единый взгляд на счётные и предсказательные эмбеддинги и объяснил, почему работает арифметика аналогий (через лог-отношения). GloVe-векторы были популярным предобученным входом NLP наравне с word2vec до прихода контекстных моделей.

Связи

↔ родственник17. Word2Vec

Тот же результат — эмбеддинги с линейной структурой — но из другой философии: word2vec предсказывает из локальных окон, GloVe аппроксимирует глобальную статистику со-встречаемости. Позже показали, что они математически близки (skip-gram неявно факторизует похожую матрицу).

Общая идея «слово = плотный вектор, кодирующий смысл из контекста» заложена нейроязыковой моделью. GloVe — ещё один способ получить такие векторы, на этот раз из глобальных счётчиков, а не из обучения LM.

→ ведёт к32. Transformer

Статические эмбеддинги (GloVe, word2vec) были стандартным входным слоем NLP, пока их не сменили контекстные представления из трансформеров, где вектор слова зависит от всего предложения. GloVe — предшественник этого входного слоя.

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

Если word2vec и GloVe дают похожий результат, в чём практическая разница?

GloVe работает с заранее посчитанной глобальной матрицей со-встречаемости — это позволяет распараллелить и переиспользовать статистику, но требует памяти под матрицу. Word2vec идёт по корпусу окнами, потоково и экономно по памяти. На практике выбор часто решался доступностью предобученных векторов; качество сопоставимо.

Зачем весовая функция f(X) — нельзя просто минимизировать ошибку по всем парам?

Без неё очень частые пары (вроде «the … of») доминировали бы в сумме, а очень редкие вносили бы шум. f растёт для умеренных частот и насыщается для огромных — балансируя вклад. Это инженерная деталь, но без неё качество эмбеддингов заметно падает.

Эти эмбеддинги наследуют предвзятость из текста?

Да, и это важная проблема. Известно, что GloVe-векторы воспроизводят социальные стереотипы из корпуса (например, гендерные ассоциации профессий), потому что просто отражают статистику употребления. Это породило целое направление по измерению и снижению bias в эмбеддингах — представление наследует предубеждения данных, на которых обучено.

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

Читать ключевое — вывод целевой функции из отношений со-встречаемости (мат-блок). Это образец того, как из простого статистического наблюдения выводят обучаемую модель.