В современном мире технологии анализа данных набирают все большую популярность. Разделяют два основных направления, первое основывается на теории автоматов и алгоритмов, второе включает в себя приближенные методы решения задач. В настоящее время становятся перспективными технологии нейронных сетей, входящие во второе направление. Их основные преимущества: решение задач при неизвестных закономерностях, устойчивость к шумам — все это хорошо подходит под задачи современных веб-сайтов. Основными задачами в области обработки данных пользователей веб-ресурсов, которые требуется решать ежедневно, являются классификация и прогнозирование данных. Используя преимущества нейронных сетей, становится возможным создать эффективный инструмент для решения таких задач. Поэтому тематика данной работы, целью которой является разработка такого инструмента, является актуальной.
Для разработки выбран язык программирования PHP, так как является наиболее распространённым языком для написания серверной части веб-сайтов, следовательно, количество пользователей модуля будет наибольшим. В качестве системы управления содержимым была выбрана CMS «1С-Битрикс», так как на российском рынке она занимает лидирующие позиции, а также предоставляет удобный интерфейс для организации административной части модуля.
К существующим программным решениям можно отнести библиотеки FANN (Fast Artificial Neural Network), ANN и модуль, входящий в стандартный состав минимальной редакции, Big Data Bitrix. Однако данные средства обладают рядом недостатков. Big Data Bitrix — предоставляет функциональность, ориентированную на использования в рамках интернет-магазина. FANN и ANN могут решать значительно большее количество задач, но при этом не имеют встроенного решения в существующие системы управления контентом, что усложняет процесс внедрения.
Нейронные сети построены на основе человеческого мозга, представляющий собой чрезвычайно сложный, нелинейный, параллельный компьютер. Он обладает способностью организовывать свои структурные компоненты, называемые нейронами, так, чтобы они могли выполнять различные задачи с большей производительностью, чем современные компьютеры [1].
Для решения задач прогнозирования и классификации широко применяются следующие архитектуры нейронных сетей:
1) Однослойные сети прямого распространения;
2) Многослойные сети прямого распространения;
3) Сети с радиальной базисной функцией.
В данном приложении был использован многослойный персептрон, так как он представляет собой универсальное решение, а также простой в реализации алгоритм обучения. Для обучения нейронной сети используется алгоритм обратного распространения ошибки [1].
Нетрудно заметить, что концепция ООП хорошо подходит для реализации данного типа сетей. Сущности, участвующие в построении и работе нейронных сетей — это вес связи, нейрон, слой нейронной сети, нейронная сеть. Для каждой сущности нейронной сети, за исключением весов связей между нейронами, создан класс. Для обеспечения возможности дальнейшего развития и реализации модуля в других системах управления содержимым, функции построения и вычисления выходов нейронной сети выполнены в виде отдельной библиотеки с последующим внедрением в модуль системы «1С-Битрикс».
Система управления сайтом «1С-Битрикс» имеет модульную структуру. Каждый модуль отвечает за управление определенными элементами и параметрами сайта. Структура модуля соответствует общей структуре модулей системы «1С-Битрикс», что делает установку и настройку максимально простыми и не требующими специальных знаний. Для взаимодействия библиотеки с системой создан специальный класс, который предназначен для работы с базой данных CMS [2].
Система управления содержимым 1С-Битрикс содержит также такие программные единицы, как компоненты, которые позволяют ещё больше упростить работу с нейронными сетями.
Компонент — это логически завершённый код, предназначенный для извлечения информации из информационных блоков, представляющими собой уровень абстракции над обычными таблицами СУБД, и преобразования её в HTML-код для отображения в виде фрагментов веб-страниц. Компонент состоит из логики компонента (контроллера) и шаблона (представления). Компонент с помощью API одного или нескольких модулей манипулирует данными. Шаблон компонента выводит данные на страницу [3].
Для реализации поставленных в требованиях задач создадим два компонента: компонент, реализующий функцию классификации, и компонент, реализующий функцию предсказания.
Задача классификации представляет собой процесс, состоящий из нормализации входных данных, подачи их на вход нейронной сети, вычисление выходов с последующим процессом денормализации. Перед началом работы сеть должна пройти процесс обучения, который состоит в подаче уже известных входов и известных выходов в функцию обучения. Аналогично в процессе обучения входы и выходы должны быть нормализованы.
Прогнозирование представляет собой более сложную структуру: входные данные должны подаваться в виде наборов размерности, соответствующей количеству входов нейронной сети, и представлять из себя пересекающиеся последовательности данных. К примеру, для сети с количеством входов 3 и обучающего массива 1,2,3,4,5,6,7 наборы данных должны выглядеть как входной массив 1,2,3 с ожидаемым значением на выходе 4, входного массив 2,3,4 с ожидаемым значением 5, и т. д. После обучения, на вход сети подается последний набор. Для нашего примера это будет массив 5,6,7, и на выходе сети считывается предсказанное значение.
Для модуля реализована панель создания нейронных сетей в разделе администрирования. Это позволяет использовать одну и ту же обученную нейронную сеть для применения на различных страницах веб-сайта, а также получать доступ к настройкам нейронной сети без обращения напрямую к базе данных. Входными параметрами, которые необходимы для создания сети, должны являться:
1) название сети;
2) количество входов;
3) добавление и настройка уровней
Так как каждый уровень состоит из нейронов, то при создании сети и добавлении нового уровня необходимо также выставлять количество нейронов.
На основании этих требований сформируем интерфейс списка нейронных сетей, представленный на рисунке 1. Он позволяет управлять списком нейронных сетей, удалять их и просматривать их настройки в удобном виде. Также разработан интерфейс создания нейронной сети, изображенный на рисунке 2:
Рис. 1. Экранная форма страницы со списком нейронных сетей
Рис. 2. Экранная форма страницы настроек нейронной сети
Зачастую стандартный шаблон компонента не подходит под остальное визуальное представление сайта. Кроме того, применение нейронной сети в качестве классификатора и модуля, выполняющего функцию прогнозирования, возможно и без визуальной составляющей или содержать особые структуры для обработки входных данных. В связи с этим стандартный шаблон компонента должен представлять максимально простую структуру, демонстрирующую пример работы с модулем.
Пример пользовательского интерфейса компонента, реализующего функцию классификации, представлен на рисунке 3.
Рис. 3. Пример экранной формы пользовательского интерфейса компонента, реализующего функцию классификации
Компонент, реализующий функции прогнозирования, должен наглядно демонстрировать прогнозирование зависимости. Пример реализации пользовательского интерфейса для компонента, реализующего функции прогнозирования представлен на рисунке 4.
Рис. 4. Пример экранной формы пользовательского интерфейса компонента, реализующего функцию прогнозирования
Данный модуль может быть использован как по прямому назначению для решения задач классификации объектов или прогнозирования, так и для решения задач вычислений спам-сообщений, автоматических ответов на вопросы пользователей, предсказания их поведения и др.
В настоящее время после этапов тестирования и отладки создана альфа-версия программного модуля. Модуль проходит опытную эксплуатацию.
Литература:
- Хайкин, Саймон Нейронные сети: полный курс, 2-е изд., испр.: Пер. с англ. — М.: ООО «И. Д. Вильямс», 2006. — 1104 с.
- 1С-Битрикс: Управление сайтом [Электронный ресурс]. — Электрон. текстовые дан. — Режим доступа: http://www.1c-bitrix.ru/products/cms/.– (Дата обращения: 19.02.2016).
- 1С-Битрикс: Центр поддержки разработчиков [Электронный ресурс]. — Электрон. текстовые дан. — Режим доступа: http://dev.1c-bitrix.ru.– (Дата обращения: 19.02.2016).