Изменения

Перейти к: навигация, поиск

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

222 байта добавлено, 14:06, 22 марта 2020
Нет описания правки
(или проще для "обращения внимания" на определенные части входных данных в зависимости от текущего контекста. (как лучше?))
Изначально механизм внимания был представлен в контексте [[:Рекуррентные_нейронные_сети|рекуррентных]] ''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>https://arxiv.org/abs/1805.08318</ref>.
==Обобщенный механизм внимания==
'''Обобщенный механизм внимания''' (англ. general attention) {{---}} один из видов внимания, при котором выясняются закономерности между входными и выходными данными.Изначально механизм внимания представленный в оригинальной подразумевал именно этот тип внимания.
===Пример использования обобщенного механизма внимания для задачи машинного перевода===
''Декодер'' {{---}} выдает слово на языке ''B'', принимает последнее скрытое состояние энкодера и предыдущее предыдущее предсказанное слово.
 
Рассмотрим пример работы ''Seq2seq'' сети:
Несмотря на то, что нейронные сети рассматриваются как "черный ящик" и интерпретировать их внутренности в понятных человеку терминах часто невозможно, все же механизм внимания интуитивно понятный людям смог улучшить качество машинного перевода базового ''Seq2seq'' алгоритма.
Успех этого использования этого подхода в задаче машинного перевода обусловлен лучшим выводом закономерностей между словами находящимися на большом расстоянии друг от друга. Несмотря на то, что ''[[:Долгая_краткосрочная_память|LSTM'' и ''GRU'' ]] блоки используются именно для улучшения передачи информации с предыдущих итераций ''[[:Рекуррентные_нейронные_сети|RNN'' ]] их основная проблема заключается в том, что влияние предыдущих состояний на текущее уменьшается экспоненциально от расстояния между словами, в то же время механизм внимания улучшает этот показатель до линейного<ref>https://towardsdatascience.com/transformers-141e32e69591</ref>.
[[:Рекуррентные_нейронные_сети|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> в котором содержится некий контекст зависящий от конкретной задачи.
В случае ''Seq2seq'' сетей вектором <math>d</math> будет являться скрытое состояние <math>d_{i-1}</math> предыдущей итерации декодера.
=====Применение механизма внимания к базовой ''Seq2seq'' архитектуре=====
[[File:Seq2SeqAttention.png|450px|thumb|Пример работы ''Seq2seq'' сети с механизмом внимания]]
При добавлении механизма в данную архитектуру между [[:Рекуррентные_нейронные_сети|RNN]] ''ЭнкодерЭнкодером'' и ''ДекодерДекодером'' слоя механизма внимания получится следующая схема:
Здесь <math>x_i, h_i, d_i, y_i</math> имеют те же назначения, что и в варианте без механизма внимания.
<math>c_i</math> {{---}} вектор контекста на итерации <math>i</math>.
''Блоки механизма внимания (красный)'' {{---}} механизм внимания. Принимает принимает <math>h</math> и <math>d_{i - 1}</math>, возвращает <math>c_i</math>.
''Блоки декодера (фиолетовый)'' {{---}} по сравнению с обычной ''Seq2seq'' сетью меняются входные данные. Теперь на итерации <math>i</math> на вход подается не <math>y_{i-1}</math>, а конкатенация <math>y_{i-1}</math> и <math>c_i</math>.
Таким образом при помощи механизма внимания достигается "фокусирование" декодера на определенных скрытых состояниях. В случаях машинного перевода эта возможность помогает декодеру предсказывать на какие скрытые состояния при исходных определенных словах на языке ''A'' необходимо обратить больше внимания при переводе данного слова на язык ''B''. То есть на какие слова из исходного текста обратить внимание при переводе конкретного слова на язык назначения.
==Self-Attention==
162
правки

Навигация