В нескольких своих предыдущих сообщениях я обсуждал методы получения вложений слов, такие как SVD, word2vec или GloVe. В этом посте я сделаю абстракцию на уровень выше и расскажу о 4 различных методах, которые были предложены для встраивания предложений.

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

  1. Он игнорирует порядок слов в предложении.
  2. Он полностью игнорирует семантику предложения.

Другие подходы, основанные на векторных словах, также имеют аналогичные ограничения. Например, метод средневзвешенного значения снова теряет порядок слов в предложении. Чтобы решить эту проблему, Socher et al. объединил слова в порядке, заданном деревом синтаксического анализа предложения. Хотя этот метод подходит для полных предложений, он не работает для фраз или абзацев.

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

В свете этого обсуждения я сейчас опишу 4 недавних метода, которые были предложены для получения общих векторов предложений. Обратите внимание, что каждое из них относится к одной из двух категорий: (i) межпредложение, в котором вектор одного предложения зависит от окружающих его предложений, и (ii) внутрипредложение, где вектор предложения зависит только от этого конкретного предложения в изоляция.

Вектор абзаца

В этой статье ICML'14 [1] Миколова (который также изобрел word2vec) авторы предлагают следующее решение: вектор предложения можно узнать, просто присвоив каждому предложению индекс, а затем обработав индекс, как и любое другое слово. Это показано на следующем рисунке.

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

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

Модель PV-DM требует большого объема памяти, поскольку векторы абзацев объединяются со всеми векторами в контекстном окне на каждом шаге обучения. Чтобы решить эту проблему, авторы предлагают другую модель, называемую распределенным BOW (PV-DBOW), которая предсказывает случайные слова в контекстном окне. Обратной стороной является то, что эта модель не использует порядок слов и, следовательно, работает хуже, чем PV-DM.

Пропуск-мысли

В то время как PV была моделью внутри предложения, skip-Think [2] - это межпредложение. Метод использует непрерывность текста, чтобы предсказать следующее предложение из данного предложения. Это также решает проблему шага вывода, которая присутствует в модели PV. Если вы читали об алгоритме пропуска грамматики в word2vec, пропуск мыслей - это, по сути, тот же метод, абстрагированный до уровня предложения.

В статье авторы предлагают структуру кодировщика-декодера для обучения с использованием RNN как для кодирования, так и для декодирования. В дополнение к матрице встраивания предложений этот метод также генерирует векторы для слов в словарном запасе корпуса. Наконец, максимальная целевая функция выглядит следующим образом.

Здесь индексы i + 1 и i-1 представляют следующее предложение и предыдущее предложение соответственно. В целом функция представляет собой сумму логарифмических вероятностей правильного предсказания следующего предложения и предыдущего предложения с учетом текущего предложения.

Поскольку векторы слов также определяются во время обучения, проблема может возникнуть во время вывода, если новое предложение содержит слово OOV. Чтобы решить эту проблему, авторы предлагают простое решение для расширения словарного запаса. Мы предполагаем, что любое слово, даже если это OOV, обязательно будет происходить из некоторого векторного пространства (скажем, w2v), так что у нас есть его векторное представление в этом пространстве. Таким образом, каждое известное слово имеет 2 представления: одно в пространстве RNN, а другое в пространстве w2v. Затем мы можем идентифицировать матрицу линейного преобразования, которая преобразует пространственные векторы w2v в пространственные векторы RNN, и эту матрицу можно использовать для получения векторов RNN для слов OOV.

FastSent

Эта модель, предложенная Кёнхун Чо [3], также является техникой между предложениями и концептуально очень похожа на пропуск мыслей. Единственное отличие состоит в том, что он использует представление предложения BOW для предсказания окружающих предложений, что делает его в вычислительном отношении намного более эффективным, чем пропуск мыслей. Гипотеза обучения остается той же, то есть богатая семантика предложения может быть выведена из содержания соседних предложений. Поскольку детали метода такие же, как и в случае с пропущенными мыслями, я не буду повторять их здесь, чтобы избежать дублирования.

Автоэнкодеры с последовательным шумоподавлением (SDAE)

Этот метод также был предложен в той же статье [3], что и FastSent. Однако, по сути, это метод внутри предложения, цель которого состоит в том, чтобы восстановить предложение из зашумленной версии.

По сути, в SDAE многомерные входные данные искажаются в соответствии с некоторой функцией шума, и модель обучается восстанавливать исходные данные из коррелированной версии.

В документе функция шума N использует 2 параметра следующим образом.

  1. Для каждого слова w в предложении S N удаляет его с некоторой вероятностью p0.
  2. Для каждой неперекрывающейся биграммы в S N меняет местами токены биграммы с вероятностью px.

Они основаны на подходах «отбрасывания слов» и «дебаггинга» соответственно, которые ранее были подробно изучены.

В [3] авторы выполнили подробные эмпирические оценки нескольких методов вектора предложений, включая все вышеперечисленные. Из этого анализа можно сделать следующие наблюдения:

  • Зависимость от задачи: хотя методы предназначены для создания общих представлений предложений, которые хорошо работают с различными задачами, обнаружено, что некоторые методы более подходят для решения некоторых задач из-за встроенного алгоритма. Например, пропущенные мысли хорошо работают с задачами текстового вывода, тогда как SDAE намного лучше работают с обнаружением перефразирования.
  • Inter vs. intra: Модели между предложениями генерируют похожие векторы, поскольку их ближайшими соседями являются предложения с общими концепциями. Напротив, для моделей внутри предложения это предложения, которые имеют больше перекрывающихся слов.
  • Зависимость от порядка слов. Хотя широко распространено мнение, что порядок слов имеет решающее значение для векторов предложений, средний балл для моделей, чувствительных к порядку слов, оказался почти равным тем, которые таковыми не являются. Для моделей RNN в неконтролируемых объектах он был еще ниже, что действительно удивительно. Одно из объяснений этого может заключаться в том, что предложения в наборе данных или методы оценки недостаточно надежны, чтобы в достаточной степени бросить вызов простым методам, основанным на частоте слов.

Ссылки:

[1] Ле, Куок и Томаш Миколов. «Распределенные представления предложений и документов». Международная конференция по машинному обучению. 2014 г.

[2] Кирос, Райан и др. «Пропускные векторы». Достижения в области нейронных систем обработки информации. 2015 г.

[3] Хилл, Феликс, Кёнхён Чо и Анна Корхонен. «Изучение распределенных представлений предложений из немаркированных данных». Препринт arXiv arXiv: 1602.03483 (2016).