Трехэтапное понимание — рекуррентный блок с вентиляцией (GRU), реализация TensorFlow

машинное обучение

1. Что такое ГРУ

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

** Предложена закрытая рекуррентная нейронная сеть для лучшего захвата зависимостей с большими временными шагами во временных рядах. ** Он контролирует поток информации через ворота, которые можно изучить. Среди них рекуррентная нейронная сеть с вентилируемым входом (GRU) — широко используемая рекуррентная нейронная сеть с вентилируемым входом.

2. Блок управления циклом

2.1 Сбросить ворота и обновить ворота

GRU Вводит концепцию шлюза сброса и шлюза обновления, которая изменяет способ вычисления скрытых состояний в рекуррентных нейронных сетях.

Входы в вентиль сброса и вентиль обновления в вентилируемом рекуррентном блоке являются входными данными текущего временного шага.X_tСкрыть состояние с предыдущего временного шагаH_{t-1}, выход вычисляется полносвязным слоем, функция активации которого является сигмовидной функцией. Как показано ниже:

В частности, если предположить, что количество скрытых единиц равно h, мини-пакетный ввод на заданном временном шаге tX_t\in_{}\mathbb{R}^{n*d}(количество выборок равно n, количество входов равно d) и скрытое состояние предыдущего временного шагаH_{t-1}\in_{}\mathbb{R}^{n*h}. сбросить порталH_t\in_{}\mathbb{R}^{n*h}и обновить порталZ_t\in_{}\mathbb{R}^{n*h}рассчитывается следующим образом:

R_t=\sigma(X_tW_{xr}+H_{t-1}W_{hr}+b_r)
Z_t=\sigma(X_tW_{xz}+H_{t-1}W_{hz}+b_z)

Сигмовидная функция может преобразовывать значение элемента между 0 и 1. Поэтому сбросьте воротаR_tи обновить порталZ_tДиапазон каждого элемента равен [0*,*1].

2.2 Возможные скрытые состояния

Затем блок контура управления будет вычислять возможные скрытые состояния, чтобы помочь в последующих вычислениях скрытых состояний. Мы умножаем выход вентиля сброса на текущем временном шаге на скрытое состояние предыдущего временного шага поэлементно (символ). Если значение элемента в вентиле сброса близко к 0, это означает, что соответствующий элемент скрытого состояния сбрасывается в 0, то есть скрытое состояние предыдущего временного шага отбрасывается. Если значение элемента близко к 1, это означает сохранение скрытого состояния предыдущего временного шага. Затем результат поэлементного умножения объединяется с вводом текущего временного шага, и потенциальное скрытое состояние вычисляется через полносвязный слой с функцией активации tanh, а диапазон значений всех элементов составляет [-1 , 1].

В частности, возможные скрытые состояния на временном шаге t\tilde{H}\in_{}\mathbb{R}^{n*h}рассчитывается как:

\tilde{H}_t=tanh(X_tW_{xh}+(R_t⊙H_{t-1})W_{hh}+b_h)

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

2.3 Скрытое состояние

Наконец, временной шагtскрытое состояниеH_t\in_{}\mathbb{R}^{n*h}рассчитывается с помощью портала обновлений для текущего временного шагаZ_tв скрытое состояние предыдущего временного шагаH_{t-1}и возможные скрытые состояния на текущем временном шаге\tilde{H}_tСоставьте комбинацию:

Стоит отметить, что **ворота обновления управляют тем, как скрытое состояние должно обновляться скрытыми состояниями-кандидатами, которые содержат информацию о текущем временном шаге**, как показано выше. Предположим, что ворота обновления находятся на временном шагеt^{′}到t(t^{′}<t)всегда было примерно 1. Затем на шаге по времениt^{′}到tВходная информация между t и t едва ли переходит в скрытое состояние на временном шаге t.H_tПо сути, это можно рассматривать как скрытое состояние в более ранний момент.H_{t^{′}-1}Сохранить время и пройти к текущему времени шаг т. Этот дизайн может справиться с проблемой распада градиента в рекуррентных нейронных сетях и лучшим захватам зависимостям с большим временным шагом на временной серии.

Кратко резюмируем конструкцию блока контура управления:

  • Ворота сброса помогают фиксировать краткосрочные зависимости во временных рядах;
  • Портал обновлений помогает фиксировать долгосрочные зависимости временных рядов.

3. Код для реализации ГРУ

MNIST--ГРУ реализация

Машинное обучение легко понять серия статей

3.png

4. Ссылки

«Практическое обучение — глубокое обучение»


автор:@mantchs

Гитхаб:GitHub.com/NLP-love/ml…

Приглашаются все желающие присоединиться к обсуждению! Улучшайте этот проект вместе! Номер группы: [541954936]NLP面试学习群