[Концепции глубокого обучения] · Полностью иллюстрированные RNN, варианты RNN, Seq2Seq, механизм внимания

искусственный интеллект Python

Полностью иллюстрированный RNN, варианты RNN, Seq2Seq, механизм внимания

Я видел очень тщательностатья, отХэ Чжиюаньбольшая корова.подчеркнутая частьЭто мое собственное понимание и дополнение для справки. .

 

содержание

1. Начиная с однослойной сети

Во-вторых, классическая структура RNN (N vs N)

3. НВС 1

4. 1 ВС Н

5. Н против М

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

7. Резюме


В этой статье в основном используется форма изображений, чтобы подробно представить классическую RNN, несколько важных вариантов RNN, а также модель Seq2Seq и механизм Attention. Я надеюсь, что эта статья может дать свежий взгляд и помочь новичкам лучше начать работу.

1. Начиная с однослойной сети

Прежде чем изучать RNN, мы должны сначала понять самую простую однослойную сеть, ее структура показана на рисунке:

Вход — это x, а выход y получается путем преобразования Wx+b и функции активации f. Я полагаю, что вы уже хорошо знакомы с этим.

Во-вторых, классическая структура RNN (N vs N)

В практических приложениях мы также столкнемся с большим количеством последовательных данных:

 

 

как:

  • Проблемы обработки естественного языка. x1 можно рассматривать как первое слово, x2 можно рассматривать как второе слово и так далее.
  • обработка речи. В это время x1, x2, x3... являются звуковыми сигналами каждого кадра.
  • проблема временных рядов. такие как ежедневные курсы акций и т. д.

Данные в форме последовательности не так просто обрабатывать с помощью необработанных нейронных сетей. Чтобы моделировать проблемы с последовательностями, RNN вводит понятие скрытого состояния h (скрытого состояния), которое может извлекать признаки из данных в форме последовательности, а затем преобразовывать их в выходные данные. Начнем с расчета h1:

 

Значения символов на иллюстрации следующие:

  • Круги или квадраты представляют векторы.
  • Стрелка представляет преобразование вектора. Как показано на рисунке выше, h0 и x1 соответственно соединены стрелкой, что означает, что каждый из h0 и x1 преобразуется один раз.

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

Вычисление h2 аналогично вычислению h1. Следует отметить, что при расчетеПараметры U, W и b, используемые на каждом шаге, одинаковы, то есть параметры каждого шага являются общими, что является важной особенностью RNN и должно быть принято во внимание.

 

Остальное рассчитайте по очереди (используя те же параметры U, W, b):

 

Для удобства мы нарисуем только случай, когда длина последовательности равна 4. На самом деле этот процесс вычисления может продолжаться бесконечно.

Наша текущая RNN не имеет выходных данных, и способ получить выходное значение — вычислить напрямую через h:

Как было сказано ранее,Стрелка означает выполнение преобразования, аналогичного f(Wx+b), для соответствующего вектора, а здесь стрелка означает выполнение преобразования h1 для получения результата y1.

Остальная часть вывода выполняется аналогично (с использованием тех же параметров V и c, что и y1):

В ПОРЯДКЕ! Готово! Это самая классическая структура RNN, и мы устанавливаем ее как строительные блоки. Его входы x1, x2, .....xn, а выходы y1, y2, ...yn, то естьВходные и выходные последовательности должны быть одинаковой длины.

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

  • Вычислите классификационную метку для каждого кадра в видео. Входная и выходная последовательности имеют одинаковую длину, поскольку вычисления выполняются для каждого кадра.
  • Вход — это символ, а выход — вероятность появления следующего символа. Это знаменитый Char RNN (подробнее см.:The Unreasonable Effectiveness of Recurrent Neural Networks, Char RNN можно использовать для генерации статей, стихов и даже кода, очень интересно).

3. НВС 1

Иногда вход проблемы, с которой мы имеем дело, представляет собой последовательность, а выход — одно значение, а не последовательность Как мы должны ее моделировать? На самом деле, мы просто делаем выходное преобразование для последнего h и все:

 

Эта структура часто используется для решения проблем классификации последовательностей. Например, введите текст, чтобы определить категорию, к которой он принадлежит, введите предложение, чтобы определить его эмоциональную направленность, введите видео и определите его категорию и т. д.

4. 1 ВС Н

Как поступить в случае, когда ввод не является последовательностью, а вывод является последовательностью? Мы можем просто выполнить входные вычисления в начале последовательности:

 

Существует также структура, которая принимает входную информацию X в качестве входных данных каждого этапа:

 

На следующем рисунке пропущено несколько кружков X, и это эквивалентное представление:

Проблемы, с которыми может справиться эта структура 1 VS N:

  • Сгенерируйте текст из изображения (подпись к изображению), где вход X — это характеристика изображения, а выходная последовательность y — предложение.
  • Создание речи или музыки и т. д. из категорий

5. Н против М

Давайте представим один из самых важных вариантов RNN: N vs M. Эта структура также называется моделью кодировщика-декодера, которую также можно назвать моделью Seq2Seq.

Исходный N vs N RNN требует последовательностей одинаковой длины. Однако большинство проблемных последовательностей, с которыми мы сталкиваемся, имеют разную длину. Например, в машинном переводе предложения на исходном и целевом языках часто не имеют одинаковой длины.

С этой целью структура Encoder-Decoder сначала кодирует входные данные в вектор контекста c:

 

Есть много способов получить с. Самый простой способ — присвоить последнему скрытому состоянию кодировщика значение с. Вы также можете выполнить преобразование последнего скрытого состояния, чтобы получить с, и вы также можете преобразовать все скрытые состояния.

Получив c, используйте другую сеть RNN для его декодирования., эта часть сети RNN называется Декодером. Конкретный метод заключается в том, чтобы ввести c как предыдущее начальное состояние h0 в декодер:

 

Другой способ - использовать c в качестве входных данных для каждого шага:

 

Поскольку эта структура кодировщик-декодер не ограничивает длину последовательности ввода и вывода, она имеет широкий спектр приложений, таких как:

  • машинный перевод. Самое классическое применение Encoder-Decoder, фактически эта структура была впервые предложена в области машинного перевода.
  • Текстовое резюме. Входные данные представляют собой последовательность текста, а выходные данные представляют собой последовательность сводок последовательности текста.
  • Понимание прочитанного. Кодируйте входной артикль и вопрос отдельно, а затем декодируйте его, чтобы получить ответ на вопрос.
  • Распознавание речи. Вход представляет собой последовательность речевых сигналов, а выход — последовательность слов.
  • …………

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

В структуре Encoder-Decoder Encoder кодирует все входные последовательности в единый семантический признак c, а затем декодирует его.Следовательно, c должен содержать всю информацию исходной последовательности, и его длина становится узким местом, ограничивающим производительность модели.Например, в задаче машинного перевода, когда переводимое предложение длинное, c может хранить не так много информации, что приведет к снижению точности перевода.

Механизм Attention решает эту проблему, каждый раз вводя разные c. На следующем рисунке показан декодер с механизмом Attention:(акцент)

 

Каждый c будет автоматически выбирать наиболее подходящую контекстную информацию для текущего y для вывода. В частности, мы используемa_{ij}Измерьте корреляцию между hj j-го этапа в кодировщике и i-м этапом декодирования и, наконец, контекстной информацией входа i-го этапа в декодере.c_iОт всехh_j правильно a_{ij}Взвешенная сумма .(правильно h_j,a_{ij}Сумма продуктов )

Возьмем в качестве примера машинный перевод (перевод с китайского на английский):

 

 

Входная последовательность — «Я люблю Китай», поэтому h1, h2, h3 и h4 в кодировщике можно рассматривать как информацию, представленную «я», «люблю», «中» и «страна» соответственно. При переводе на английский язык первый контекст с1 должен быть наиболее релевантен слову «я», поэтому соответствующийa_{11}больше, и соответствующийa_{12},a_{13},a_{14}относительно невелика. c2 должно быть больше всего связано с «любовью», поэтому соответствующийa_{22}больше. Последний c3 больше всего связан с h3 и h4, поэтомуa_{33},a_{34}значение больше.

На данный момент, что касается модели «Внимание», у нас остался только один последний вопрос, а именно:эти весаa_{ij}Как это произошло?

По факту,a_{ij}Это также извлекается из модели, которая фактически связана со скрытым состоянием стадии i-1 Декодера и скрытым состоянием j-й стадии Кодировщика.

Возьмем приведенный выше пример машинного перевода в качестве примера.a_{1j}Расчет (в это время стрелка указывает на расчет h' иh_jсделать преобразование в то же время):(Как рассчитать - ключевая трудность)

 

 

a_{2j}Расчет:

 

a_{3j}Расчет:

Выше приведен весь процесс расчета модели Encoder-Decoder с вниманием.

7. Резюме

В этой статье в основном рассказывается о четырех классических моделях RNN: N vs N, N vs 1, 1 vs N и N vs M, а также о том, как использовать структуру Attention. надеюсь, это может оказать полезную помощь всем.

Some friends may find that there is no LSTM content. In fact, because LSTM is exactly the same as RNN from the outside, all the above structures are common to LSTM. If you want to understand the internal structure of LSTM, you can refer to эта статья:Understanding LSTM Networks, очень хорошо написано, рекомендуется к прочтению.