Модуль 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. Сравните аналогии с готовой моделью.
§ Акт · что дальше