Глубокое понимание: рекуррентные нейронные сети (RNN)

искусственный интеллект
Глубокое понимание: рекуррентные нейронные сети (RNN)

Основы нейронной сети

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

111.jpg

После того, как модель нейронной сети обучена, во входном слое задается x, а в выходном слое можно получить конкретный y после прохождения через сеть.Раз есть такая мощная модель, зачем вам RNN (рекуррентная нейронная сеть)?

Зачем вам нужна RNN (рекуррентная нейронная сеть)

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

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

Для одной из самых простых задач по тегированию частей речи nlp обозначьте три слова, которые я ем яблоко, как I/nn ем/v яблоко/nn.

Тогда вход для этой задачи:

Я ем яблоки (предложение, которое было причастием)

Результат этой задачи:

I/nn ест/v яблоки/nn (предложения, помеченные частями речи)

Для этой задачи, конечно, мы можем сделать это напрямую с обычными нейронными сетями.Формат обучающих данных для сети представляет собой несколько отдельных слов, таких как I->I/nn->Слова, помеченные частями речи.

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

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

Структура РНС

Давайте сначала посмотрим на простую рекуррентную нейронную сеть, например, она состоит из входного слоя, скрытого слоя и выходного слоя:

20w.jpg

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

Мы теперь понимаем это так, если убрать кружок со стрелкой с буквой W, он станет самым распространеннымПолностью подключенная нейронная сеть. x представляет собой вектор, представляющийвходной слойзначение (круги, обозначающие нейронные узлы, не нарисованы); s — вектор, представляющийскрытый слой(здесь скрытый слой рисует узел, также можно представить, что этот слой на самом деле состоит из нескольких узлов, и количество узлов совпадает с размерностью вектора s);

U - входной слой для скрытого слоявесовая матрица, o также является вектором, он представляетвыходной слойЗначение ; V - это скрытый слой для выходного слоявесовая матрица.

Итак, теперь давайте посмотрим, что такое W.Рекуррентная нейронная сетьизскрытый слойзначение с不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s.весовая матрицаW этоскрытый слойПредыдущее значение используется в качестве веса этого входа.

Приведем конкретную диаграмму, соответствующую этой абстрактной диаграмме:

0_720w.jpg

На приведенном выше рисунке хорошо видно, как скрытый слой в предыдущий момент влияет на скрытый слой в текущий момент.

Если мы расширим приведенную выше диаграмму, рекуррентную нейронную сеть также можно нарисовать следующим образом:

675_720w.jpg

Диаграмма расширения временной шкалы RNN Теперь кажется очевидным, что сеть получает входные данные в момент времени t.XtX_tПосле этого значение скрытого слоя равноStS_t, выходное значениеOtO_t. Ключевым моментом является то,StS_tСтоимость зависит не только отXtX_t, также зависит отS(t1)S(t-1). Мы можем использовать следующую формулу, чтобы выразитьРекуррентная нейронная сетьМетод расчета:

Формула выражается следующим образом:

7_720w.png

формула РНН Суммировать

Формула 1давыходной слойФормула расчета , выходной слой представляет собойполносвязный слой, то есть каждый его узел соединен с каждым узлом скрытого слоя. V - выходной слойвесовая матрица, г естьфункция активации. Уравнение 2 — это формула расчета скрытого слоя, котораяпетлевой слой. U — весовая матрица входа x, W — последнее значениеS(t1)S_{(t-1)}как вход на этот развесовая матрица, ф естьфункция активации.

Из приведенной выше формулы мы видим, чтопетлевой слойиполносвязный слойРазница в том,循环层多了一个权重矩阵 W.

Если мы многократно подведем уравнение 2 к уравнению 1, мы получим:

213.PNG

Как видно из вышеизложенного,Рекуррентная нейронная сетьвыходное значениеoto_t, зависит от предыдущего входного значенияxtx_t,x(t1)x_{(t-1)},x(t2)x_{(t-2)},x(t3)x_{(t-3)}, ... вот почемуРекуррентная нейронная сетьВы можете смотреть вперед столько раз, сколько хотитевходное значениепричина.

Что ж, вот краткое введение в самые основные пункты знаний RNN, которые могут помочь вам интуитивно почувствовать RNN и понять, зачем нужна RNN, а затем обобщить пункты знаний о его обратном выводе.

Наконец, дается обзор RNN:

9a_720w.jpg

Примечание. Для простоты смещения не включены в формулу.

Двунаправленная рекуррентная нейронная сеть

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

Мой телефон сломался, и я собираюсь ____ купить новый телефон.

Можно предположить, что если смотреть только на слова перед горизонтальной чертой, телефон сломался, то я планирую его ремонтировать? Получить новый? Или плакать? Все это неопределенно. Но если мы также видим, что слово за горизонтальной чертой — это «новый мобильный телефон», то вероятность заполнения слова «купить» на горизонтальной черте значительно выше.

Базовая рекуррентная нейронная сеть из предыдущего подраздела не может это смоделировать, поэтому нам нужна двунаправленная рекуррентная нейронная сеть, как показано на следующем рисунке:

220.png

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

Как видно из рисунка выше, скрытому слою двунаправленной сверточной нейронной сети необходимо сохранить два значения, одно A участвует в прямом вычислении, а другое значение A' участвует в обратном вычислении. Окончательное выходное значение y2 зависит отA2A_2иA2'A{_2}'. Метод его расчета:

2121.PNG

A2A_2иA2'A{_2}'Затем рассчитать отдельно:

23323.PNG

Теперь мы уже видим общее правило: при прямом расчете значение скрытого слояsts_tиs(t+1)'s{_(t+1_)}'Актуально; при обратном расчете значение скрытого слоя связано с; конечный результат зависит от прямого и обратного расчетадобавить. Теперь мы моделируемФормула 1иФормула 2, напишите метод расчета двунаправленной рекуррентной нейронной сети:

245.PNG

Из приведенных выше трех формул мы видим, что прямой расчет и обратный расчетНе делитесь весами, то есть U и U', W и W', V и V' все разныевесовая матрица.

Глубокие рекуррентные нейронные сети

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

26.png

Обозначим значение i-го скрытого слоя какst(i)s_{t}^{(i)},st'(i)s_{t}^{'(i)}, метод расчета глубокой рекуррентной нейронной сети может быть выражен как:

1256.PNG