В последнее время механизм внимания стал одним из основных методов глубокого обучения во множестве областей после огромного первоначального успеха в нейронном машинном переводе (NMT) [Cho et al., 2015 и ссылки в нем]. Он значительно улучшился по сравнению с существующими алгоритмами NMT на основе рекуррентной нейронной сети (RNN), ослабив предположение, что вся информация из входного предложения должна быть сжата в один скрытый вектор состояния.

На приведенном выше графике RNNsearch-50 является результатом модели NMT, оснащенной механизмом мягкого внимания, и мы видим, что оценка BLEU не снижается по мере того, как вводимое предложение становится длиннее. Авторы считают, что механизм внимания помог передать долгосрочную информацию, которую невозможно сохранить с помощью меньших скрытых векторных представлений.

ПРИМЕЧАНИЕ. Оценка BLEU - это показатель качества переведенного текста. Для получения дополнительной информации перейдите на страницу WIKI.

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

Самовнимание (СА), вариант механизма внимания, был предложен Zhouhan Lin, et. al (2017) , чтобы преодолеть недостаток RNN, позволив механизму внимания сосредоточиться на сегментах предложения, где релевантность сегмента определяется вкладом в задачу. Самовнимание - относительно простой для объяснения механизм. Это долгожданное изменение, позволяющее понять, как работает данная модель глубокого обучения, поскольку многие предыдущие архитектуры НЛП известны своим черным ящиком и трудностью для интерпретации.

Вот краткое изложение того, что авторы предложили в статье:

В части (а) приведенной выше диаграммы мы можем увидеть всю архитектуру модели самовнимания. Встроенные токены (w в приведенном выше) подаются на двунаправленные уровни LSTM (h). Скрытые состояния взвешиваются с помощью вектора внимания (A 's), чтобы получить уточненное представление предложения (M в приведенном выше примере), которое используется в качестве входных данных для классификации.

Как мы получили веса внимания? Это проиллюстрировано в части (b) диаграммы, идущей сверху вниз. Чтобы начать сбор скрытых состояний, он умножается на матрицу весов, а затем следует слой tanh для нелинейного преобразования. Затем к выходным данным применяется другое линейное преобразование с другой матрицей весов, чтобы получить матрицу предварительного внимания. Слой softmax, который применяется к матрице предварительного внимания в построчном направлении, делая его веса похожими на распределение вероятностей по скрытым состояниям.

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

Давайте сначала кратко рассмотрим различные методы представления предложений:

Представление приговора

Удобочитаемые предложения необходимо переводить в машиночитаемые для задач НЛП, включая анализ тональности. Концептуально это можно разделить на два этапа: первый - выделение токенов, появляющихся в данном предложении (токены могут быть либо словом, либо символом или даже bytes), а другой - представить все предложение в виде вектора или матрицы.

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

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

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

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

Чтобы имитировать то, как человек читает предложения и фиксирует информацию о последовательности, доступно несколько архитектур глубокого обучения, таких как RNN, CNN и их комбинации. RNN накапливает информацию о последовательных токенах, представленных в предложении, в их скрытых состояниях.

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

Самовнимание

Механизм самовнимания - это способ сделать акцент на токенах, которые должны иметь большее влияние на конечный результат. Zhouhan Lin, et. al (2017) предложил следующую архитектуру самовнимания, как показано на следующем рисунке. С u размером скрытого состояния слоя LSTM, у нас есть 2 * u как измерение скрытого состояния, поскольку мы используем двунаправленный LSTM. Поскольку в предложении имеется n токенов, существует n скрытых состояний размером 2 * u. Линейное преобразование из 2u -мерного пространства в d -мерное пространство применяется к n скрытым векторам состояния. После применения активации tanh применяется еще одно линейное преобразование из d -размерности в r -размер, чтобы получить r размерный вектор внимания на жетон. Теперь у нас есть r весовых векторов внимания размера n (обозначенных как A в красном прямоугольнике на рисунке ниже), и мы используем их в качестве весов при усреднении скрытых состояний, чтобы в итоге получить r различных взвешенных средних. из 2 * u векторов (обозначенных как M на рисунке из оригинальной статьи).

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

Регуляризация

Авторы также ввели штрафной срок на основе матрицы самовнимания следующим образом:

Это предотвращает совпадение или дублирование нескольких векторов внимания. Этот штраф побуждает матрицу самовнимания иметь большие значения по диагонали и позволяет одиночным весам внимания для данного токена преобладать над другими (r-1) весами внимания.

Мы использовали spacy для обработки данных и seaborn для визуализации. Полный код можно найти в [Анализ настроений по самовниманию].

Полученные результаты

В этом эксперименте мы ограничиваем длину каждого предложения 20 токенами. В качестве гиперпараметров мы использовали d = 10 и r = 5. Таким образом, после обучения мы получаем 5 весовых векторов внимания, охватывающих различные аспекты предложения. В целях иллюстрации мы усреднили 5 весов и снова применили фильтр softmax, чтобы получить распределение вероятностей по токенам (сумма равна 1).

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

Для положительных отзывов алгоритм обращал внимание на такие положительные слова, как «круто», «люблю» и «нравится».

Для отрицательных отзывов алгоритм фокусировался на таких отрицательных словах, как «отстой», «ненавижу», «глупый» и т. Д.

В нашем эксперименте 28 из 3216 предложений неправильно классифицированы. Давайте посмотрим на один из них:

like mission impossible but hate tom cruise get that straight update day in a row like magic and shit

Мы видим, что предложение включает как положительные, так и отрицательные слова, такие как «нравится», «ненавижу», «дерьмо», «магия». Понятно, что модель запуталась в этом обзоре, в котором смешаны языковые элементы, положительные и отрицательные.

Заключение

Поскольку механизмы внимания становятся все более и более распространенными в исследованиях глубокого обучения, очень важно понимать, как они работают и как их реализовать. Мы надеемся, что эта статья помогла вам лучше познакомиться с механизмом самовнимания!