Эта статья является формальным представлением моего понимания семантики векторов на основе заметок по курсу, справочных материалов и глав из книги Джурафски по SLP. Я буду говорить о разреженной и плотной векторной семантике, включая SVD, skip-gram и GloVe. Во многих местах я буду пытаться объяснять идеи на языке, а не уравнениями (но я буду давать ссылки на выводы и прочее там, где это абсолютно необходимо, а это на самом деле везде!).

«Вы должны знать слово по компании, которую оно составляет».

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

Но что такое вложения? Они называются так потому, что слова по сути превращаются в векторы, «встраивая» их в векторное пространство. Для этого мы используем гипотезу о том, что слова, встречающиеся в похожем контексте, обычно имеют похожее значение, то есть значение слова может быть выведено из распределения вокруг него. По этой причине эти методы также называют «распределительными» методами.

Векторы слов могут быть разреженными или плотными. Я начну с разреженных векторов, а затем опишу плотные.

Редкие векторы

Срок-документ и терм-матрица

Предположим, у нас есть набор из 1000 документов, состоящий из 5000 уникальных слов. Очень наивно, мы можем просто подсчитать количество появлений каждого слова в каждом документе, а затем представить каждое слово этим 1000-мерным вектором подсчетов. Именно это и делает матрица термин-документ.

Аналогичным образом рассмотрим большой корпус текста из 5000 уникальных слов. Теперь возьмем окно фиксированного размера и для каждой пары слов подсчитаем, сколько раз оно встречается в окне. Эти подсчеты образуют матрицу терминов, также называемую матрицей совместной встречаемости, которая в этом случае будет матрицей 5000x5000 (с большинством ячеек 0, если размер окна относительно небольшой).

Точечная взаимная информация (PMI)

Матрица совместной встречаемости - не лучшая мера сходства между двумя словами, поскольку она основана на необработанной частоте и, следовательно, очень асимметрична. Вместо этого было бы желательно иметь количество, которое измеряет, насколько более вероятно, что 2 слова появятся в окне, по сравнению с чистой случайностью. Это именно то, что измеряет PMI.

Если PMI положительный, пара (x, y) с большей вероятностью возникнет вместе, чем чистая случайность, и наоборот. Однако отрицательное значение ненадежно, так как маловероятно, что пара слов будет встречаться много раз в небольшом корпусе. Чтобы решить эту проблему, мы определяем положительный PMI (PPMI) как

TF-IDF (Term frequency - обратная частота документа)

Он состоит из двух частей: TF, который обозначает количество слов в документе, и IDF, который представляет собой компонент веса, который придает больший вес словам, встречающимся только в нескольких документах (и, следовательно, более репрезентативен для документов, которые они присутствуют в, в отличие от таких слов, как «the», которые присутствуют в большом количестве документов).

Здесь N - общее количество документов, а dfi - количество документов, в которых встречается слово i.

Плотные векторы

Проблема с разреженными векторами - это проклятие размерности, которое делает невозможными вычисления и хранение. По этой причине мы предпочитаем плотные векторы с вещественными элементами. Семантика плотных векторов делится на 2 категории: матричная факторизация и нейронные вложения.

Факторизация матрицы

Сингулярное векторное разложение (SVD)

По сути, это метод уменьшения размерности, при котором мы находим измерения с наибольшими отклонениями. Предположим, у нас есть матрица совпадений A размером m x n, тогда можно разложить A на множители:

где r - ранг матрицы A (т.е. r = максимальное количество линейно независимых векторов, которые могут быть использованы для формирования A). Кроме того, U - это матрица собственных векторов оператора A (A ^ T), а S - диагональная матрица, содержащая его собственные значения. Если мы переставим столбцы в U, чтобы соответствовать убывающему порядку собственных значений, мы можем сохранить первые k столбцов, которые будут представлять измерения в скрытом пространстве, которые имеют наивысшие дисперсия. Это даст нам k -мерное представление для каждого из m слов в словаре.

Но почему мы хотим выполнить это усечение?

  • Во-первых, удаление более низких размеров дисперсии отфильтровывает шумовую составляющую из вложений слов.
  • Что еще более важно, меньшее количество параметров приводит к лучшему обобщению. Было обнаружено, что 300-мерные вложения слов работают намного лучше, чем, скажем, 3000-мерные.

Однако этот подход по-прежнему ограничен, поскольку факторизация матрицы A, которая сама по себе может быть большой матрицей, является сложной в вычислительном отношении.

Нейронные вложения

Идея проста. Мы можем рассматривать каждый элемент в векторе как параметр, который будет обновляться при обучении модели нейронной сети. Мы начинаем со случайно инициализированного вектора и обновляем его на каждой итерации. Это обновление основано на векторах контекстных (оконных) слов. Гипотеза состоит в том, что такое обновление в конечном итоге приведет к тому, что похожие слова будут иметь векторы, которые ближе друг к другу в векторном пространстве.

Здесь я опишу 2 самые популярные нейронные модели - Word2Vec и GloVe.

Word2Vec

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

Предположим, у нас есть контекстное окно, где w - целевое слово, а c - одно из контекстных слов. Затем цель skip-gram - вычислить P (c | w), которое задается как

По сути, это просто распределение вероятностей softmax по всем парам слово-контекст в корпусе, направленное косинусным сходством. Однако вычисление знаменателя здесь очень дорого, поскольку может быть очень большое количество контекстных слов. Для решения этой проблемы используется отрицательная выборка.

Голдберг и Леви очень четко объяснили вывод целевой функции в SGNS в своей заметке. Я постараюсь дать здесь немного интуиции.

Для слова w мы пытаемся предсказать контекстное слово c. Поскольку мы используем softmax, это по сути похоже на проблему классификации нескольких классов, когда мы пытаемся отнести следующее слово к одному из N классов (где N - количество слов в словаре). Поскольку N может быть довольно большим, это очень сложная проблема.

SGNS преобразует эту проблему множественной классификации в двоичную классификацию. Новая цель - предсказать для любой данной пары слово-контекст (w, c), находится ли эта пара в окне или нет. Для этого мы пытаемся увеличить вероятность «положительной» пары (w, c), в то же время уменьшая вероятность k случайно выбранные «отрицательные образцы» (w, s), где s - это слово, не найденное в контексте w. Это приводит к следующей целевой функции, которую мы пытаемся максимизировать в SGNS:

GloVe (глобальные векторы)

Одна проблема с skip-gram и CBOW заключается в том, что, поскольку они обе являются оконными моделями, статистика совместной встречаемости корпуса не используется эффективно, что приводит к неоптимальным встраиваниям. Модель GloVe, предложенная Pennington et al. пытается решить эту проблему, формулируя целевую функцию на основе вероятностной статистики.

Опять же, исходную статью очень приятно читать (в разделе 3 подробно описана их модель), и интересно отметить вывод для целевой функции:

Здесь X_ij - количество пар слов (i, j) в корпусе. Весовая функция f (x) имеет 3 требования:

  • f (0) = 0, поэтому весь член не стремится к бесконечности.
  • Редким случаям следует присвоить низкий вес неубывающим.
  • Он должен быть относительно небольшим для больших значений x.

Опять же, пожалуйста, прочтите статью, чтобы узнать подробности.

Хотя подход матричной факторизации и метод нейронного встраивания могут поначалу показаться полностью независимыми, Леви и Голдберг (опять же!) Гениально показали в статье NIPS 2014, что даже метод SGNS неявно факторизует матрицу контекста слова, в которой расположены ячейки. PMI (точечная взаимная информация) соответствующих пар слово-контекст, смещенный глобальным контекстом. Они выводят это в разделе 3.1 статьи, и я настоятельно рекомендую вам перейти по ссылке и прочитать ее. Это восторг! Вывод действительно прост, и я бы сделал это здесь, за исключением того, что я буду воспроизводить только точное доказательство.

Совсем недавно группа Ричарда Сочера из Salesforce Research предложила в своей статье новый вид встраивания, названный CoVe (Contextualized Word Vectors). Идея снова позаимствована из видения, где трансфертное обучение использовалось давно. Обычно модели с различными целями обучаются на большом наборе данных, таком как ImageNet, а затем эти веса используются для инициализации параметров модели для различных задач видения. Точно так же CoVe использует параметры, обученные в задаче машинного перевода Seq2Seq, посвященной вниманию, а затем использует их для различных других задач, включая ответы на вопросы, где он показал самую современную производительность в наборе данных SQuAD. Я только бегло просмотрел статью, но полагаю, что такое глубокое трансферное обучение, естественно, является следующим шагом к улучшению встраивания слов.

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

  1. Семантические вложения слов
  2. Вложения слов: объяснение их свойств
  3. Линейная алгебраическая структура вложений слов

Они обеспечивают отличное понимание математики, лежащей в основе векторов слов, и прекрасно написаны (что неудивительно, поскольку профессор Арора является одним из авторов известной и печально известной продвинутой книги по вычислительной сложности).