162
правки
Изменения
Нет описания правки
(или проще для "обращения внимания" на определенные части входных данных в зависимости от текущего контекста. (как лучше?))
Изначально механизм внимания был представлен в контексте [[:Рекуррентные_нейронные_сети|рекуррентных]] ''Seq2seq'' <ref>[https://en.wikipedia.org/wiki/Seq2seq Wiki -- Seq2seq]</ref> сетей <ref>https://arxiv.org/abs/1409.0473 статье</ref> для "обращения внимания" блоков декодеров на скрытые состояния [[:Рекуррентные_нейронные_сети|RNN]] энкодера для любой итерации, а не только последней.
После успеха этой методики в машинном переводе последовали ее внедрения в других задачах [[:Обработка_естественного_языка|обработки естественного языка]] и применения к [[:Сверточные_нейронные_сети|CNN]] для генерации описания изображения<ref>https://arxiv.org/abs/1502.03044</ref> и GAN <ref>SAGANhttps://arxiv.org/abs/1805.08318</ref>.
==Обобщенный механизм внимания==
===Пример использования обобщенного механизма внимания для задачи машинного перевода===
Для лучшего понимания работы обобщенного механизма внимания будет рассмотрен пример его применения в задаче машинного перевода при помощи Seq2seq сетей для решения которой он изначально был представлен<ref>[https://arxiv.org/abs/1409.0473 Neural Machine Translation by Jointly Learning to Align and Translate]</ref>.
====Базовая архитектура ''Seq2seq''====
====Применение механизма внимания для ''Seq2seq''====
Несмотря на то, что нейронные сети рассматриваются как "черный ящик" и интерпретировать их внутренности в понятных человеку терминах часто невозможно, все же механизм внимания интуитивно понятный людям смог улучшить качество машинного перевода базового ''Seq2seq'' алгоритма.
[[:Рекуррентные_нейронные_сети|RNN]] используются при обработке данных, для которых важна их последовательность. В классическом случае применения [[:Рекуррентные_нейронные_сети|RNN]] результатом является только последнее скрытое состояние <math>h_m</math>, где <math>m</math> {{---}} длина последовательности входных данных. Использование механизма внимания позволяет использовать информацию полученную не только из последнего скрытого состояния, но и любого скрытого состояния <math>h_t</math> для любого <math>t</math>.
=====Устройство слоя механизма внимания=====[[File:AttentionGeneral.png|450px|thumb|Обобщенный механизм внимания в [[:Рекуррентные_нейронные_сети|RNN]]]]
Обычно слой использующийся для механизма внимания представляет собой обычную, чаще всего однослойную, нейронную сеть на вход которой подаются <math>h_t, t = 1 \ \ldots m</math>, а также вектор <math>d</math> в котором содержится некий контекст зависящий от конкретной задачи.
Результатом работы слоя внимания является <math>c</math> который, содержит в себе информацию обо всех скрытых состояниях <math>h_i</math> пропорционально оценке <math>e_i</math>.
=====Применение механизма внимания к базовой ''Seq2seq'' архитектуре=====
[[File:Seq2SeqAttention.png|450px|thumb|Пример работы ''Seq2seq'' сети с механизмом внимания]]
При добавлении механизма в данную архитектуру между [[:Рекуррентные_нейронные_сети|RNN]] ''Энкодер'' и ''Декодер'' слоя механизма внимания получится следующая схема: