РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ СОЗДАНИЯ И ОБУЧЕНИЯ НЕЙРОСЕТИ С ЗАДАННЫМИ ПАРАМЕТРАМИ

Кравцов И.Н.
Студент магистратуры, бакалавр, кафедра вычислительных технологий, Кубанский государственный университет

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ СОЗДАНИЯ И ОБУЧЕНИЯ НЕЙРОСЕТИ С ЗАДАННЫМИ ПАРАМЕТРАМИ

Аннотация

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

Ключевые слова: нейронные сети, разработка ПО, Python.

Keywords: neural networks, software development, Python.

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

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

  • реализация интерфейса для загрузки данных из файла в формате csv или напрямую из базы данных ;
  • перевод полученных данных в входные данные нейронной сети;
  • возможность выбора ИНС из готовых шаблонов
  • возможность создавать новые ИНС с пользовательскими настройками
  • реализация графического интерфейса для взаимодействия с с объектами сети;
  • возможность выбора алгоритма обучения ИНС;
  • возможность выбора формулы нормализации;
  • возможность выбора функции активации при создании ИНС.
  • возможность сохранить ИНС в формат pickle для дальнейшего использования;
  • построение графиков для визуализации ошибок обучения;
  • расчет и запись полученных значений работы ИНС;

Результаты проведенного анализа специфики современных методов и средств создания искусственных нейронных сетей, является подтверждением актуальности исследуемой тематики. Актуальной задачей является разработка программного обеспечения на базе использования кроссплатформенного языка программирования Python благодаря подключению библиотек интеллектуального анализа данных.
Программная система для создания и обучения нейронной сети была разработана на языке программирования Python с использованием IDE PyCharm, библиотек PyQt5, Pyqtgraph, NumPy и Matplotlib. Для создания оконного приложения использовался фреймворк PyQt5, для создания web приложения использовался фреймворк Django.
После запуска программы пользователю доступны две функции — это загрузка уже существующей модели или создание новой. При загрузке уже существующей модели пользователю необходимо указать файл, где она находится, файл такого типа имеет формат * .pickle, что является стандартным для встроенного в Python модуля для сериализации и десериализации данных. После этого для пользователя станут доступны новые действия. Если пользователь выбирает создание нового образца, то ему необходимо выбрать файл с набором данным, такой файл должен иметь формат * .csv что является аналогом формата файлов табличного процессора Microsoft Exсel. Данные в этом файле имеют четкую структуру, облегчает процедуру их открытия и обработки в рамках системы.

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

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

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

Литература:

  1. Панфилов П.Н. Введение в нейронные сети. Современный трейдинг. – 2001. – № 2. – С. 12–17.
  2. Горбань А.Н. Обучение нейронных сетей. М.: «ParaGraph», 2010. – 160 с.