Участник:Gpevnev — различия между версиями
Gpevnev (обсуждение | вклад) |
Gpevnev (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
'''Механизм внимания в рекуррентных нейронных сетях''' (англ. ''attention mechanism'', ''attention model'') {{---}} дополнительный слой используемый в [[:Рекуррентные_нейронные_сети|рекуррентных нейронных сетях]] для "обращения внимания" последующих слоев сети на скрытое состояние нейронной сети <math>h_t</math> в момент времени <math>t</math>. | '''Механизм внимания в рекуррентных нейронных сетях''' (англ. ''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]. | ||
== Обобщенное описание == | == Обобщенное описание == | ||
+ | [[File:AttentionGeneral.png|350px|thumb|Обобщенное описание механизма внимания]] | ||
[[:Рекуррентные_нейронные_сети|Рекуррентные нейронные сети]] используются при обработке данных, для которых важна их последовательность. В классическом случае применения [[:Рекуррентные_нейронные_сети|РНН]] как результат используется только последнее скрытое состояние <math>h_m</math>, где <math>m</math> - длинна последовательности входных данных. Использование механизма внимания позволяет использовать информацию полученную не только из последнего скрытого состояниния, но и из скрытого расстояния <math>h_t</math> для любого <math>t</math>. | [[:Рекуррентные_нейронные_сети|Рекуррентные нейронные сети]] используются при обработке данных, для которых важна их последовательность. В классическом случае применения [[:Рекуррентные_нейронные_сети|РНН]] как результат используется только последнее скрытое состояние <math>h_m</math>, где <math>m</math> - длинна последовательности входных данных. Использование механизма внимания позволяет использовать информацию полученную не только из последнего скрытого состояниния, но и из скрытого расстояния <math>h_t</math> для любого <math>t</math>. | ||
Обычно слой использующийся для механизма внимания представляет собой обычную, чаще всего однослойную нейронную сеть на вход которой подаются <math>h_t, t = 1 \ldots m</math>, а также вектор <math>d</math> в котором содержится некий контекст зависящий от конкретно задачи (пример <math>d</math> для задачи машинного перевода использующего ''Seq2Seq'' арихитектуру есть ниже). | Обычно слой использующийся для механизма внимания представляет собой обычную, чаще всего однослойную нейронную сеть на вход которой подаются <math>h_t, t = 1 \ldots m</math>, а также вектор <math>d</math> в котором содержится некий контекст зависящий от конкретно задачи (пример <math>d</math> для задачи машинного перевода использующего ''Seq2Seq'' арихитектуру есть ниже). | ||
− | Выходом данного слоя будет являтся | + | Выходом данного слоя будет являтся вектор <math>s</math> - оценки на основании которых на скрытое состояние <math>h_i</math> будет "обращено внимание". |
Далее для нормализации значений <math>s</math> используется <math>softmax</math>. Тогда <math>e = softmax(s)</math> | Далее для нормализации значений <math>s</math> используется <math>softmax</math>. Тогда <math>e = softmax(s)</math> | ||
Строка 15: | Строка 18: | ||
== Пример использования для архитектуры Seq2Seq == | == Пример использования для архитектуры Seq2Seq == | ||
+ | Из-за интуитивной понятности механизма внимания для проблемы машинного перевода, а также поскольку в оригинальной статье рассматривается механизм внимания применительно именно к Seq2Seq сетям. Пример добавления механизма внимания в Seq2Seq сеть поможет лучше понять его предназначение. | ||
+ | |||
=== Базовая архитектура Seq2Seq === | === Базовая архитектура Seq2Seq === | ||
− | + | [[File:Seq2SeqBasic.png|350px|thumb|Пример работы базовой Seq2Seq сети]] | |
− | [[File:Seq2SeqBasic.png| | ||
− | |||
Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре ''Seq2Seq''. | Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре ''Seq2Seq''. | ||
− | ''Seq2Seq'' состоит из двух [[:Рекуррентные_нейронные_сети|РНН]] - ''Encoder'' и ''Decoder''. | + | ''Seq2Seq'' состоит из двух [[:Рекуррентные_нейронные_сети|РНН]] - ''Encoder'' и ''Decoder''. |
''Encoder'' {{---}} принимает предложение на языке ''A'' и сжимает его в вектор скрытого состояния. | ''Encoder'' {{---}} принимает предложение на языке ''A'' и сжимает его в вектор скрытого состояния. | ||
+ | |||
''Decoder'' {{---}} выдает слово на языке ''B'', принимает последнее скрытое состояние из энкодера и предыдущее предыдущее предсказаное слово. | ''Decoder'' {{---}} выдает слово на языке ''B'', принимает последнее скрытое состояние из энкодера и предыдущее предыдущее предсказаное слово. | ||
− | При добавлении механизма в данную архитектуру между [[:Рекуррентные_нейронные_сети|РНН]] ''Encoder'' и ''Decoder'' слоя механизма внимания | + | Рассмотрим пример работы Seq2Seq сети: |
+ | |||
+ | |||
+ | <math>x_i</math> {{---}} слова в предложении на языке ''A'' | ||
+ | |||
+ | <math>h_i</math> {{---}} скрытое состояние энкодера | ||
+ | |||
+ | <math>d_i</math> {{---}} скрытое состояние декодера | ||
+ | |||
+ | <math>y_i</math> {{---}} слова в предложении на языке ''B'' | ||
+ | |||
+ | |||
+ | |||
+ | === Применение механизма внимания для Seq2Seq === | ||
+ | При добавлении механизма в данную архитектуру между [[:Рекуррентные_нейронные_сети|РНН]] ''Encoder'' и ''Decoder'' слоя механизма внимания получтится следуюшая схема: | ||
==См. также== | ==См. также== |
Версия 15:26, 21 марта 2020
Механизм внимания в рекуррентных нейронных сетях (англ. attention mechanism, attention model) — дополнительный слой используемый в рекуррентных нейронных сетях для "обращения внимания" последующих слоев сети на скрытое состояние нейронной сети в момент времени .
Изначально механизм внимания был представлен в статье Machine Translation by Jointly Learning to Align and Translate и предполагал применение именно в Seq2Seq сетях, и лишь позже был использован применительно к изображениям Attend and Tell: Neural Image Caption Generation with Visual Attention.
Содержание
Обобщенное описание
Рекуррентные нейронные сети используются при обработке данных, для которых важна их последовательность. В классическом случае применения РНН как результат используется только последнее скрытое состояние , где - длинна последовательности входных данных. Использование механизма внимания позволяет использовать информацию полученную не только из последнего скрытого состояниния, но и из скрытого расстояния для любого .
Обычно слой использующийся для механизма внимания представляет собой обычную, чаще всего однослойную нейронную сеть на вход которой подаются
, а также вектор в котором содержится некий контекст зависящий от конкретно задачи (пример для задачи машинного перевода использующего Seq2Seq арихитектуру есть ниже).Выходом данного слоя будет являтся вектор
- оценки на основании которых на скрытое состояние будет "обращено внимание".Далее для нормализации значений
используется . ТогдаДалее считается
(англ. context vector)Резултатом работы слоя внимания является
который содержит в себе информацию обо всех скрытых состоянях пропорционально оценке .Пример использования для архитектуры Seq2Seq
Из-за интуитивной понятности механизма внимания для проблемы машинного перевода, а также поскольку в оригинальной статье рассматривается механизм внимания применительно именно к Seq2Seq сетям. Пример добавления механизма внимания в Seq2Seq сеть поможет лучше понять его предназначение.
Базовая архитектура Seq2Seq
Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре Seq2Seq.
Seq2Seq состоит из двух РНН - Encoder и Decoder.
Encoder — принимает предложение на языке A и сжимает его в вектор скрытого состояния.
Decoder — выдает слово на языке B, принимает последнее скрытое состояние из энкодера и предыдущее предыдущее предсказаное слово.
Рассмотрим пример работы Seq2Seq сети:
— слова в предложении на языке A
— скрытое состояние энкодера
— скрытое состояние декодера
— слова в предложении на языке B
Применение механизма внимания для Seq2Seq
При добавлении механизма в данную архитектуру между РНН Encoder и Decoder слоя механизма внимания получтится следуюшая схема: