УДК 004.4
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ КОНСТРУКТОРА НЕЙРОННЫХ СЕТЕЙ
© 2017 Е.А. Ганцева, В.Ф. Барабанов, Н.И. Гребенникова, Д.С. Болдырев
В настоящее время искусственные нейронные сети являются важным расширением понятия вычисления. Нейронные сети или выпускаются в составе специализированных устройств, или достаточно дороги, а зачастую и то и другое. На их разработку тратится значительное время, за которое программные реализации на самых последних компьютерах оказываются лишь на порядок менее производительными, что делает использование нейропроцессоров нерентабельным. Функциональные возможности различных программных продуктов в разной степени обладают схожими возможностями, некоторые из них имеют большое количество инструментов, которые мало подходят для первоначального знакомства с нейронными сетями, а также имеют высокую стоимость.
В статье предложена модель библиотеки классов для конструирования нейронных сетей. Библиотека содержит классы, позволяющие производить создание, настройку, обучение и тестирование нейронных сетей. Модульная структура библиотеки позволяет разработчику вносить изменения с целью расширения функциональности, не опасаясь нарушения работы остальных модулей. Значительное внимание уделено описанию разработки программного обеспечения для конструирования нейронных сетей на основе данной библиотеки, приводится обзор существующих программных продуктов, обладающих схожей функциональностью
Ключевые слова: линейный нейрон, персептрон, многослойная нейронная сеть, алгоритм обратного распространения ошибки
Введение
В результате бурного развития информационных технологий нейронные сети проникли практически во все сферы жизнедеятельности человека [1, 2, 3]. Однако работа с нейронными сетями требует большого количества вычислительных ресурсов, и по мере увеличения размерности сети растут и требования к вычислительной системе. Большое число корпораций работает над совершенствованием нейросете-вых алгоритмов и созданием принципиально новых аппаратных комплексов. Так, например, для повышения вычислительных мощностей компьютеров часть нагрузки с центрального процессора переносится на графический ускоритель. Кроме того, современные графические адаптеры позволяют производить вычисления в параллельном режиме, что значительно увеличивает их эффективность [8].
В рамках данной работы создано программное обеспечение, которое позволяет создавать нейронные сети различных типов и размерности, производить их обучение, тестирование, получать необходимые результаты. Это дает возможность решать большое количество практических задач таких, как задачи регрессии, классификации, распознавания образов и др.
Ганцева Екатерина Александровна - ВГТУ, канд. техн. наук, доцент, e-mail: [email protected] Барабанов Владимир Федорович - ВГТУ, д-р техн. наук, профессор, e-mail: [email protected]
Гребенникова Наталия Ивановна - ВГТУ, канд. техн. наук, доцент, e-mail: [email protected] Болдырев Денис Сергеевич - ВГТУ, магистр, e-mail: [email protected]
Обзор современных программных средств создания и моделирования искусственных нейронных сетей
Программные продукты создания, обучения и тестирования нейронных сетей условно можно разделить на несколько типов:
- надстройки для пакетов прикладных вычислений;
- специализированные нейросетевые пакеты;
- универсальные нейросетевые пакеты.
Примерами являются [4]:
- StatisticaNeuralNetworks - набор расширений, входящих в состав пакета прикладных вычислений Statistica;
- MatlabNeuralNetwork - набор расширений, входящих в состав пакета прикладных вычислений Matlab;
- ExcelNeuralPackage - набор скриптов и библиотек для электронных таблиц Excel, реализующих некоторые возможности по реализации нейронных сетей.
Ко второму типу относятся программные продукты, решающие определенный, узкоспециализированный набор задач. К таким продуктам относятся:
- Глаз - программа, предназначенная для выполнения обработки аэрокосмической информации;
- NeuroshellTrader - программа, предназначенная для создания нейронных сетей и анализа рынков.
Универсальные программные пакеты имеют более специфическую направленность и функциональность, которые предназначены для работы с нейронными сетями [5].
№ п/п Название нейропакета Достоинства Недостатки
1 Neural10 Является бесплатным Позволяет создавать только один тип сети
2 NeuroSolutions Поддерживает большое количество вариантов ввода и обработки информации Высокая стоимость, отсутствие русскоязычного интерфейса
3 QwikNet32 Реализует лишь один тип сети
4 MemBrain Бесплатен для образовательных целей, наличие мощного инструментария Отсутствие русскоязычного интерфейса и справки
5 NeuroPro Имеет русскоязычный интерфейс и справку Малоудобный интерфейс
6 Deductor 5.2 Бесплатная версия, русскоязычный интерфейс Перегруженная функциональность
Наиболее популярными программными продуктами являются: №ига110, №иго8о1ийоп8, QwikNet32, МешБгат, №игоРго, ОеёиСюг 5.2.
Проанализировав функциональные возможности различных программных продуктов, можно прийти к выводу, что все они в разной степени обладают схожими возможностями. Однако некоторые из них имеют большое количество инструментов, которые мало подходят для первоначального знакомства с нейронными сетями, а также имеют высокую стоимость. Другие же программные продукты слишком ограничены в наборе функций, например, позволяют реализовать сети лишь определенной структуры.
Таким образом, разработка современного программного продукта конструирования нейронных сетей, простого в освоении нейросетевых техник, с наглядным и понятным интерфейсом, свободно распространяемого и с открытым исходным кодом, является актуальной задачей [6].
Функциональные требования
к разрабатываемому конструктору нейронных сетей
Конструктор нейронных сетей должен обладать следующими функциональными возможностями:
- создавать различные типы нейронных сетей (линейный нейрон, персептрон, многослойные сети прямого распространения);
- настройки параметров каждого слоя для многослойных сетей;
- настройки параметров обучения, поддержки классических нейросетевых моделей и алгоритмов обучения;
- сохранения параметров программы в файле настроек; загрузка параметров из файла;
- отображения результатов работы нейронной сети в удобном графическом виде;
- удобной работой с входными данными (пользователь должен иметь возможность загружать готовые входные данные из файла, либо записывать эти данные вручную);
- масштабирования данных с целью освобождения пользователя от дополнительной работы по подготовке входных или выходных данных;
- русскоязычный интерфейс пользователя должен отвечать принципу «usability», быть наглядным, а также интуитивно понятным, что позволит пользователю сосредоточить внимание на разработке и изучении нейронных сетей;
- тестировать нейронные сети;
- доступность, т.е. программное обеспечение должно быть в свободном доступе с открытым исходным кодом, что позволит привлечь большее количество пользователей и разработчиков.
Для разработки программного продукта конструирования нейронных сетей использована интегрированная среда разработки Microsoft Visual Studio 2017.
В качестве языка программирования использован объектно-ориентированный язык C#, предназначенный для разработки приложений для платформы Microsoft. NET Framework [7].
Состав, структура и функции программного средства
Созданная программа NeuralNetConstructor предназначена для построения нейронных сетей и предоставляет возможность решать задачи регрессии, классификации и распознавания образов.
На рис. 1 представлена Use case-диаграмма конструктора нейронных сетей, на которой приведены основные функции программного
обеспечения. Для его функционирования пользователю необходимо задать настройки, к которым относятся тип сети и ее конкретные параметры, а также подготовить входные данные. Входные данные могут быть загружены из файла или заданы пользователем вручную на этапе настройки параметров. В дальнейшем
процесс обучения полностью скрыт от пользователя. Выходными данными (результатом обучения) являются значения весовых коэффициентов. Эти данные можно сохранить в файл для дальнейшего использования в других проектах или для тестирования.
Рис. 1. Use case-диаграмма
На рис. 2 приведена модульная структура разработанного программного обеспечения.
Последовательность действий пользователя в приложении представлена на рис. 3. После ввода всех необходимых параметров происходит автоматическое создание нейронной сети. Скрывая от пользователя процесс создания сети, программа, обладая удобным интерфейсом, позволяет пользователю быстро приступить к работе с нейросетью и не тратить время на изучение документации и встроенного языка программирования. Кроме того, такой подход позволяет избежать пользователю ошибок, что значительно экономит время проектирования нейронных сетей.
Конструктор нейронных сетей предоставляет возможность задания параметров для каждого слоя многослойных сетей: число нейронов, тип активационной функции, диапазон изменения весовых коэффициентов, а также коэффициентов целевой функции. Кроме того, можно масштабировать входные и выходные данные, что позволяет пользователю создавать более гибкие модели сетей. Для нелинейного нейрона (персептрона) список параметров схож с многослойными сетями.
«Конструктора нейронных сетей»
Рис. 2. Модульная структура приложения
При решении задач регрессии с помощью моделей многослойных сетей и персептрона предполагается, что имеется много входов и только один выход [9]. Для задач классифика-
ции и распознавания образов имеется много входов и много выходов.
Запуск программы
Загрузка конфигурации нейронной сети Загрузка главного окна программы Получение справки
н
Создание Создание новой конфигурации нейронной сети
нейронной сети
1
Загрузка входных данных - Тестирование нейронной сети Сохранение результатов
Обучение нейронной сети
Рис. 3. Последовательность действий пользователя
Для линейного нейрона список параметров значительно уже, однако не стоит считать, что линейный нейрон имеет малые вычислительные способности.
Линейный нейрон позволяет решать задачи регрессии, однако в большинстве случаев он предназначен для фильтрации сигналов путем корректировки весовых коэффициентов с помощью минимизации среднеквадратической ошибки.
Для линейного нейрона можно задавать размер входа, скорость обучения и количество обучающих примеров. Так как на выходе отсутствует нелинейная активационная функция необязательно нормировать входные и выходные данные.
Помимо специализированных особенностей программы, которые влияют на качество работы алгоритмов, было реализовано множество функций, которые предназначены для комфортной работы пользователя [10].
Удобство работы пользователя обеспечивает возможность загрузки и ручного ввода данных, а также графическое представление результатов работы. Пользователь может в режиме реального времени наблюдать результат работы программы на графиках, что позволяет быстро принимать решение о работоспособности созданной модели.
Разработанная библиотека «Neuron.dll» содержит три основных класса: Layer, Perceptron, LinearNeuron.
Процесс создания линейного нейрона происходит в классе LinearNeuronForm. При этом, первым делом, при загрузке формы создается объект класса LinearNeuron из библиотеки «Neuron.dll». В качестве параметра конструктору передается число входов нейрона, затем вычисляется ошибка. Ошибка вычисляется как
разность между эталонным и текущим выходом сети. Далее ошибка передается в качестве параметра в метод, корректирующий весовые коэффициенты. Обучение является итеративным процессом, поэтому данная операция будет выполняться до тех пор, пока выход сети не будет удовлетворять заданной точности. Кроме выхода сети, на каждой итерации обучения вычисляется среднеквадратическая ошибка и текущая ошибка. Эти данные используются для построения графиков. Построение точек графиков происходит на каждой итерации обучения. После завершения обучения сформированный массив весовых коэффициентов сохраняется в классе Арр8ей^.
Для сохранения настроек конфигурации нейронной сети проводится сериализация класса Арр8ей^8, в результате которой создается хш1-файл на диске. Логично предположить, что для загрузки настроек необходимо произвести обратную операцию под названием десериали-зация. В общем смысле процесс проектирования нейросети для линейного и нелинейного нейрона является одинаковым. На рис. 4 можно видеть порядок действий при создании многослойных сетей.
Создать объект слоя сети
п
Нет
Последний слой?
Да
Загрузить обучающий набор входных данных
Подать значения на
вход первого слоя
+
Вычислить выход слоя и
подать значения на «1
вход следующего Нет J
+
Последний слой?
1 Да V
Удовлетворяет ли выход сети заданной точности?
—Нет-* Выполнить корректировку весовых коэффициентов
Да
Завершить обучение и сохранить результаты
Рис. 4. Создание многослойной сети
Для тестирования уже обученной сети необходимо загрузить тестовые наборы данных, создать объект нейрона или многослойной
сети и подать данные на вход, используя уже настроенные весовые коэффициенты, находящиеся в классе AppSettings.
На рис. 5 представлен процесс тестирования обученной нейронной сети.
Создать объект слоя сети
Последний слой?
-1-
Да
_4_
П
Нет
и
Загрузить тестовый набор входных данных
I
Подать значения на вход первого слоя
I
Вычислить выход слоя и подать значения на вход следующего
Последний слой?
I
Да
_4_
п
Нет
и
Удовлетворяет ли выход сети заданной точности?
I
Да
_4_
—Нет>
Изменить параметры и повторить обучение
Завершить тестирование
Рис. 5. Тестирование обученной сети
Реализация интерфейсных возможностей программного средства
При запуске программы на экране пользователя появляется главная форма «Конструктор нейронных сетей», представленная на рис. 6.
На данной форме можно задать тип сети, установить параметры слоя для многослойных сетей, установить скорость обучения, число входных наборов и точность обучения.
После задания всех параметров необходимо выбрать действие «Создать» для создания нейросети. В зависимости от параметров, которые были указаны ранее, создаются различные по функциональности формы.
Для управления обучением линейного нейрона используется форма «Линейный нейрон», показанная на рис. 7. В рабочей области формы «Линейный нейрон» расположены две таблицы, в которые загружаются данные для обучения и тестирования.
Рис. 6. Главная форма «Конструктор нейронных сетей»
Наличие возможности визуального доступа к данным позволяет изменять их в динамическом режиме. Здесь же на форме отображаются графики для визуального представления результатов работы процессов обучения и тестирования.
Ценным функциональным качеством программы является возможность обучения и тестирования многослойных сетей. Для настройки многослойных сетей используется форма, показанная на рис. 8.
На данной форме расположены идентичные элементы управления, за исключением элементов, которые позволяют установкой флажка сообщить программе о том, что необходимо произвести модификацию входных (выходных) данных - их масштабирование.
В отличие от нейронных сетей, предназначенных для решения задач регрессии, в которых, как правило, имеется много входов и один выход, в нейронных сетях задач классификации присутствует много входов и много выходов. Так как число выходов может быть очень большим, и отсутствует необходимость построения графиков для каждого выхода сети, было принято решение предоставить пользователю в качестве оценки обучения итоговый график «Оценка обучения сети», по которому он может судить о правильности хода этого процесса.
Рис. 7. Форма «Линейный нейрон»
Рис. 8. Формы «Многослойный персептрон»
Разработанное приложение будет полезно как для тех, кто только начинает изучать нейронные сети, так и для тех, кому необходимо построение нейросетевой модели для обработки большого объема данных.
Литература
1. Хайкин С. Нейронные сети: полный курс / С. Хайкин. - 2-е изд., испр.; пер. с англ. - М.: ООО «И.Д. Вильямс», 2006. - 1104 с.
2. Калинин А.В. Технология нейросетевых распределённых вычислений: монография / А.В. Калинин, С.Л. Подвальный. - Воронеж: ВГТУ, - 2004. - 121с.
3. Калинин А.В. Методы решения плохо обусловленных систем линейных уравнений на основе распределённых нейросетевых вычислений / А.В. Калинин, С.Л.
Подвальный // Системы управления и информационные технологии. - 2004. - № 3 (15).- С. 22-26.
4. Круглов В.В. Искусственные нейронные сети. Теория и практика / В.В. Круглов, В.В. Борисов. - 2-е изд., стереотип. - М.: Горячая линия-Телеком, 2002. - 382 с.
5. Ясницкий Л.Н. Введение в искусственный интеллект / Л.Н. Ясницкий. - М.: Издательский центр «Академия», 2008. - 176 с.
6. Каллан Р. Основные концепции нейронных сетей / Р. Каллан; пер. с англ. - М.: ООО «И.Д. Вильямс», 2001. - 287 с.
7. Троелсен Э. Язык программирования C# и платформа .NET 4.5 / Э. Троелсен; 6-е изд. - М.: ООО «И.Д. Вильямс», 2013. - 1312 с.
8. Медведев В.С. Нейронные сети. MATLAB 6 / В.С. Медведев, В.Г. Потемкин; под общ. ред. к. т. н. В. Г. Потемкина. - М.: ДИАЛОГ-МИФИ, 2002. - 496 с.
9. Ясницкий Л.Н. Искусственный интеллект. Элективный курс: учеб. пособ. / Л.Н. Ясницкий. - М.: БИНОМ. Лаборатория знаний, 2011. - 240 с.
10. Круг П.Г. Нейронные сети и нейрокомпьютеры: учебное пособие по курсу «Микропроцессоры» / П.Г. Круг. - М.: Издательство МЭИ, 2002. - 176 с.
Воронежский государственный технический университет
PROGRAM IMPLEMENTATION OF THE NEURAL NETWORK DESIGNER E.A. Gantseva1, V.F. Barabanov2, N.I. Grebennikova3, D.S. Boldyrev4
'PhD, Associate Professor, Voronezh State Technical University, Voronezh, Russian Federation,
e-mail: [email protected] 2Full Doctor, Professor, Voronezh State Technical University, Voronezh, Russian Federation,
e-mail: [email protected]
3PhD, Associate Professor, Voronezh State Technical University, Voronezh, Russian Federation,
e-mail: [email protected] 4MA, Voronezh State Technical University, Voronezh, Russian Federation, e-mail: [email protected]
At present, artificial neural networks are an important extension of the concept of computation. Neural networks are either manufactured as part of specialized devices, or rather expensive, and often both. They demand a considerable amount of time to develop, while the software implementations on the latest computers are only an order of magnitude less productive, which makes the use of neuroprocessors unprofitable. The functionality of various software products have similar capabilities to varying degrees, some of them have a large number of tools that are not suitable for initial acquaintance with neural networks, and also have a high cost.
The article suggests a model of the class library for constructing neural networks. The library contains classes that allow to create, configure, train, and test neural networks. The modular structure of the library allows the developer to make changes in order to expand the functionality, without fear of disrupting the work of other modules. Considerable attention is paid to the description of software development for the construction of neural networks based on this library; the overview of existing software products with similar functionality is given
Key words: linear neuron, perceptron, multilayer neural network, back propagation error algorithm
1. Haykin S. "Neural networks" Russ. ed., Moscow, Vil'yams, 2006, 1104 p.
2. Kalinin A.V., Podval'ny S.L. "The technology of neural network distributed computing: monograph" ("Tekhnologiya ney-rosetevykh raspredelyonnykh vychisleniy: monografiya"), Voronezh, VSTU, 2004, 121 p.
3. Kalinin A.V., Podval'ny S.L. "Methods for solving ill-conditioned systems of linear equations on the basis of distributed neural network calculations", Automation and Remote Control, 2004, no. 3 (15), pp. 22-26.
4. Kruglov V. V., Borisov V. V. "Artificial neural networks. Theory and Practice, 2nd ed., Stereotype" ("Iskusstvennye ney-ronnye seti. Teoriya i praktika, 2-e izd., stereotip"), Moscow, Hotline - Telecom (Goryachaya liniya - Telekom), 2002, 382 p.
5. Yasnitskiy L. N. "Introduction to the Artificial Intelligence" ("Vvedenie v iskusstvennyy intellekt"), Moscow,Akademiya, 2008, 176 p.
6. Callan R. "Neural networks", Russ. ed., Moscow, Vil'yams, 2001, 287 p.
7. Troelsen A. "C# and the .NET Platform", Russ. ed., Moscow, Vil'yams, 2013, 1312 p.
8. Medvedev V. S., Potemkin V. G. "Neural networks. MATLAB 6" ("Nejronnye seti. MATLAB 6"), Moscow, DIALOG-MIFI, 2002, 496 p.
9. Yasnitskiy L. N. "Artificial Intelligence. Elective course. Textbook" ("Iskusstvennyy intellekt. Elektivnyy kurs: ucheb. posob."), Moscow, BINOM, Laboratoriya znaniy, 2011, 240 p.
10.Krug P. G. "Neural networks and neurocomputers: A manual on the course "Microprocessors"" ("Neyronnye seti i ne y-rokomp'yutery: Uchebnoe posobie po kursu «Mikroprotsessory»"), Moscow, MEI, 2002, 176 p.
References