Рекуррентная нейросеть. Open Library - открытая библиотека учебной информации

26.03.2019

Человек не начинает каждый момент свое мышление с нуля. В то время, как вы читаете эту статью, вы воспринимаете каждое слово, основываясь на понимании значения предыдущих слов. Вы не забываете все и не начинаете анализировать каждое слово в отдельности. В целом, все ваши мысли имеют последствия (откладываются в памяти).

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

Рекуррентные сети направлены на исправление этого недостатка: они содержат циклы, которые позволяют сохранять информацию.

На рисунке выше, элемент нейронной сети A получает на вход некоторый вход x и возвращает значение h . Цикл позволяет информации передаваться к следующим шагам.

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

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

И, естественно, они используются. За последние несколько лет был достигнут значительный успех в применении рекуррентных нейронных сетей для распознавания речи, моделирования языка, перевода, распознавания изображений и других интересных вещей. Оставим размышления о способах применения рекуррентных сетей для Андрея Карпатого в его блоге: The Unreasonable Effectiveness of Recurrent Neural Networks .

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

Проблема долгосрочных зависимостей

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

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

Однако, иногда для решения задачи необходимо больше контекста. Например, для предсказания последнего слова во фразе «Я вырос во Франции. … Я свободно говорю по-Французски » непосредственно стоящие перед искомым словом слова говорят лишь о том, что следующее слово, наверняка, будет языком, но для его определения необходим более ранний контекст. Вполне вероятно, что разрыв между необходимым контекстом и искомым словом будет весьма велик.

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

Теоретически рекуррентные нейронные сети в состоянии обрабатывать такие долгосрочные зависимости (а человек может тщательно выбирать параметры для сети). Однако, на практике рекуррентные нейронные сети не в состоянии обучиться в таких задачах. Проблема была изучена специалистами Хохрайтером (1991) [Германия] и Бенджио и др.(1994) , которые определили фундаментальные причины сложности этой задачи.

Однако, LSTM сети не имеют такой проблемы.

LSTM сети

Долгая краткосрочная память (Long short-term memory), обычно называемая LSTM-сетями - это особый вид рекуррентных нейронных сетей, способных к запоминанию долговременных зависимостей. Они были введены Сеппом Хохрайтером и Юргеном Шмидхубером в 1997 году и были использованы и развиты многими исследователями в своих работах. Эти сети работают в широком спектре задач и довольно часто используются.

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

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

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

Повторяющиеся модули в LSTM-сети, содержащие 4 слоя

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

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

Базовая идея LSTM-сетей

Ключ к пониманию LSTM-сети - это состояние ячейки, горизонтальная линия, проходящая через верхнюю часть диаграммы.

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

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

Вентили - это способ ограничения прохождения информации. Они состоят из нейронного слоя с сигмовидной функцией активации и выполняют операцию поэлементного умножения.

Выход сигмоиды - это число от 0 до 1, обозначающее какая часть каждого элемента вектора будет пропущена далее. Значение 0 можно понимать, как «ничего не пропускать», в то время как значение 1 - «пропустить полностью»

LSTM имеют три таких элемента для защиты и контроля состояния ячейки.

Пошаговый анализ работы LSTM-сети

Первый шаг в LSTM сети - это решение, какую информацию необходимо выбросить из состояния ячейки. Решение формируется сигмовидным слоем называемым входным вентилем. Он обозначен, как \(h_{t-1}\) и \(x_{t}\) и имеют числовой выход со значением между 0 и 1 для каждой ячейки состояния \(C_{t-1}\). 1 обозначает «полностью сохранить», 0 - «полностью избавиться».

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

Следующим шагом необходимо определить, какая информация будет храниться в состоянии ячейки. Этот этап состоит из двух частей. Первая: входной вентиль должен определить какие значения будут обновляться, а tanh слой создает вектор новых кандидатов на значения \(\tilde C_t\), которые могут быть добавлены в состояние. На следующем шаге мы комбинируем два созданных вектора для обновления состояния.

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

Для реализации этого умножаем прошлое состояние на \(f_{t}\) для «забывания» данных признанных ненужными на прошлом шаге. Затем добавляется \(i_t * \tilde C_t\). Это новые значения значений, выбранные ранее для запоминания.

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

Наконец, мы должны решить, что будет на выходе ячейки. Этот выход формируется на базе состояния ячейки, но является его фильтрованной версией. Сначала запускается сигмоидный слой, определяющий какая часть состояния ячейки будет передана на выход. После чего состояние ячейки подается на функцию tanh (выходные значения между -1 и 1) и умножается на выход сигмовидного вентиля, определяющего частичность выхода состояния.

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

Вариации LSTM-сетей

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

Один из популярных варианты LSTM-сетей, введенный Gers & Schmidhuber (2000) добавляет «Глазки», что определяет возможность вентилям наблюдать за состоянием ячейки.

На диаграмме выше «глазки» добавлены для всех вентилей, однако во многих статьях «глазки» используются не для всех, а только для некоторых вентилей.

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

Чуть более серьезное изменение LSTM-сетей - Рекуррентный модуль с затворами (Gated Recurrent Unit) или GRU, введенные Cho, и др. (2014) . Этот подход комбинирует вентили «забывания» и входные вентили в единый вентиль обновления. Кроме того объединяется состояние и скрытое состояние ячейки и содержит некоторые другие менее значительные изменения. Полученная модель является более простой, чем классическая LSTM модель и становится все более популярной.

Это лишь некоторые вариации LSTM-модели. Существует множество других, таких как глубокие вентильные рекуррентные нейронные сети (Depth Gated RNNs) Yao и др. (2015) . Кроме того предлагаются принципиально иные подходы, такие как часовые нейронные сети (Clockwork RNNs) предложенные Koutnik и др. (2014) .

Какой из этих вариантов лучше? Имеются ли различия? Greff и др (2015) делая неплохое сравнение популярных вариантов, приходят к выводу о том, что они примерно одинаковы. Jozefowicz, и др. (2015) протестировав более 10 тысяч архитектур рекуррентных нейронных сетей, говорят о том, что некоторые из них работали лучше чем LSTM в специализированных задачах.

Заключение

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

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

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

Леонид Якубович 7 января 2016 в 15:24

Рекуррентная нейронная сеть решает задачу поддержания равновесия

  • Искусственный интеллект

Сразу постановка задачи.

Дано:
Примитивное виртуальное пространство для проведения эксперимента:
1. Аквариум высотой 1000 мм.
2. Дырявое дно аквариума. Уровень воды уменьшается на 1 мм за такт.
3. Стакан с водой, доливка которой в аквариум повышает уровень воды на 6 мм.

Также имеется заготовка нейронной сети, состоящая из:
1. 1000 рецепторов. По 1 рецептору на миллиметр.
2. 1 эффектор. Возбужденный в текущем такте, дает команду вылить стакан воды в аквариум.

Хотелось бы:
1. Добиться поддержания определенного нами уровня воды в аквариуме. Ну, или близко к нему. В текущем примере 500 мм.

Результат эксперимента:
На графике показан уровень воды с течением времени.

Укрупненный масштаб на старте эксперимента:

1. Стартуем со 100 мм уровня. Видно, что уровень воды неуклонно падает. Необученная заготовка нейросети просто не знает, что делать.
2. Достигнув нуля, т.е. иссушив аквариум, сеть запускает рефлекторную реакцию выливания порции воды.
3. Далее происходит рост уровня воды. Сеть получает поощрение, если уровень приблизился к требуемому. В противном случае - наказание.

Случайные дестабилизирующие воздействия:

4. Один раз в 1000 тактов происходит мощное дестабилизирующее воздействие на систему. Доливаем (выливаем) случайное количество воды.
5. Уровень воды в аквариуме стабилизируется.

Что происходит с сетью в процессе эксперимента:
1. Разрастается, создаются новые нейроны.
2. Синапсы обучаются.

Характеристики сети и ее структурных элементов:
1. Сеть - рекуррентная, возможны связи «на себя».
2. Синапсы, нейроны не удаляются.
3. Использовалось около 10000 нейронов и 500000 синапсов.
4. Сеть не использует математических функций над вещественным переменным. Из математики используется только суммирование целочисленных величин.

Что, собственно, предложено инновационного:
1. Способ обучения синапсов (остался за кадром, простите) .
2. Механизм добавления/удаления структурных элементов (за кадром) .
3. Ну и, в целом, не использующая математику, рекуррентная нейронная сеть.

Что еще необходимо реализовать:
1. Механизм уничтожения «бесполезных» синапсов и нейронов. В текущей реализации они вреда не приносят, но отнимают много времени на обсчет.
2. Визуализация нейросети была бы не лишней.
3. И все остальное… Пока не понятно, т.к. приходится быть последовательным.

Буду рад здоровой критике и вопросам!

Замечания:
1. Тема - хобби для меня.
2. Написано самостоятельно на C++.
3. ИИ будет чуть позже.

Спасибо!

Теги: нейронные сети, рекуррентная нейросеть, нейрон, синапс, пид-регулятор, искусственный интеллект

связь может исходить либо из выходного, либо из скрытого слоя нейронов. В каждом контуре такой связи присутствует элемент единичной задержки, благодаря которому поток сигналов может считаться однонаправленным (выходной сигнал предыдущего временного цикла рассматривается как априори заданный, который просто увеличивает размерность входного вектора сети). Представленная подобным образом рекуррентная сеть , с учетом способа формирования выходного сигнала, функционирует как однонаправленная персептронная сеть . Тем не менее, алгоритм обучения такой сети, адаптирующий значения синаптических весов, является более сложным из-за зависимости сигналов в момент времени от их значений в предыдущие моменты и соответственно из-за более громоздкой формулы для расчета вектора градиента.

При обсуждении рекуррентных сетей , в которых в качестве выходного элемента используется многослойный персептрон , рассмотрим наиболее известные структуры сетей RMLP , RTRN , Эльмана.

Персептронная сеть с обратной связью

Один из простейших способов построения рекуррентной сети на базе однонаправленной HC состоит во введении в персептронную сеть обратной связи. В дальнейшем мы будем сокращенно называть такую сеть RMLP (англ.: Recurrent MultiLayer Perceptron - рекуррентный многослойный персептрон ). Ее обобщенная структура представлена на рис. 1 ( - единичные элементы запаздывания ).

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

(1)

где - количество задержек входного сигнала, а - количество задержек выходного сигнала. Обозначим количество нейронов в скрытом слое. В этом случае сеть RMLP можно характеризовать тройкой чисел . Подаваемый на вход сети вектор имеет вид:

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

Сеть RMLP повсеместно применяется для моделирования динамических процессов в режиме " онлайн ". Типичным примером ее приложения может служить имитация нелинейных динамических объектов, для которых сеть

В нашем сегодняшнем материале мы напомним читателям о понятии искусственной нейронной сети (ИНС), а также о том, какими они бывают, и рассмотрим вопросы решения задачи прогнозирования при помощи ИНС в общем и рекуррентных ИНС в частности.

Нейронные сети

Для начала давайте вспомним, что вообще такое искусственная нейронная сеть. В одной из предыдущих статей мы уже обсуждали, что ИНС – это сеть искусственных нейронов («черный ящик» со множеством входов и одним выходом), осуществляющая преобразование вектора входных сигналов (данных) в вектор выходных сигналов при помощи некоей функции, называемой функцией активации. При этом между слоем «принимающих» нейронов и выходным слоем присутствует как минимум один промежуточный.

Вид структуры ИНС определяет понятие обратной связи: таким образом, в ИНС прямого распространения сигнал идет последовательно от входного слоя нейронов по промежуточным к выходному; рекуррентная же структура подразумевает наличие обратных связей, когда сигнал с выходных или промежуточных нейронов частично поступает на входы входного слоя нейронов (или одного из внешних промежуточных слоев).

Рекуррентные нейронные сети

Если остановится на рекуррентных ИНС немного подробнее, то выяснится, что наиболее современные (и считающиеся наиболее «удачными») из них берут начало из структуры, называемой многослойным перцептроном (математической модели мозга – ИНС прямого распространения с промежуточными слоями). При этом со времен своего появления они претерпели значительные изменения – и ИНС «нового поколения» устроены гораздо проще своих предшественников, при том, что они позволяют с успехом решать задачи запоминания последовательностей. Так, к примеру, наиболее популярная на сегодняшний день сеть Элмана устроена таким образом, что обратный сигнал с внутреннего слоя поступает не на «главные» входные нейроны, а на дополнительные входы – так называемый контекст. Эти нейроны хранят информацию о предыдущем входном векторе (стимуле); получается, что выходной сигнал (реакция сети) зависит не только от текущего стимула, но и от предыдущего.

Решение задачи прогнозирования

Понятно, что сети Элмана потенциально пригодны для прогнозирования (в частности, временных рядов). Однако известно также, что нейронные сети прямого распространения с успехом справляются с этой задачей – правда, не во всех случаях. Как пример, предлагаем рассмотреть одну из наиболее популярных вариаций задачи прогнозирования – прогнозирование временных рядов (ВР). Постановка задачи сводится к выбору произвольного ВР с N отсчетами. Далее данные разделяются на три выборки – обучающую, тестирующую и контрольную – и подаются на вход ИНС. Полученный результат будет представлен в виде значения временного ряда в требуемый момент времени.

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

  • сбор данных для обучения (этап, считающийся одним из наиболее сложных);
  • подготовка и нормализация данных (приведение к виду ВР);
  • выбор топологии ИНС (на этом этапе принимается решение о количестве слоев и наличии обратной связи);
  • эмпирический (путем эксперимента) подбор характеристик ИНС;
  • эмпирический подбор параметров обучения;
  • обучение ИНС;
  • проверка обучения на адекватность поставленной задаче;
  • корректировка параметров с учетом предыдущего шага, окончательное обучение;
  • вербализация ИНС (минимизированное описание с использованием нескольких алгебраических или логических функций) с целью дальнейшего использования.

Почему рекуррентные ИНС?

Понятно, что решение о топологии ИНС способно повлиять на результат; но вернемся к началу разговора: почему же мы сознательно выбрали темой этой статьи прогнозирование при помощи рекуррентной сети? Ведь, если «погуглить», прогнозирование ВР в работах обычно производится при помощи многослойных перцептронов (мы помним, что это сети прямого распространения) и метода обратного распространения ошибки. Здесь стоит пояснить: да, действительно, в теории такие ИНС хорошо решают задачу прогнозирования – при условии, что степень зашумленности (ошибок и пропусков во входных данных), например, исходного временного ряда минимальна.

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

Использование рекуррентной сети Элмана позволяет решать задачу прогнозирования даже на сильно зашумленных временных рядах (это особенно важно для бизнеса). В общем случае эта ИНС представляет собой структуру из трех слоев, а также набора дополнительных «контекстных» элементов (входов). Обратные связи идут от скрытого слоя к этим элементам; каждая связь имеет фиксированный вес, равный единице. На каждом временном отрезке входные данные распределяются по нейронам в прямом направлении; затем на них применяется обучающее правило. Благодаря фиксированным обратным связям, контекстные элементы всегда хранят копию значений из скрытого слоя за предыдущий шаг (поскольку они отправляются в обратном направлении еще до применения обучающего правила). Таким образом, шум временного ряда постепенно нивелируется, и вместе с ним минимизируется и ошибка: мы получаем прогноз, который в общем случае будет точнее, чем результат классического подхода, что западные работы подтверждают экспериментально.

Резюме

Рассмотрев некоторые аспекты практического применения нейронных сетей к решению задачи прогнозирования, можно сделать вывод: за рекуррентной моделью будущее прогнозирования. По крайней мере, это касается зашумленных временных рядов – а, как известно, на практике, особенно в бизнесе, без неточностей и пропусков в данных дело не обходится. Западная наука, а следом за ней и энтузиасты-практики это уже поняли. На постсоветском же пространстве дойти до этих умозаключений широкой общественности еще предстоит – мы надеемся, что этот материал поможет нашим читателям сделать свои выводы уже сегодня.