Первая из серии бумажных заметок. Здесь я кратко суммирую важные статьи, которые я читаю по работе или просто для удовольствия :P

  • Бумага: внимание — это все, что вам нужно
  • Ссылка: https://bit.ly/3aklLFY
  • Авторы: Ашиш Васвани, Ноам Шазир, Ники Пармар, Якоб Ушкорейт, Ллион Джонс, Эйдан Н. Гомес, Лукаш Кайзер, Илья Полосухин
  • Код: https://github.com/tensorflow/tensor2tensor

Найдите аннотированную версию статьи здесь.

Что?

Предлагает Transformers, новую простую архитектуру для преобразования последовательности, которая использует только механизм внимания и не использует какие-либо повторения или свертки. Эта модель достигает SOTA (на тот момент) в задаче перевода WMT 2014 с английского на французский с оценкой 41,0 BLEU. Также превосходит существующие лучшие результаты в задаче перевода с английского на немецкий на WMT 2014 с результатом 28,4 BLEU. Стоимость обучения также намного меньше, чем у лучших моделей, выбранных в статье (на тот момент).

Почему?

Существующие рекуррентные модели, такие как RNN, LSTM или GRU, работают последовательно. Они выравнивают позиции по шагам во времени вычислений. Они генерируют последовательность скрытых состояний в зависимости от предыдущего скрытого состояния и входных данных для текущей позиции. Но у последовательных вычислений есть ограничения. Их нелегко распараллелить, что требуется, когда длина последовательности становится большой. Модель Transformer избегает повторений, допускает большее распараллеливание и требует меньше времени на обучение для достижения SOTA в задаче машинного перевода.

Как?

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

Кодировщик

На рисунке выше показан только один слой энкодера слева. Таких слоев N=6. Каждый уровень имеет два подуровня — уровень самоконтроля с несколькими головками и полностью связанную с позицией сеть прямой связи. Для каждого подуровня используются Остаточные соединения и нормализация слоя.

Декодер

Это также имеет N=6 сложенных слоев. На диаграмме архитектуры справа показан один уровень декодера. Каждый слой имеет три подслоя. Два из них такие же, как энкодер. Третий уровень выполняет многоголовочное внимание к выходу стека кодировщика. Это изменено, чтобы позиции не посещали последующие позиции. Кроме того, выходные вложения также смещаются на одну позицию. Эти функции гарантируют, что прогнозы для позиции зависят только от известных выходных данных для позиций перед ней.

Внимание

В статье используется модифицированное скалярное произведение внимания, и оно называется «Масштабированное скалярное произведение внимания». Учитывая запросы и ключи измерения d_k и значения измерения d_v, матрица внимания рассчитывается, как показано ниже.

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

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

В документе используются h=8 параллельных слоев внимания или головок. Уменьшенный размер каждой головы компенсирует большее количество голов, и, следовательно, вычислительные затраты остаются такими же, как при одноголовом внимании с полной размерностью.

Приложения многоголового внимания в статье приведены ниже -

Позиционно-упреждающие сети

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

Позиционные кодировки

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

Для положения pos и размера i в документе используются следующие позиционные вложения:

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

Результаты

* Форма (А), видно, что одностороннее внимание немного хуже, чем при наилучшей настройке. Качество также падает при слишком большом количестве головок.

* (B) показывает, что уменьшение размера ключа внимания d_k ухудшает качество модели.

* На (C) и (D) видно, что более крупные модели лучше, а отсев помогает избежать переобучения.

* (E) показывает, что синусоидальное позиционное кодирование при замене изученными позиционными вложениями также не приводит к потере качества

Для базовых моделей авторы использовали единую модель, полученную путем усреднения последних 5 контрольных точек, записанных с 10-минутными интервалами. Большие модели усреднялись по последним 20 контрольным точкам. Поиск луча с размером луча 4 и штрафом за длину α = 0,6. Максимальная выходная длина во время вывода устанавливается равной входной длине +50, но, если это возможно, модель завершается раньше.

Сравнение производительности с другими моделями показано ниже.

Я также выпустил аннотированную версию статьи. Если вам интересно, вы можете найти его здесь.

Следите за мной в Twitter, Github или присоединяйтесь к LinkedIn.