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

Прочие модели 12.07.2019
Прочие модели

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

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

Сеть Элмана так же, как и сеть Джордана получается из многослойного персептрона введением обратных связей. Только сигналы на входной слой идут не от выходов сети, а от выходов нейронов скрытого слоя . Пример архитектуры сети Элмана показан на рис. 1. Выходы скрытого слоя { c 1 , c 2 ,…, c k } подаются с временной задержкой на входные нейроны с весовыми коэффициентам { w ij } -1 , где i (i = 1,2,…, n ) , j j = 1,2…, k ).

Рис. 1. Пример архитектуры сети Элмана

Для обобщения рекуррентных ИНС в статье предлагается добавить задержку сигналов обратной связи скрытого слоя на нескольких тактов. Для этого добавим у слоя динамическую стековую память. Пример архитектуры такой ИНС показан на рис. 2.

Рис. 2. Пример архитектуры рекуррентной ИНС с динамической стековой памятью нескольких предыдущих выходных сигналов скрытого слоя

Выходы скрытого слоя { c 1 , c 2 ,…, c k } подаются на входные нейроны с весовыми коэффициентам { w ij } - t , где i – индекс нейрона, на который подается сигнал (i = 1,2,…, n ) , j – индекс выходного сигнала нейрона скрытого слоя (j = 1,2…, k ) , t – индекс временной задержки (t =1,2… m ). Количество временных задержек будем изменять от 1 до m . Таким образом, сеть Элмана получается при m =1, а многослойный персептрон – при m =0.

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

Рассмотрим процесс трансформации обучающей выборки для решения задачи прогнозирования временного ряда с помощью рекуррентной ИНС с динамической стековой памятью. В качестве примера будем использовать среднемесячные значения плотности потока солнечного излучения на длине волны 10,7 за 2010-2012 года (табл. 1) .

Таблица 1. Данные о плотности потока солнечного излучения на длине волны 10,7 см. за 2010-2012 гг

№ примера Дата Плотность потока излучения 10 -22 [Вт/м 2 ]
1 Январь 2010 834,84
2 Февраль 2010 847,86
3 Март 2010 833,55
4 Апрель 2010 759,67
5 Май 2010 738,71
6 Июнь 2010 725,67
7 Июль 2010 799,03
8 Август 2010 797,10
9 Сентябрь 2010 811,67
10 Октябрь 2010 816,77
11 Ноябрь 2010 824,67
12 Декабрь 2010 843,23
13 Январь 2011 837,42
14 Февраль 2011 945,71
15 Март 2011 1153,87
16 Апрель 2011 1130,67
17 Май 2011 959,68
18 Июнь 2011 959,33
19 Июль 2011 942,58
20 Август 2011 1017,74
21 Сентябрь 2011 1345,00
22 Октябрь 2011 1372,90
23 Ноябрь 2011 1531,67
24 Декабрь 2011 1413,55
25 Январь 2012 1330,00
26 Февраль 2012 1067,93
27 Март 2012 1151,29
28 Апрель 2012 1131,67
29 Май 2012 1215,48
30 Июнь 2012 1204,00

Трансформируем временной ряд методом скользящих окон , как показано в таблице 2.

Таблица 2. Обучающая выборка ИНС для решения задачи прогнозирования, полученная в результате преобразования временного ряда методом окон

№ примера Входы ИНС (x ) Выходы ИНС (y )
x 1 x 2 x 3 y 1
1 834,84 847,86 833,55 759,67
2 847,86 833,55 759,67 738,71
3 833,55 759,67 738,71 725,67

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

Рис. 3. Рекуррентная ИНС с памятью двух предыдущих выходных сигналов скрытого слоя

Так как число нейронов скрытого слоя, имеющих обратную связь с входным слоем, равно трем, то размер входного вектора во время обучения ИНС при запоминании предыдущего выходного сигнала на один шаг назад увеличится на три, при запоминании двух предыдущих выходных сигналов – на шесть. Обозначим входные сигналы обучающей выборки, не изменяющиеся во время трансформации, как {x 1 , x 2 , x 3 }, а сигналы обратной связи – {x 4 , x 5 , x 6 , x 7 , x 8 , x 9 }. В таблице 3 приведена трансформированная обучающая выборка.

Таблица 3. Добавление в обучающую выборку рекуррентной ИНС выходных сигналов скрытого слоя

№ п/п Входы ИНС (x ) Выходы ИНС (y )
x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 y 1
1 834,84 847,86 833,55 0 0 0 0 0 0 759,67
2 847,86 833,55 759,67 c 1 -1 c 2 -1 c 3 -1 0 0 0 738,71
3 833,55 759,67 738,71 c 1 -1 c 2 -1 c 3 -1 c 1 - 2 c 2 - 2 c 3 - 2 725,67

На входы {x 4 , x 5 , x 6 } подаются выходные сигналы скрытого слоя с задержкой на один такт {с 1 -1 , c 2 -1 , c 3 -1 }, на входы {x 7 , x 8 , x 9 } – выходные сигналы скрытого слоя с задержкой на два такта {с 1 -2 , c 2 -2 , c 3 -2 }.

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

Объектно-ориентированная модель рекуррентной ИНС с динамической стековой памятью представлена на диаграмме классов (рис. 4).

Рис. 4. Диаграмма основных классов, реализующих рекуррентную ИНС с динамической стековой памятью

В отличие от класса Layer , который является контейнером для нейронов многослойного персептрона, класс LayerMemory cодержит память stackOut , реализованную в виде стека предыдущих сигналов слоя. Размер стека задается с помощью свойства stackSize . На схеме (рис. 5) память слоя изображена в виде стека выходных сигналов слоя {y -1 , y -2 , …, y - n }, где n – размер стека. Каждая ячейка стека y - i состоит из массива выходов нейронов слоя {y 1, y 2, …, y n }. Стек организован так, что после переполнения памяти последняя ячейка y - n удаляется, вся очередь сдвигается на одну позицию, так что y - i = y -( i -1) .

Рис. 5. Реализация слоя с памятью (LayerMemory ) для рекуррентных ИНС с динамической стековой памятью

Проведем прогноз среднемесячной плотности солнечной активности на длине волны 10,7 см на первые шесть месяцев 2012 года на основе данных за 2010-2011 года из табл. 1. Для этого построим и обучим рекуррентную ИНС с динамической стековой памятью (рис.3) с помощью нейроэмулятора NeuroNADS . Первые 24 примера временного ряда возьмем для обучающей выборки, а оставшиеся шесть примеров – для тестовой выборки.

Обучение проведем гибридным алгоритмом . Параметры алгоритма: шаг обучения – 0,3, максимальное количество особей в поколении – 10, коэффициент мутации – 0,1. Критерии остановки обучения: среднеквадратическая ошибка – 0,001, количество эпох – 1000.

Один из лучших результатов обучения ИНС представлен на рис. 6 и на рис. 7. Показатели ошибок прогнозирования временного ряда представлены в табл. 4.

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

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

Рис. 7. График изменения функции среднеквадратической ошибки рекуррентной ИНС с динамической стековой памятью во время обучения (по оси абсцисс – количество эпох, по оси ординат – значение ошибки)

Таблица 4. Показатели ошибок прогнозирования временного ряда

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

Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта № 14-01-00579 а.

Список литературы:

  1. Бодянский Е.В., Руденко О.Г. Искусственные нейронные сети: архитектуры, обучение, применения. – Харьков: ТЕЛЕТЕХ, 2004. – 369 с.
  2. Осовский С. Нейронные сети для обработки информации / Пер. с польского И.Д. Рудинского. – М.: Финансы и статистика, 2002. – 344 с.
  3. Информационно-аналитическая система [Электронный ресурс]: данные о солнечной и геомагнитной активности – Режим доступа: http://moveinfo.ru/data/sun/select (доступ свободный) – Загл. с экрана. – Яз. рус.
  4. Круг П.Г. Нейронные сети и нейрокомпьютеры. М.: Издательство МЭИ, 2002 г. – 176 с.
  5. Нейроэмулятор NeuroNADS [Электронный ресурс]: веб-сервис - Режим доступа: http://www.service.. с экрана. – Яз. рус.
  6. Белявский Г.И., Пучков Е.В., Лила В.Б. Алгоритм и программная реализация гибридного метода обучения искусственных нейронных сетей // Программные продукты и системы. Тверь, 2012. №4. С. 96 - 100.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

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

авторитет 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. ИИ будет чуть позже.

Спасибо!

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

(Recurrent Neural Networks, RNNs) - популярные модели, используемые в обработке естественного языка (NLP). Во-первых, они оценивают произвольные предложения на основе того, насколько часто они встречались в текстах. Это дает нам меру грамматической и семантической корректности. Такие модели используются в машинном переводе. Во-вторых, языковые модели генерируют новый текст. Обучение модели на поэмах Шекспира позволит генерировать новый текст, похожий на Шекспира.

Что такое рекуррентные нейронные сети?

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

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

  • x_t - вход на временном шаге t. Например x_1 может быть вектором с одним горячим состоянием (one-hot vector), соответствующим второму слову предложения.
  • s_t - это скрытое состояние на шаге t. Это «память» сети. s_t зависит, как функция, от предыдущих состояний и текущего входа x_t: s_t=f(Ux_t+Ws_{t-1}). Функция f обычно нелинейная, например tanh или ReLU . s_{-1}, которое требуется для вычисление первого скрытого состояния, обычно инициализируется нулем (нулевым вектором).
  • o_t - выход на шаге t. Например, если мы хотим предсказать слово в предложении, выход может быть вектором вероятностей в нашем словаре. o_t = softmax(Vs_t)

Несколько заметок:

  • Можно интерпретировать s_t как память сети. s_t содержит информацию о том, что произошло на предыдущих шагах времени. Выход o_t вычисляется исключительно на основе «памяти» s_t. На практике все немного сложнее: s_t не может содержать информацию слишком большого количества предшествующих шагов;
  • В отличие от традиционной глубокой , которая использует разные параметры на каждом слое, RNN имеет одинаковые (U, V, W) на всех этапах. Это отражает тот факт, что мы выполняем одну и ту же задачу на каждом шаге, используя только разные входы. Это значительно уменьшает общее количество параметров, которые нам нужно подобрать;
  • Диаграмма выше имеет выходы на каждом шаге, но, в зависимости от задачи, они могут не понадобиться. Например при определении эмоциональной окраски предложения, целесообразно заботиться только о конечном результате, а не о окраске после каждого слова. Аналогично, нам может не потребоваться ввод данных на каждом шаге. Основной особенностью RNN является скрытое состояние, которое содержит некоторую информацию о последовательности.

Где используют рекуррентные нейросети?

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

Языковое моделирование и генерация текстов

Учитывая последовательность слов, мы хотим предсказать вероятность каждого слова (в словаре). Языковые модели позволяют нам измерить вероятность выбора, что является важным вкладом в машинный перевод (поскольку предложения с большой вероятностью правильны). Побочным эффектом такой способности является возможность генерировать новые тексты путем выбора из выходных вероятностей. Мы можем генерировать и другие вещи , в зависимости от того, что из себя представляют наши данные. В языковом моделировании наш вход обычно представляет последовательность слов (например, закодированных как вектор с одним горячим состоянием (one-hot)), а выход - последовательность предсказанных слов. При обучении , мы подаем на вход следующему слою предыдущий выход o_t=x_{t+1}, поскольку хотим, чтобы результат на шаге t был следующим словом.

Исследования по языковому моделированию и генерации текста:

Машинный перевод

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

RNN для машинного перевода

Распознавание речи

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

Генерация описания изображений

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

Глубокие визуально-семантические совмещения для генерации описания изображений.

Глубинные свёрточные обратные графические сети (deep convolutional inverse graphics networks, DCIGN) названы слегка некорректно, поскольку они по сути являются вариационными автокодировщиками, кодирующая и декодирующая части которых представлены свёрточной и развёртывающей НС соответственно. Сети такого типа моделируют свойства в виде вероятностей, поэтому их можно научить создавать картинку с собакой и кошкой, даже если сеть видела только картинки, на которых было только одно из животных. Возможно и удаление одного из двух объектов. Также были созданы сети, которые могли менять источник освещения и вращать объект. Сети такого типа обычно обучают методом обратного распространения ошибки.

Генеративные состязательные сети (generative adversarial networks, GAN) - это сети другого вида, они похожи на близнецов. Такие сети состоят из любых двух (обычно из FF и CNN), одна из которых контент генерирует, а другая - оценивает. Сеть-дискриминатор получает обучающие или созданные генератором данные. Степень угадывания дискриминатором источника данных в дальнейшем участвует в формировании ошибки. Таким образом, возникает состязание между генератором и дискриминатором, где первый учится обманывать первого, а второй - раскрывать обман (похоже на ситуацию «банкир-фальшивомонетчик»). Обучать такие сети весьма тяжело, поскольку нужно не только обучить каждую из них, но и настроить баланс.

Рекуррентные нейронные сети (recurrent neural networks, RNN) - это сети типа FFNN, но с особенностью: нейроны получают информацию не только от предыдущего слоя, но и от самих себя предыдущего прохода. Это означает, что порядок, в котором вы подаёте данные и обучаете сеть, становится важным. Большой сложностью сетей RNN является проблема исчезающего (или взрывного) градиента, которая заключается в быстрой потере информации с течением времени. Конечно, это влияет лишь на веса, а не состояния нейронов, но ведь именно в них накапливается информация. Обычно сети такого типа используются для автоматического дополнения информации.

Сети с долгой краткосрочной памятью (long short term memory, LSTM) стараются решить вышеупомянутую проблему потери информации, используя фильтры и явно заданную клетку памяти. У каждого нейрона есть клетка памяти и три фильтра: входной, выходной и забывающий. Целью этих фильтров является защита информации. Входной фильтр определяет, сколько информации из предыдущего слоя будет храниться в клетке. Выходной фильтр определяет, сколько информации получат следующие слои. Ну а забывающий фильтр, каким бы странным не казался, также выполняет полезную функцию: например, если сеть изучает книгу и переходит на новую главу, какие-то символы из старой можно забыть. Такие сети способны научиться создавать сложные структуры, например, писать как Шекспир или сочинять простую музыку, но и ресурсов они потребляют немало.

Управляемые рекуррентные нейроны (gated recurrent units, GRU) - это небольшая вариация предыдущей сети. У них на один фильтр меньше, и связи реализованы иначе. Фильтр обновления определяет, сколько информации останется от прошлого состояния и сколько будет взято из предыдущего слоя. Фильтр сброса работает примерно как забывающий фильтр.

Нейронные машины Тьюринга (neural Turing machines, NTM) можно рассматривать как абстрактную модель LSTM и попытку показать, что на самом деле происходит внутри нейронной сети. Ячейка памяти не помещена в нейрон, а размещена отдельно с целью объединить эффективность обычного хранилища данных и мощь нейронной сети. Собственно, поэтому такие сети и называются машинами Тьюринга - в силу способности читать и записывать данные и менять состояние в зависимости от прочитанного они являются тьюринг-полными.

Двунаправленные RNN, LSTM и GRU (bidirectional recurrent neural networks, bidirectional long / short term memory networks и bidirectional gated recurrent units, BiRNN, BiLSTM и BiGRU) не показаны в таблице, поскольку они ничем не отличаются от своих однонаправленных вариантов. Разница заключается в том, что эти сети используют не только данные из «прошлого», но и из «будущего». Например, обычную сеть типа LSTM обучают угадывать слово «рыба», подавая буквы по одной, а двунаправленную - подавая ещё и следующую букву из последовательности. Такие сети способны, например, не только расширять изображение по краям, но и заполнять дыры внутри.

Глубинные остаточные сети (deep residual networks, DRN) - это очень глубокие сети типа FFNN с дополнительными связями между отделёнными друг от друга слоями. Такие сети можно обучать на шаблонах глубиной аж до 150 слоёв - гораздо больше, чем можно было бы ожидать. Однако, было показано, что эти сети мало чем отличаются от рекуррентных, и их часто сравнивают с сетями LSTM.

Нейронная эхо-сеть (echo state networks, ESN) - это ещё одна разновидность рекуррентных сетей. Её особенностью является отсутствие сформированных слоёв, т.е. связи между нейронами случайны. Соответственно, метод обратного распространения ошибки не срабатывает. Вместо этого нужно подавать входных данные, передавать их по сети и обновлять нейроны, наблюдая за выходными данными.

Метод экстремального обучения (extreme learning machines, ELM) - это, по сути, сеть типа FFNN, но со случайными связями. Они очень похожи на сети LSM и ESN, но используются как FFNN. Так происходит не только потому, что они не рекуррентны, но и потому, что их можно обучать просто методом обратного распространения ошибки.

Метод неустойчивых состояний (liquid state machines, LSM) похож на эхо-сеть, но есть существенное отличие: сигмоидная активация заменена пороговой функцией, а каждый нейрон является накопительной ячейкой памяти. Таким образом, при обновлении нейрона его значение не становится равным сумме соседей, а прибавляется само к себе, и при достижении порога сообщается другим нейронам.

Метод опорных векторов (support vector machines, SVM) находит оптимальные решения задачи оптимизации. Классическая версия способна категоризировать линейно разделяемые данные: например, различать изображения с котом Томом и с котом Гарфилдом. В процессе обучения сеть как бы размещает все данные на 2D-графике и пытается разделить данные прямой линией так, чтобы с каждой стороны были данные только одного класса и чтобы расстояние от данные до линии было максимальным. Используя трюк с ядром, можно классифицировать данные размерности n. Что характерно, этот метод не всегда рассматривается как нейронная сеть.

И наконец, нейронные сети Кохонена (Kohonen networks, KN) , также известные как самоорганизующиеся карты (self organising (feature) maps, SOM, SOFM) , завершают наш список. Эти сети используют соревновательное обучение для классификации данных без учителя. Сети подаются входные данные, после чего сеть определяет, какие из нейронов максимально совпадают с ними. После этого эти нейроны изменяются для ещё большей точности совпадения, в процессе двигая за собой соседей. Иногда карты Кохонена также не считаются нейронными сетями.

Вот и всё! После прочтения наших статей и прилагающихся материалов вы точно будете уверенно разбираться в видах нейронных сетей 🙂



Рекомендуем почитать

Наверх