сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · NLP

NLP: словные эмбеддинги

Зачем это спрашивают

Word2vec и семейство - проверка базовой интуиции представлений: откуда в векторах берётся смысл. Плюс два практических вопроса: почему для русского fastText и чем плохи статические эмбеддинги.

// Дистрибутивная гипотеза в одну строку: смысл слова - его контексты.

Word2vec: смысл из соседей

Word2vec учит вектора, решая прокси-задачу: skip-gram предсказывает соседей по слову, CBOW (continuous bag of words) - слово по соседям. Слова из похожих контекстов получают близкие вектора.

Полный softmax по словарю дорог - негативное сэмплирование заменяет его бинарной задачей «настоящая ли пара слово-контекст», и обучение становится дешёвым.

// Знаменитая арифметика king − man + woman ≈ queen - свидетельство линейной структуры отношений в выученном пространстве. GloVe достигает похожего факторизацией матрицы совстречаемости - глобальная статистика против локальных окон; на практике они сопоставимы.

skip-gram / CBOW
предсказать соседей по слову / слово по соседям
negative sampling
бинарная задача вместо softmax по словарю

fastText: морфология в векторах

fastText представляет слово суммой векторов его символьных n-грамм. Следствия: словоформы одного слова автоматически близки, опечатки не катастрофа, и вектор строится даже для слова, которого не было в корпусе.

Для русского с его морфологией это решающий аргумент: word2vec видит «кот» и «котом» как независимые слова, fastText - как родню.

// Стандарт близости эмбеддингов - косинус: сравнивать евклидовым расстоянием без нормировки - типовая мелкая ошибка с крупными последствиями.

fastText
слово = сумма символьных n-грамм; морфология и OOV (out of vocabulary)

Пределы статических векторов

Статический эмбеддинг - один вектор на слово навсегда: дверной «ключ» и родниковый «ключ» совпадают. Многозначность статике недоступна это чинят контекстные модели (ELMo, BERT): вектор слова зависит от предложения.

Вектор текста из словных - усреднение или tf-idf-взвешивание - простой и сильный бейзлайн похожести коротких текстов.

// Чужие эмбеддинги на специфичном домене (медицина, чаты) без дообучения - лотерея: контексты твоего корпуса не те, что в википедии.

статический / контекстный
один вектор навсегда / вектор зависит от предложения

Как отвечать: «Чем fastText лучше word2vec для русского?»

Word2vec выучивает вектор на каждое слово целиком: «кот», «кота» и «котом» для него независимые сущности, а слова не из корпуса вектора не имеют вовсе. fastText собирает слово из символьных n-грамм - словоформы автоматически близки, потому что делят куски, опечатка не рушит вектор, и для незнакомого слова вектор строится из его фрагментов. Для русского с богатой морфологией это прямой прирост качества без единой строчки морфоанализа. Ограничение общее у обоих: вектора статические, омонимы не разделяются - за этим уже к контекстным моделям.

Механика различия, три конкретных следствия для русского и честная общая граница - полный ответ.

На чём валят

  • Ждать от word2vec разных векторов для омонимов - статика смыслы не разделяет.
  • Евклидово расстояние без нормировки - стандарт близости здесь косинус.
  • OOV у word2vec/GloVe - для морфологически богатых языков fastText.
  • Чужие эмбеддинги на специфичном домене без дообучения - контексты не те.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 8, остальные разбираются в тренажёре.

  1. #word_embeddings1 / 5
    Чем skip-gram отличается от CBOW в word2vec?
    A)Модель skip-gram по конструкции способна работать с биграммами и никакими другими окнами контекста, а на другие размеры окна контекста её расширить не получится
    B)CBOW вообще не использует контекстные слова при обучении
    C)Skip-gram по центру предсказывает контекст, CBOW по контексту — центр; skip-gram лучше на редких словах
    D)Это просто два разных названия одного и того же алгоритма
    показать ответ и разбор
    +C)Skip-gram по центру предсказывает контекст, CBOW по контексту — центр; skip-gram лучше на редких словах

    // разбор: CBOW усредняет векторы контекстных слов и предсказывает центральное — быстрее, лучше на частых словах. Skip-gram делает обратное: по центральному предсказывает каждое контекстное — медленнее, но точнее на редких словах и малых корпусах (каждое вхождение даёт больше пар). Обучение ускоряют негативным сэмплированием. Skip-gram + negative sampling — частый дефолт.

  2. #word_embeddings2 / 5
    Чем GloVe концептуально отличается от word2vec?
    A)Модель GloVe способна строить векторные представления для английского языка
    B)GloVe вообще не даёт на выходе векторов отдельных слов
    C)GloVe — это разновидность нейросети-трансформера
    D)GloVe учит векторы из глобальной матрицы совстречаемости слов (факторизация статистики), а word2vec — из локальных окон предсказанием
    показать ответ и разбор
    +D)GloVe учит векторы из глобальной матрицы совстречаемости слов (факторизация статистики), а word2vec — из локальных окон предсказанием

    // разбор: Word2vec — предсказательный метод на локальных окнах. GloVe (Global Vectors) явно строит матрицу совстречаемости слов по всему корпусу и факторизует её, оптимизируя, чтобы скалярное произведение векторов приближало логарифм частоты совстречаемости — использует глобальную статистику напрямую. На практике оба дают похожие статические эмбеддинги; выбор чаще про инженерию/данные. Оба контекст-независимые.

  3. #word_embeddings3 / 5
    Чем fastText улучшает word2vec для морфологически богатых языков и OOV?
    A)Строит вектор слова из его символьных n-грамм — даёт векторы даже незнакомым/редким словоформам
    B)Он игнорирует внутреннюю морфологическую структуру слова и работает с целыми токенами, подобно обычному словарному эмбеддингу целых слов
    C)Он обязательно требует параллельного двуязычного корпуса
    D)Он работает поверх мешка слов (BoW)
    показать ответ и разбор
    +A)Строит вектор слова из его символьных n-грамм — даёт векторы даже незнакомым/редким словоформам

    // разбор: word2vec/GloVe дают вектор только словам из словаря — редкие формы и OOV выпадают, а для богатой морфологии (русский: «дом/дома/домами») формы учатся раздельно. fastText представляет слово суммой векторов его символьных n-грамм (subword): вектор для незнакомого слова собирается из кусочков, а родственные формы делят n-граммы и близки. Отсюда устойчивость к OOV и морфологии.

  4. #word_embeddings4 / 5
    «король − мужчина + женщина ≈ королева» демонстрирует, что...
    A)Обученные эмбеддинги хранят слова в алфавитном порядке их индексов в общем словаре модели
    B)в пространстве эмбеддингов семантические отношения кодируются устойчивыми направлениями (сдвигами векторов)
    C)Word2vec умеет решать математические уравнения
    D)Векторы двух слов ортогональны
    показать ответ и разбор
    +B)в пространстве эмбеддингов семантические отношения кодируются устойчивыми направлениями (сдвигами векторов)

    // разбор: Аналогия работает, потому что регулярные отношения (пол, множественное число, столица-страна) проявляются как примерно одинаковые векторные сдвиги. «king−man» ловит «королевскость без мужского», прибавление «woman» даёт «queen». Следствие дистрибутивного обучения. Оговорка: аналогии не идеальны, чувствительны к частотам/датасету, а метод исключает исходные слова из ответа.

  5. #word_embeddings5 / 5
    Фундаментальное ограничение статических эмбеддингов (word2vec/GloVe), которое сняли контекстные модели?
    A)Обученные статические эмбеддинги физически не помещаются в оперативную память при практическом использовании
    B)Они работают для английского языка
    C)Один вектор на слово независимо от контекста: полисемия («ключ», «bank») схлопнута в одну точку
    D)Статические эмбеддинги не могут быть плотными по своей природе
    показать ответ и разбор
    +C)Один вектор на слово независимо от контекста: полисемия («ключ», «bank») схлопнута в одну точку

    // разбор: Статический эмбеддинг присваивает слову ОДИН вектор навсегда, усредняя все смыслы: «ключ» (гаечный/скрипичный/от двери), «bank» (банк/берег) сливаются в точку — контекст не различить. Контекстные модели (ELMo, BERT и далее) выдают вектор слова В ЗАВИСИМОСТИ от предложения, разводя значения полисемичных слов. Ключевой шаг от статических к контекстным представлениям.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.