Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

14.1 Вложения слов (word2vec)

Естественный язык — сложная система, с помощью которой выражают мысли. В этой системе слово — основная единица смысла. Как следует из названия, векторы слов — это векторы, представляющие значение слов; их можно также считать векторами признаков или представлениями слов. Технику отображения слов в вещественные векторы называют вложением слов (word embedding). В последние годы вложения слов постепенно стали базовым знанием в обработке естественного языка.

14.1.1 Почему one-hot-векторы — плохой выбор

В разделе 8.5 мы использовали one-hot-векторы для представления слов (слова там были символами). Пусть число различных слов в словаре (размер словаря) равно , а каждому слову соответствует своё целое число (индекс) от до . Чтобы получить one-hot-вектор слова с индексом , мы создаём вектор длины , состоящий из нулей, и ставим 1 в позицию . Так каждое слово представляется вектором длины , который можно сразу подавать в нейронную сеть.

Хотя one-hot-векторы легко строить, обычно они — плохой выбор. Главная причина в том, что one-hot-векторы не могут точно выразить сходство между разными словами, например часто используемое нами «косинусное сходство». Для векторов их косинусное сходство — это косинус угла между ними:

Поскольку косинусное сходство между one-hot-векторами любых двух разных слов равно 0, one-hot-векторы не могут кодировать сходство между словами.

14.1.2 Самоконтролируемый word2vec

Инструмент word2vec предложен именно для решения этой проблемы. Он отображает каждое слово в вектор фиксированной длины, и эти векторы лучше выражают сходство и аналогии между разными словами. Инструмент word2vec включает две модели: модель skip-gram («пропуск-грамма») (Mikolov et al., 2013b) и непрерывный мешок слов (continuous bag of words, CBOW) (Mikolov et al., 2013a). Чтобы получить семантически осмысленные представления, их обучение опирается на условные вероятности, которые можно рассматривать как предсказание одних слов корпуса по другим. Поскольку размеченных данных нет, и skip-gram, и CBOW — самоконтролируемые модели.

Ниже мы опишем эти две модели и методы их обучения.

14.1.3 Модель skip-gram

Модель skip-gram предполагает, что слово можно использовать для порождения окружающих его слов в текстовой последовательности. Возьмём в качестве примера последовательность «the», «man», «loves», «his», «son». Пусть центральным словом выбрано «loves», а размер контекстного окна равен 2. Как показано на рис. 14.1.1, при заданном центральном слове «loves» модель skip-gram рассматривает условную вероятность порождения контекстных слов «the», «man», «his», «son»:

Предположим, что контекстные слова порождаются независимо при заданном центральном слове (условная независимость). Тогда указанную условную вероятность можно переписать так:

Рис. 14.1.1. Модель skip-gram рассматривает условную вероятность порождения окружающих контекстных слов при заданном центральном слове

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

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

где можно опустить любые временные шаги, меньшие или большие .

14.1.3.1 Обучение

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

Если для минимизации потерь используется стохастический градиентный спуск, то на каждой итерации можно случайно выбирать более короткую подпоследовательность, вычислять по ней (стохастический) градиент и обновлять параметры модели. Для вычисления этого (стохастического) градиента нужно получить градиенты логарифма условной вероятности по вектору центрального слова и по векторам контекстных слов. В общем случае, согласно (14.1.1), логарифм условной вероятности для центрального слова и контекстного слова равен

Дифференцируя, получаем градиент по вектору центрального слова :

Обратите внимание: для вычисления в (14.1.3) нужны условные вероятности всех слов словаря при центральном слове . Градиенты для остальных векторов слов получаются аналогично.

После обучения для слова с индексом словаря мы получаем два вектора: (как для центрального слова) и (как для контекстного слова). В приложениях обработки естественного языка в качестве представления слова обычно используют вектор центрального слова модели skip-gram.

14.1.4 Модель непрерывного мешка слов (CBOW)

Модель непрерывного мешка слов (CBOW) похожа на модель skip-gram. Главное отличие в том, что CBOW предполагает: центральное слово порождается по окружающим его контекстным словам в текстовой последовательности. Например, в последовательности «the», «man», «loves», «his», «son» при центральном слове «loves» и контекстном окне размера 2 модель CBOW рассматривает условную вероятность порождения центрального слова «loves» по контекстным словам «the», «man», «his», «son» (как показано на рис. 14.1.2), то есть

Рис. 14.1.2. Модель непрерывного мешка слов рассматривает условную вероятность порождения центрального слова по окружающим контекстным словам

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

Для краткости положим и . Тогда (14.1.4) упрощается до

Пусть дана текстовая последовательность длины , где слово на временном шаге обозначено . Для контекстного окна размера функция правдоподобия модели CBOW — это вероятность порождения всех центральных слов при заданных их контекстных словах:

14.1.4.1 Обучение

Обучение модели CBOW почти не отличается от обучения модели skip-gram. Оценка максимального правдоподобия для CBOW равносильна минимизации следующей функции потерь:

Заметим, что

Дифференцируя, получаем градиент по любому вектору контекстного слова ():

Градиенты для остальных векторов слов получаются аналогично. В отличие от модели skip-gram, в CBOW в качестве представления слова обычно используют векторы контекстных слов.

Резюме

  • Векторы слов — это векторы, представляющие значение слов; их можно также считать векторами признаков слов. Технику отображения слов в вещественные векторы называют вложением слов.
  • Инструмент word2vec включает модель skip-gram и модель непрерывного мешка слов.
  • Модель skip-gram предполагает, что слово можно использовать для порождения окружающих его слов в текстовой последовательности, а модель непрерывного мешка слов — что центральное слово порождается по контекстным словам.

Упражнения

  1. Какова вычислительная сложность каждого градиента? Какие проблемы возникают, если словарь велик?
  2. Некоторые устойчивые словосочетания английского языка состоят из нескольких слов, например «new york». Как обучить для них векторы слов? Подсказка: см. раздел 4 статьи о word2vec (Mikolov et al., 2013b).
  3. Рассмотрим устройство word2vec на примере модели skip-gram. Как связаны скалярное произведение двух векторов слов в модели skip-gram и косинусное сходство? Почему косинусное сходство векторов (обученных skip-gram) для пары семантически близких слов может быть высоким?

Обсуждение

Литература

  • Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., & Dean, J. (2013b). Distributed representations of words and phrases and their compositionality. In Advances in neural information processing systems, 3111–3119.
  • Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013a). Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781.