Механизм внимания — различия между версиями
Gpevnev (обсуждение | вклад) |
Gpevnev (обсуждение | вклад) |
||
Строка 34: | Строка 34: | ||
Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре ''Seq2Seq''. | Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре ''Seq2Seq''. | ||
− | ''Seq2Seq'' состоит из двух [[:Рекуррентные_нейронные_сети|RNN]] {{---}} '' | + | ''Seq2Seq'' состоит из двух [[:Рекуррентные_нейронные_сети|RNN]] {{---}} ''Энкодера'' и ''Декодера''. |
− | '' | + | ''Энкодер'' {{---}} принимает предложение на языке ''A'' и сжимает его в вектор скрытого состояния. |
− | '' | + | ''Декодер'' {{---}} выдает слово на языке ''B'', принимает последнее скрытое состояние энкодера и предыдущее предыдущее предсказаное слово. |
Строка 58: | Строка 58: | ||
=== Применение механизма внимания для ''Seq2Seq'' === | === Применение механизма внимания для ''Seq2Seq'' === | ||
− | При добавлении механизма в данную архитектуру между [[:Рекуррентные_нейронные_сети|RNN]] '' | + | При добавлении механизма в данную архитектуру между [[:Рекуррентные_нейронные_сети|RNN]] ''Энкодер'' и ''Декодер'' слоя механизма внимания получится следуюшая схема: |
[[File:Seq2SeqAttention.png|450px|thumb|Пример работы ''Seq2Seq'' сети с механизмом внимания]] | [[File:Seq2SeqAttention.png|450px|thumb|Пример работы ''Seq2Seq'' сети с механизмом внимания]] | ||
Строка 79: | Строка 79: | ||
*[[:Рекуррентные_нейронные_сети|Рекуррентные нейронные сети]] | *[[:Рекуррентные_нейронные_сети|Рекуррентные нейронные сети]] | ||
− | ==Источники== | + | ==Источники информации== |
*[https://www.coursera.org/lecture/nlp-sequence-models/attention-model-lSwVa Лекция Andrew Ng о механизме внимания в NLP] | *[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''] | *[https://towardsdatascience.com/intuitive-understanding-of-attention-mechanism-in-deep-learning-6c9482aecf4f Статья с подробно разборанными примерами и кодом на ''Python'' и ''TensorFlow''] |
Версия 00:58, 22 марта 2020
Механизм внимания в рекуррентных нейронных сетях (англ. attention mechanism, attention model) — дополнительный слой используемый в рекуррентных нейронных сетях (сокращенно RNN) для "обращения внимания" последующих слоев сети на скрытое состояние нейронной сети в момент времени .
Изначально механизм внимания был представлен в статье описывыющей данную технику и ее применение именно в Seq2Seq сетях, и лишь позже был использован в статье применительно к генерации описания изображений.
Содержание
Обобщенное описание
Рекуррентные нейронные сети используются при обработке данных, для которых важна их последовательность. В классическом случае применения RNN результатом является только последнее скрытое состояние , где — длина последовательности входных данных. Использование механизма внимания позволяет использовать информацию полученную не только из последнего скрытого состояниния, но и любого скрытого состояния для любого .
Обычно слой использующийся для механизма внимания представляет собой обычную, чаще всего однослойную, нейронную сеть на вход которой подаются
, а также вектор в котором содержится некий контекст зависящий от конкретно задачи (пример для задачи машинного перевода использующего Seq2Seq арихитектуру).Выходом данного слоя будет являтся вектор
(англ. score) — оценки на основании которых на скрытое состояние будет "обращено внимание".Далее для нормализации значений
используется . Тогдаздесь используется благодоря своим свойствам:
Далее считается
(англ. context vector)
Результатом работы слоя внимания является
который, содержит в себе информацию обо всех скрытых состоянях пропорционально оценке .Пример использования для архитектуры Seq2Seq
Пример добавления механизма внимания в Seq2Seq сеть поможет лучше понять его предназначение. Изначально в оригинальной статье[1] применяется механизм внимания в контексте именно Seq2Seq сети.
Несмотря на то, что нейронные сети рассматриваются как "черный ящик" и интерпретировать их внутренности в понятных человеку терминах часто невозможно, все же механизм внимания интуитивно понятный людям смог улучшить результаты машинного перевода для алгоритма используемого в статье.
Базовая архитектура Seq2Seq
Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре Seq2Seq.
Seq2Seq состоит из двух RNN — Энкодера и Декодера.
Энкодер — принимает предложение на языке A и сжимает его в вектор скрытого состояния.
Декодер — выдает слово на языке B, принимает последнее скрытое состояние энкодера и предыдущее предыдущее предсказаное слово.
Рассмотрим пример работы Seq2Seq сети:
— слова в предложении на языке A.
— скрытое состояние энкодера.
Блоки энкодера (зеленый) — блоки энкодера получающие на вход
и передающие скрытое состояние на следующую итерацию.— скрытое состояние декодера.
— слова в предложении на языке B.
Блоки декодера (фиолетовый) — блоки декодера получающие на вход
или специальный токен start в случае первой итерации и возвращаюшие — слова в предложении на языке B. Передают — скрытое состояние декодера на следующую итерацию. Перевод считается завершенным при , равном специальному токену end.Применение механизма внимания для Seq2Seq
При добавлении механизма в данную архитектуру между RNN Энкодер и Декодер слоя механизма внимания получится следуюшая схема:
Здесь
имееют те же назначения, что и в варианте без механизма внимания.Аггрегатор скрытых состояний энкодера (желтый) — аггрегирует в себе все вектора
и возвращает всю последовательность векторов .— вектор контекста на итерации .
Блоки механизма внимания (красный) — механизм внимания. Принимает
и , возвращает .Блоки декодера (фиолетовый) — по сравнению с обычной Seq2Seq сетью меняются входные данные. Теперь на итерации
на вход подается не , а конкатенация и .Таким образом при помощи механизма внимания достигается "фокусирование" декодера на определенных скрытых состояниях. В случаях машинного перевода эта возможность помогает декодеру предсказывать на какие скрытые сосояния при исходных определенных словах на языке A необходимо обратить больше внимания при переводе данного слова на язык B.
См. также
Источники информации
- Лекция Andrew Ng о механизме внимания в NLP
- Статья с подробно разборанными примерами и кодом на Python и TensorFlow