162
правки
Изменения
Нет описания правки
'''Механизм внимания в рекуррентных нейронных сетях''' (англ. ''attention mechanism'', ''attention model'') {{---}} дополнительный слой используемый в [[:Рекуррентные_нейронные_сети|рекуррентных нейронных сетях]] для "обращения внимания" последующих слоев сети на скрытое состояние нейронной сети <math>h_t</math> в момент времени <math>t</math>.
Изначально механизм внимания был представлен в статье [https://arxiv.org/abs/1409.0473|Neural Machine Translation by Jointly Learning to Align and Translate] и предполагал применение именно в ''Seq2Seq '' сетях, и лишь позже был использован применительно к изображениям [https://arxiv.org/abs/1502.03044|Show, Attend and Tell: Neural Image Caption Generation with Visual Attention].
== Обобщенное описание ==
Результатом работы слоя внимания является <math>CV</math> который, содержит в себе информацию обо всех скрытых состоянях <math>h_i</math> пропорционально оценке <math>e_i</math>.
== Пример использования для архитектуры ''Seq2Seq '' ==Из-за интуитивной понятности механизма внимания для проблемы машинного перевода, а также поскольку в оригинальной статье рассматривается механизм внимания применительно именно к ''Seq2Seq '' сетям. Пример добавления механизма внимания в ''Seq2Seq '' сеть поможет лучше понять его предназначение.
Несмотря на то, что нейронные сети рассматриваются как "черный ящик" и интерпретировать их внутренности в понятных человеку терминах часто невозможно, все же механизм внимания интуитивно понятный людям смог улучшить результаты машинного перевода для алгоритма используемого в статье.
=== Базовая архитектура ''Seq2Seq '' ===[[File:Seq2SeqBasic.png|450px|thumb|Пример работы базовой ''Seq2Seq'' сети]]
Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре ''Seq2Seq''.
Рассмотрим пример работы ''Seq2Seq '' сети: [[File:Seq2SeqBasic.png|450px|thumb|Пример работы базовой Seq2Seq сети]]
<math>x_i</math> {{---}} слова в предложении на языке ''A''.
Перевод считается завершенным при <math>y_i</math>, равном специальному токену '''end'''.
=== Применение механизма внимания для ''Seq2Seq '' ===
При добавлении механизма в данную архитектуру между [[:Рекуррентные_нейронные_сети|РНН]] ''Encoder'' и ''Decoder'' слоя механизма внимания получится следуюшая схема:
[[File:Seq2SeqAttention.png|450px|thumb|Пример работы ''Seq2Seq '' сети с механизмом внимания]]
Здесь <math>x_i, h_i, d_i, y_i</math> имееют те же назначения, что и в варианте без механизма внимания.
Таким образом при помощи механизма внимания достигается "фокусирование" декодера на определенных скрытых состояниях. В случаях машинного перевода эта возможность помогает декодеру предсказывать на какие скрытые сосояния при исходных определенных словах на языке ''A'' необходимо обратить больше внимания при переводе данного слова на язык ''B''.
==См. также==
*[[:Нейронные_сети,_перцептрон|Нейронные сети, перцептрон]]
*[[:Рекуррентные_нейронные_сети|Рекуррентные нейронные сети]]
==Источники==
*[https://arxiv.org/abs/1409.0473 Neural Machine Translation by Jointly Learning to Align and Translate. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio]
*[https://arxiv.org/abs/1502.03044 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. Kelvin Xu, Jimmy Ba, Ryan Kiros, Kyunghyun Cho, Aaron Courville, Ruslan Salakhutdinov, Richard Zemel, Yoshua Bengio]
*[https://www.coursera.org/lecture/nlp-sequence-models/attention-model-lSwVa Лекция Andrew Ng о механизме внимания в NLP]
*[https://towardsdatascience.com/intuitive-understanding-of-attention-mechanism-in-deep-learning-6c9482aecf4f Статья с подробно разборанными примерами и кодом на ''Python'' и ''TensorFlow'']
==Примечания==