Модуль III·Статья II·~3 мин чтения

Эмбеддинги слов и предобученные языковые модели

Рекуррентные нейронные сети

Превратить статью в подкаст

Выберите голоса, формат и длину — AI запишет аудио

Эмбеддинги слов и предобученные языковые модели

Прежде чем нейронные сети могут обрабатывать текст, слова должны быть преобразованы в числовые представления. Эволюция от one-hot векторов к Word2Vec, FastText и BERT показывает, как нейронные сети научились «понимать» язык. Это одна из самых революционных траекторий в NLP.

Проблема представления слов

One-hot: слово i → вектор из нулей с единицей на i-й позиции. Размерность = |V| (словарь, 50K–200K). Проблемы: (1) Всё попарное косинусное расстояние = 0 — нет семантической близости. (2) Огромная размерность. (3) Разреженность.

Дистрибуционная гипотеза (Харрис, 1954): слова с похожим контекстом имеют похожие значения. «Банк» и «финансы» часто встречаются в одном контексте → близки. «Кошка» и «собака» близки. Это основа Word2Vec.

Word2Vec (Mikolov et al., 2013)

Skip-gram: Дано слово wₜ — предсказать окружение wₜ₋₂,...,wₜ₋₁,wₜ₊₁,...,wₜ₊₂ (окно c=2).

Цель: max Σₜ Σ_{-c≤j≤c,j≠0} log P(wₜ₊ⱼ|wₜ)

P(w|wₜ) = exp(v'w ᵀ v{wₜ}) / Σᵢ exp(v'wᵢ ᵀ v{wₜ})

Вычисление softmax дорого (знаменатель — по всему словарю). Negative sampling: для каждого положительного контекста (wₜ, wₜ₊ⱼ) сэмплируем k «случайных» (wₜ, wₖ), обучаем бинарный классификатор «настоящий/случайный».

CBOW (Continuous Bag of Words): обратная задача — предсказать wₜ по контексту. Быстрее skip-gram, чуть хуже на редких словах.

Свойства эмбеддингов Word2Vec: Линейные аналогии: king − man + woman ≈ queen. Paris − France + Russia ≈ Moscow. Синтаксические паттерны: jumped − jump ≈ running − run.

Почему это работает: PMI (Pointwise Mutual Information) матрица — log P(w,c)/P(w)P(c) — неявно факторизуется Word2Vec (Levy & Goldberg, 2014).

FastText (Bojanowski et al., 2017): эмбеддинг слова = сумма эмбеддингов n-грамм (символьных). Слово «программирование» → {«прогр», «рогра», ...}. Преимущества: обрабатывает слова вне словаря (OOV): «программировщик» → средний эмбеддинг подслов. Лучше для морфологически богатых языков (русский, финский, арабский).

GloVe (Pennington et al., 2014)

Матрица совместных встреч: X_{ij} = число раз, когда слово j встречалось в контексте слова i. Соотношение X_{ik}/X_{jk} несёт семантику: при i=лёд, j=пар, k=вода: X_{ik}/X_{jk} ≈ 1 (оба связаны с водой); k=твёрдый: >> 1 (лёд твёрдый, пар нет).

Объективная функция GloVe:

J = Σ_{i,j} f(X_{ij}) (vᵢᵀ ṽⱼ + bᵢ + b̃ⱼ − log X_{ij})²

f(x) = (x/xₘₐₓ)^α — функция веса (снижает вес очень частых совместных встреч). Объединяет глобальную статистику (как LSA) + локальный контекст (как Word2Vec).

Контекстуальные эмбеддинги: ELMo и BERT

Проблема контекстно-независимых эмбеддингов: «bank account» (банковский счёт) vs «river bank» (берег реки) — одно слово, разные смыслы. Word2Vec: одинаковый вектор. Нужны контекстуальные представления.

ELMo (Peters et al., 2018): Двунаправленный LSTM-LM. Эмбеддинг слова = взвешенная сумма всех слоёв BiLSTM. Эмбеддинг зависит от всего предложения. +10-20% на большинстве NLP задач того времени.

BERT (Devlin et al., 2018): Transformer encoder, предобученный на двух задачах: Masked Language Modeling (MLM): маскируем 15% токенов, предсказываем. Next Sentence Prediction (NSP): предсказываем, следует ли одно предложение за другим. Fine-tune на downstream задачах: добавить task-specific head, обучить 3–5 эпох. Революция: +10-20% на GLUE, SQuAD, NER, ...

GPT (OpenAI, 2018–2023): Авторегрессивный трансформер-декодер. Pre-training: predict next token. GPT-3 (175B): few-shot learning — решает задачи без fine-tuning, только по примерам в контексте. ChatGPT = GPT-4 + RLHF (человеческая обратная связь).

Численный пример: аналогии Word2Vec

Модель: Google News Word2Vec (300-мерные вектора, 100B слов).

king − man + woman: ближайший вектор = queen (cos sim 0.71). Moscow − Russia + France: Paris (0.69). jumped − jump + run: runs (0.74).

Интересный сбой: doctor − he + she = nurse (гендерный bias из корпуса). Это иллюстрирует проблему социальных предубеждений в языковых моделях.

Задание: Используйте предобученный Word2Vec (gensim + Google News 300d). (1) Найдите 10 ближайших слов к «Москва», «программирование», «кризис». (2) Проверьте аналогии: Москва − Россия + Франция = ?; президент − мужчина + женщина = ? (3) Сравните с GloVe на тех же задачах — где результаты отличаются? (4) Реализуйте Word2Vec с нуля (skip-gram + negative sampling) на малом корпусе. Обучите на 1M токенов Wikipedia. Сравните аналогии с готовой моделью.

§ Акт · что дальше