Программная реализация искусственной нейронной сети на основе ряда Вольтерра

Авторы статьи: Е.В. Пучков,  В.А. Алексеев

Введение

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

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

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

Рисунок 1 - Структура сети Вольтерра

Процесс динамического построения и обучения ИНС Вольтерра можно представить в виде блок-схемы (рис.2.)

Рисунок 2 - Метод динамического построения сети Вольтерра

Программная реализация

Информация о программных реализациях сетей Вольтерра в открытом доступе практически отсутствует. Найдена работа [4], в которой автор исследования решает задачу прогнозирования с помощью многослойного персептрона и сети Вольтерра. Для этого автор проводит ряд экспериментов на программном обеспечении под названием «Universal Neural Network Simulator». Данный продукт является внутренней разработкой, а значит изучение его или использование в качестве составной части аналитического решения не предоставляется возможным. Исходя из этого для проведения исследования было принято решение о создании собственной программной реализации сети Вольтерра.

В настоящее время одним из популярных языков программирования при решении задач, требующих обработку, визуализацию, анализ данных в том числе задач прогнозирования, является Python. Он предоставляет широкие возможность для прототипирования моделей за счет большого количества фреймворков и библиотек, реализующих множество популярных методов, алгоритмов и подходов к анализу данных. Кроссплатформенность позволяет разработанным на нем приложениям беспрепятственно работать на широко распространенных операционных систем (Windows, Linux и MacOS). Python поддерживает объектно-ориентированных подход (ООП), что позволит построить модульную и масштабируемую архитектуру программного обеспечения. С этой точки зрения Python является наиболее подходящим языком программирования для реализации прототипа сети Вольтерра и метода динамического построения.

Для удобства, увеличения скорости написания программного кода и быстрой навигации по проекту будем использовать интегрированную среду разработки PyCharm [5]. Она предоставляет средства для анализа кода, графический отладчик и инструмент для запуска юнит-тестов и считается наиболее современной средой разработки для языка программирования Python. Графический интерфейс представлен на рис.3.

Рисунок 3 – Графический интерфейс PyCharm

При разработке интеллектуальных систем возникает необходимость работать с данными (прочитать и записать данные из файла, применить различные функции к данным и др.). Для задач такого рода наиболее удобной и функциональной библиотекой Python является NumPy[6]. Бесспорными преимуществами являются:

-поддержка многомерных массивов (включая матрицы);

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

Таким образом, NumPy удовлетворяет всем необходимым требованиям для эффективной работы с данными.

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

Рисунок 4 - Схема функциональной структуры

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

Из структуры приложения видно (рис. 4), что модуль REST сервис выполняет функцию связующего звена между клиентским приложением и программной реализацией математической модели. Данный модуль является веб-сервером. К его функциям относиться получение запросов, обработка полученных данных и ответ клиенту по протоколу  HTTP. Все функции работы сервера реализованы в CherryPy, благодаря этому логика обработки запросов и построение ответов прозрачна. Между тем данный модуль сам по себе не выполняет функций ИНС, а является вспомогательным, передающим параметры модулю ИНС Вольтерра.  Рассмотрим модуль ИНС Вольтерра, так как он содержит основную логику построения, обучения и тестирования ИНС.

Точкой входа модуля ИНС Вольтерра является класс Service, он принимает все необходимы параметры, после чего создает объекты классов InputTimeSerries, ModelControllerVolterra и Teacher. Класс ModelControllerVolterra реализует логику работы ИНС Вольтерра, хранит и изменяет архитектуру ИНС. Диаграмма классов представлена на рис. 5.

Архитектура ИНС стоится из объектов класса CoreVolterra. Этот класс описывает сущность ядра Вольтерра, имеет ссылку на родительский объект  и массив ссылок на дочерние объекты. Данные объекты имеют тип CoreVolterra. Таким образом программная реализация архитектуры ИНС представлена в виде двунаправленно связанного дерева. Данный подход дает возможность создавать методы вызываемые рекурсивно.

Класс Teacher реализует адаптивный алгоритм обучения ИНС. Свойствами объектов данного класса являются:

-_root ссылка на корневой объект дерева;

-net объект ИНС Вольтерра;

-_settings объект настроек алгоритма обучения.

Метод fit класса Teacher является реализацией алгоритма обратного распространения ошибки. Он принимает ссылку на корневой объект дерева сети и данные для обучения, после чего происходит расчет функции качества на каждом ядре и передача ее значения далее по структуре.

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

Рисунок 5 – Диаграмма классов

Эксперименты

Для апробации программной реализации ИНС Вольтерра необходимо провести ряд экспериментов на реальных данных с подсчетом метрик качества. Рассмотрим данные о солнечной активности за период с января 1700 года по февраль 2015 года (всего 316 записей). Измерения проводились раз в календарный год на протяжении всего периода. Значения временного ряда представляют количество пятен на Солнце. При первичном анализе можно выявить явно выраженную периодичность солнечной активности в 11 лет, которая уже достаточно изучена и установлен ряд закономерностей по амплитудам циклов [7, 8, 9].

Рассмотрим процесс решения задачи прогнозирования с помощью разработанного программного обеспечения.

Шаг 1. Работа с данными.

На данном шаге происходит загрузка исходных данных и их визуализация в виде графика. Возможна линейная нормализация данных по формуле:

\tilde{x_i} = \frac{x_i -x_{min}}{x_{max}-x_{min}}

Рисунок 5 – Отображение данных для тестирования

Данные для экспериментов автоматически подготовлены в соответствии с методом окон (windowing) [10], разбиты со смещением на вектора размерностью равной количеству входов.

Таблица 1 – Подготовка данных по методу окон

I X_1 X_i X_{...} X_m Y
1 x_1 x_i x_{...} x_m x_{m+1}
2 x_{...} x_m x_{m+1} x_{m+2} x_{m+3}
... x_{...} x_{...} x_{...} x_{...} x_{...}
K x_{N-m+i-1} x_{N-m+i-1} x_{N-m+i-1} x_{N-m+i-1} x_{N}

В таблице 1:

  • X – входы нейронной сети;
  • m – количество входов;
  • i – порядковый номер входа нейронной сети
  • K – количество окон данных, равно N mod m + 1;
  • N – количество наблюдений во временном ряде.

Шаг 2. Настройка сети.

Далее производится установка параметров  ИНС Вольтерра и алгоритма обучения. Значения по умолчанию для параметров представлены в таблице 2. Структура ИНС после применения параметров для первого эксперимента представлена на рисунке 6.

Рисунок 6 – Графическое представление архитектуры ИНС

Шаг 3. Результаты обучения. После обучения строятся графики, отражающие реальные и предсказанные значения на обучающей выборке и тестовой (рис. 7).  Были проведены исследования зависимости качества прогноза от структуры нейронной сети и настроек алгоритма обучения. Статистика обучения и тестирования сети приведена в таблице 2.

Таблица 2 – Начальные параметры и статистика обучения

Параметры экспериментов
Параметр №1 №2 №3
Размер окна 3 4 6
Глубина сети 3 3 3
Желаемая точность 0,0001 0,0001 0,0001
Скорость обучения 0,01 0,004 0,001
Соотношение обучающей и тестовой выборок 80:20 80:20 80:20
Результаты экспериментов
MSE < 0.002 < 0.001 < 0.002
MAPE 0.05 0.04 0.05
Добавлено слоев 1 1 0

 Рисунок 7 – Графики предсказаний сети на обучающей и тестовой выборках. Обучающая выборка: серый – реальные значения, синий – предсказанные значения. Тестовая выборка: серый – реальные значения, красный – предсказанные

Рисунок 8 – Состояние архитектуры после обучения

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

Результаты исследований показали, что качество прогнозирования зависит от \Omega – скорости изменения ошибки, так как ее значение участвует в принятии решения о добавлении слоя:

 \frac{E_t - E_{t-\sigma}}{E_{t_0}} < \Omega

Наилучшее качество прогноза достигается при \Omega = 0,004. Так же очевидно, что точность прогноза будет расти по мере увеличения эпох обучения.

Результаты прогнозирования солнечной активности могут быть использованы в оценке динамики водонасыщения поверхностных грунтов Ростовской области [11].

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

  1. Gatys L.A., Ecker A.S. and Bethge M., A neural algorithm of artistic style. arXiv preprint arXiv:1508.06576 — 2015.
  2. Vinyals O., Le Q. A neural conversational model. arXiv:1506.05869 — 2015.
  3. Пучков Е.В., Белявский Г.И. Разработка методов динамического построения искусственной нейронной сети на основе ряда Вольтерра и вейвлет-ядра // Вестник Ростовского государственного университета путей сообщения, 2015. – № 3 (59) – С. 127-131.
  4. Крючин, О.В., Кондраков О.В. Прогнозирование временных рядов с помощью искусственных нейронных сетей и регрессионных моделей на примере прогнозирования котировок валютных пар // Электронный научный журнал «Исследовано в России», 2010. – Т.13. – С. 953-967. Режим доступа: http://zhurnal.ape.relarn.ru/articles/2010/082.pdf.
  5. PyCharm // jetbrains URL: https://www.jetbrains.com/pycharm/ (дата обращения: 31.08.2016).
  6. NumPy // NumPy URL: http://www.numpy.org/ (дата обращения: 31.08.2016).
  7. Schwabe H. Sonnenbeobachtungen im Jahre 1843 // Astronomische Nachrichten. — 1844. — Vol. 21. — С. 233.
  8. Статистика пятнообразовательной деятельности Солнца / Витинский Ю. И., Копецкий М., Куклин Г. В. , — М.: Наука, 1986.
  9. Прист Э. Р. Солнечная магнитогидродинамика. — М.: Мир, 1985.
  10. Хайкин С. Нейронные сети: полный курс. – 2-е изд. – М.: Вильямс. –  – 1104 с.
  11. Гридневский А.В. Комплексный подход к региональной оценке геологических опасностей территории ростовской области - Сергеевские чтения. // Инженерная геология и геоэкология. Фундаментальные проблемы и прикладные задачи. — 2015.