Механизмы внимания

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

Полносвязные и сверточные нейронные сети имеют фиксированные размер входной последовательности. Рекуррентные нейронные сети позволяют немного расширить анализируемую последовательность за счет передачи скрытых состояний с предыдущих итераций. Но и их эффективность снижается с ростом последовательности.

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

Рассматривая фотографию своих родных людей, вы прежде всего концентрируете свое внимание на их портретах. Лишь потом можете перевести свой взгляд на фоновые элементы фотографии. При этом вы все равно концентрируете свое внимание на фотографии. А вся внешняя среда, окружающая вас, остается за пределами вашей мыслительной деятельности в этот момент.

Я хочу вам показать, что человеческое сознание не оценивает всю окружающую среду целиком. Оно постоянно выхватывает из нее какие-то детали и переносит на них свое внимание. А вот рассмотренные нами модели нейронных сетей не обладают такой способностью.

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

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

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

Encoder - Decoder без механизма внимания

Encoder - Decoder без механизма внимания

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

Алгоритм работы такого механизма включал следующие итерации:

  1. Создание скрытых состояний Encoder и аккумулирование их в блоке внимания.
  2. Оценка парных зависимостей между скрытыми состояниями каждого элемента Encoder и последнего срытого состояния Decoder.
  3. Полученные оценки объединяются в единый вектор и нормализуются путем использования функции Softmax.
  4. Вычисления вектора контекста путем умножения всех скрытых состояний Encoder на соответствующее им оценки выравнивания.
  5. Декодирование вектора контекста и объединение полученного значения с предыдущим состоянием Decoder.

Все итерации повторяются до получения сигнала конца предложения.

 

Encoder - Decoder без механизма внимания

Encoder - Decoder с механизмом внимания

Предложенный механизм позволил решить проблему с ограничением длины входной последовательности и повысить качество машинного перевода с использованием рекуррентных нейронных сетей. Как следствие, он получил широкое распространение и различные вариации реализации. В частности, в августе 2015 года Минь-Тханг Луонг в статье Effective Approaches to Attention—based Neural Machine Translation предложил свою вариацию метода внимания. Основными отличиями нового подхода стали использование трех функций для вычисления степени зависимостей и точка использования механизма внимания в Decoder.