Участник:Gpevnev — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 21: Строка 21:
  
 
=== Базовая архитектура Seq2Seq ===
 
=== Базовая архитектура Seq2Seq ===
[[File:Seq2SeqBasic.png|350px|thumb|Пример работы базовой Seq2Seq сети]]
 
 
Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре ''Seq2Seq''.
 
Данный пример рассматривает применение механизма внимания в задаче машинного перевода в применении к архитектуре ''Seq2Seq''.
  
Строка 31: Строка 30:
  
  
 +
[[File:Seq2SeqBasic.png|350px|thumb|left|Пример работы базовой Seq2Seq сети]]
 
Рассмотрим пример работы Seq2Seq сети:
 
Рассмотрим пример работы Seq2Seq сети:
  
 +
''Encoder'' {{---}} зеленые блоки
 +
 +
''Decoder'' {{---}} фиолетовые блоки
  
 
<math>x_i</math> {{---}} слова в предложении на языке ''A''  
 
<math>x_i</math> {{---}} слова в предложении на языке ''A''  
Строка 41: Строка 44:
  
 
<math>y_i</math> {{---}} слова в предложении на языке ''B''
 
<math>y_i</math> {{---}} слова в предложении на языке ''B''
 +
 +
Нужно также заметить, что <math>h_4</math> в данном примере подается не на вход декодеру, а является его изначальным скрытым состоянием.
 +
 +
Из-за того, что при обраоботке первого слова еше нет предыдущено на вход декодеру необходимо подавать специальный вектор, означаюший начало предложения.
  
  

Версия 15:35, 21 марта 2020

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

Изначально механизм внимания был представлен в статье Machine Translation by Jointly Learning to Align and Translate и предполагал применение именно в Seq2Seq сетях, и лишь позже был использован применительно к изображениям Attend and Tell: Neural Image Caption Generation with Visual Attention.

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

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

Рекуррентные нейронные сети используются при обработке данных, для которых важна их последовательность. В классическом случае применения РНН как результат используется только последнее скрытое состояние [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]s[/math] - оценки на основании которых на скрытое состояние [math]h_i[/math] будет "обращено внимание".

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

Далее считается [math]СV[/math] (англ. context vector) [math]СV = \sum_1^m e_i h_i[/math]

Резултатом работы слоя внимания является [math]CV[/math] который содержит в себе информацию обо всех скрытых состоянях [math]h_i[/math] пропорционально оценке [math]e_i[/math].

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

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

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

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

Seq2Seq состоит из двух РНН - Encoder и Decoder.

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

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


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

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

Encoder — зеленые блоки

Decoder — фиолетовые блоки

[math]x_i[/math] — слова в предложении на языке A

[math]h_i[/math] — скрытое состояние энкодера

[math]d_i[/math] — скрытое состояние декодера

[math]y_i[/math] — слова в предложении на языке B

Нужно также заметить, что [math]h_4[/math] в данном примере подается не на вход декодеру, а является его изначальным скрытым состоянием.

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


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

При добавлении механизма в данную архитектуру между РНН Encoder и Decoder слоя механизма внимания получтится следуюшая схема:

См. также

Примечания