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

Материал из Викиконспекты
Перейти к: навигация, поиск

Механизм внимания в рекуррентных нейронных сетях (англ. attention mechanism, attention model) — дополнительный слой используемый в рекуррентных нейронных сетях (сокращенно RNN) для "обращения внимания" последующих слоев сети на скрытое состояние нейронной сети ht в момент времени t.

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

Обобщенное описание

Обобщенное описание механизма внимания

Рекуррентные нейронные сети используются при обработке данных, для которых важна их последовательность. В классическом случае применения RNN результатом является только последнее скрытое состояние hm, где m — длина последовательности входных данных. Использование механизма внимания позволяет использовать информацию полученную не только из последнего скрытого состояниния, но и любого скрытого состояния ht для любого t.

Обычно слой использующийся для механизма внимания представляет собой обычную, чаще всего однослойную, нейронную сеть на вход которой подаются ht,t=1 m, а также вектор d в котором содержится некий контекст зависящий от конкретно задачи (пример d для задачи машинного перевода использующего Seq2Seq арихитектуру).

Выходом данного слоя будет являтся вектор s (англ. score) — оценки на основании которых на скрытое состояние hi будет "обращено внимание".

Далее для нормализации значений s используется softmax[1]. Тогда e=softmax(s)

softmax здесь используется благодоря своим свойствам:

  • s: ni=1softmax(s)i=1,
  • s, i: softmax(s)i>=0

Далее считается c (англ. context vector)

с=mi=1eihi

Результатом работы слоя внимания является c который, содержит в себе информацию обо всех скрытых состоянях hi пропорционально оценке ei.

Пример использования для архитектуры Seq2Seq

Пример добавления механизма внимания в Seq2Seq сеть поможет лучше понять его предназначение. Изначально в оригинальной статье[2] применяется механизм внимания в контексте именно Seq2Seq сети.

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

Базовая архитектура Seq2Seq

Пример работы базовой Seq2Seq сети

Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре Seq2Seq.

Seq2Seq состоит из двух RNNЭнкодера и Декодера.

Энкодер — принимает предложение на языке A и сжимает его в вектор скрытого состояния.

Декодер — выдает слово на языке B, принимает последнее скрытое состояние энкодера и предыдущее предыдущее предсказаное слово.


Рассмотрим пример работы Seq2Seq сети:

xi — слова в предложении на языке A.

hi — скрытое состояние энкодера.

Блоки энкодера (зеленый) — блоки энкодера получающие на вход xi и передающие скрытое состояние hi на следующую итерацию.

di — скрытое состояние декодера.

yi — слова в предложении на языке B.

Блоки декодера (фиолетовый) — блоки декодера получающие на вход yi1 или специальный токен start в случае первой итерации и возвращаюшие yi — слова в предложении на языке B. Передают di — скрытое состояние декодера на следующую итерацию. Перевод считается завершенным при yi, равном специальному токену end.

Применение механизма внимания для Seq2Seq

При добавлении механизма в данную архитектуру между RNN Энкодер и Декодер слоя механизма внимания получится следуюшая схема:

Пример работы Seq2Seq сети с механизмом внимания

Здесь xi,hi,di,yi имееют те же назначения, что и в варианте без механизма внимания.

Аггрегатор скрытых состояний энкодера (желтый) — аггрегирует в себе все вектора hi и возвращает всю последовательность векторов h=[h1,h2,h3,h4].

ci — вектор контекста на итерации i.

Блоки механизма внимания (красный) — механизм внимания. Принимает h и di1, возвращает ci.

Блоки декодера (фиолетовый) — по сравнению с обычной Seq2Seq сетью меняются входные данные. Теперь на итерации i на вход подается не yi1, а конкатенация yi1 и ci.

Таким образом при помощи механизма внимания достигается "фокусирование" декодера на определенных скрытых состояниях. В случаях машинного перевода эта возможность помогает декодеру предсказывать на какие скрытые сосояния при исходных определенных словах на языке A необходимо обратить больше внимания при переводе данного слова на язык B.

См. также

Источники информации

Примечания