Что такое внимание?

Внимание - это просто вектор, часто выходы плотного слоя с использованием функции softmax.

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

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

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

Почему внимание?

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

Vanilla RNN (классический) часто попадает в ловушку при моделировании:

  1. Дилемма структуры: в реальном мире длина выходов и входов может быть совершенно разной, в то время как Vanilla RNN может обрабатывать только проблему фиксированной длины, которую сложно согласовать. Рассмотрим примеры перевода на EN-FR: «он не любит яблоки» → «Il n’aime pas les pommes».
  2. Математическая природа: она страдает от исчезновения / взрыва градиента, что означает, что ее трудно тренировать, когда предложения достаточно длинные (возможно, не более 4 слов).

Трансляция часто требует произвольной длины ввода и длины вывода, чтобы справиться с указанными выше недостатками, принята модель кодировщика-декодера, и базовая ячейка RNN заменена на ячейку GRU или LSTM, активация гиперболического тангенса заменена на ReLU. Здесь мы используем ячейку ГРУ.

Встраивание слоя преобразует дискретные слова в плотные векторы для повышения эффективности вычислений. Затем встроенные векторы слов последовательно подаются в кодировщик, также известный как ячейки ГРУ. Что произошло при кодировании? Информация течет слева направо, и каждый вектор слова изучается не только в соответствии с текущим вводом, но и со всеми предыдущими словами. Когда предложение полностью прочитано, кодировщик генерирует вывод и скрытое состояние на временном шаге 4 для дальнейшей обработки. Для части кодирования декодер (а также ГРУ) захватывает скрытое состояние из кодировщика, обученного принудительным действием учителя (режим, в котором вывод предыдущей ячейки является текущим вводом), а затем последовательно генерирует слова перевода.

Это кажется удивительным, поскольку эту модель можно применить к последовательности N-to-M, но все же остается нерешенным один главный недостаток: действительно ли одного скрытого состояния достаточно?

Да, внимание.

Как работает внимание?

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

А построить вектор контекста довольно просто. Для фиксированного целевого слова сначала мы перебираем все состояния кодировщиков, чтобы сравнить целевое и исходное состояния, чтобы сгенерировать оценки для каждого состояния в кодировщиках. Затем мы могли бы использовать softmax для нормализации всех оценок, что генерирует распределение вероятностей, обусловленное целевыми состояниями. Наконец, введены веса, чтобы упростить обучение вектора контекста. Вот и все. Математика показана ниже:

Чтобы разобраться в кажущейся сложной математике, нам нужно помнить о трех ключевых моментах:

  1. Во время декодирования векторы контекста вычисляются для каждого выходного слова. Таким образом, у нас будет двумерная матрица, размер которой равен количеству целевых слов, умноженному на количество исходных слов. Уравнение (1) демонстрирует, как вычислить одно значение для одного целевого слова и набора исходного слова.
  2. Как только вектор контекста вычислен, вектор внимания может быть вычислен с помощью вектора контекста, целевого слова и функции внимания f.
  3. Нам нужен механизм внимания, чтобы его можно было тренировать. Согласно уравнению (4), оба стиля предлагают тренируемые веса (W у Луонга, W1 и W2 у Bahdanau). Таким образом, разные стили могут привести к разной производительности.

Заключение

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

[1] Виньялс, Ориол и др. Покажи и расскажи: генератор титров нейронных изображений. arXiv: 1411.4555 (2014).
[2] Богданау, Дмитрий, Кёнхён Чо и Йошуа Бенджио. Нейронный машинный перевод путем совместного обучения согласованию и переводу. arXiv: 1409.0473 (2014).
[3] Чо, Кёнхён, Аарон Курвиль и Йошуа Бенжио. Описание мультимедийного контента с использованием сетей кодирования-декодирования на основе внимания. arXiv: 1507.01053 (2015)
[4] Сюй, Кельвин и др. Покажи, посети и расскажи: создание подписи к нейронному изображению с визуальным вниманием. arXiv: 1502.03044 (2015).
[5] Сухэ-Батор, Сайнбаяр, Джейсон Уэстон и Роб Фергус. Сквозные сети памяти. Достижения в системах обработки нейронной информации. (2015).
[6] Жулен, Арман и Томаш Миколов. Вывод алгоритмических паттернов с помощью рекуррентных сетей, дополненных стеком. arXiv: 1503.01007 (2015).
[7] Герман, Карл Мориц и др. Обучающие машины читать и понимать. Достижения в системах обработки нейронной информации. (2015).
[8] Раффель, Колин и Дэниел П. У. Эллис. Сети прямого распространения с вниманием могут решить некоторые проблемы с долговременной памятью. arXiv: 1512.08756 (2015).
[9] Васвани А., Шазир Н., Пармар Н. , Uszkoreit, J., Jones, L., & Gomez, A. et al. . Внимание - это все, что вам нужно. arXiv: 1706.03762 (2017).

Технический аналитик: Цинтун У