В данной статье решается задача разработки шаблона, который позволяет познакомиться с процессом создания и обучения, а также прогнозирования результатов нейронных сетей в системе Matlab. Конечный результат работы призван помогать студентам технических специальностей и осваивать начальный этап работы с нейросетями. Для реализации задачи используется система MatlabR2013b.
Ключевые слова:нейронная сеть, прогнозирование.
Технологии искусственных нейронных сетей являются одним из важнейших направлений современной науки. Они находят широкое применение в различных областях науки и производства. Изучению такого направлению искусственного интеллекта в курсе подготовки студентов по информатике и вычислительной технике уделяется большое внимание.
В курсе «Технологии искусственного интеллекта в управлении» Приамурского государственного университета имени Шолом-Алейхема студенты обучаются использованию рассматриваемой технологии в разнообразных средах. Поэтому была поставлена задача разработать простой шаблон, по которому можно познакомится с достоинствами и недостатками искусственных нейронных сетей и использовать его в дальнейших научных и практических работах.
Одной из существующих систем, позволяющей в достаточно простой форме реализовать нейронные сети, является Matlab, по которой имеются множество научных разработок.
Так, В. Д. Семейкин и А.В Скупченко [1] занимаются изучением и созданием нейросетевых моделей для решения телекоммуникационных задач. В. О. Андреев, Н. В. Савиных рассмотрели подход интеллектуализации технологических процессов и процессов управления на основе мягких вычислений, ядро которых составляют нечеткая логика, искусственные нейронные сети и генетические алгоритмы [2]. В своей работе М. Ю. Буриченко, О. Б. Иванцев, О. В. Букреева представили возможности использования программного пакета Matlab для построения моделей прогнозирования с помощью искусственных нейронных сетей, привели результаты построения пяти искусственных нейронных сетей, провели анализ результатов и возможности пересмотра и корректировки весов построенной искусственной нейронной сети [4]. Д. Балабио и М. Васигни в своей статье [6] описали комплект инструментов системы Matlab для создания карт Кохонена, приведя практический пример. А. Нейямадпур писал о возможности представления формата 2D в формат 3D с помощью нейронных сетей в системе Matlab [7]. Теоретические аспекты программирования нейронных сетей изложены в различных пособиях [3, 5, 7, 8].
После изучения теоретических сведений была создана лабораторная работа, в которой показывается пример построения нейронной сети, на основе данных по количеству студентов Приамурского Государственного Университета имени Шолом-Алейхема, сдавших экзамены на отлично с 2007 по 2012 года (табл.1). А также делается прогноз данных на 2013 год и сравнение его с реальными данными.
Таблица 1
Первичные данные
Факультет/Год |
2007 |
2008 |
2009 |
2010 |
2011 |
2012 |
2013 |
ТДиГС |
21 |
18 |
27 |
23 |
27 |
25 |
29 |
МИТТ |
28 |
30 |
32 |
36 |
34 |
36 |
38 |
СКДиС |
40 |
46 |
52 |
54 |
46 |
48 |
51 |
ФИиЖ |
40 |
36 |
40 |
40 |
42 |
38 |
40 |
ЭУиП |
40 |
41 |
38 |
36 |
34 |
36 |
32 |
ПП-ЦПО |
40 |
38 |
42 |
44 |
40 |
48 |
46 |
Покажем разработанный шаблон проектирования и изучения нейронных сетей в системе Matlab R2013b.
После запуска системы Matlab в командной строке требуется ввести команду nntool, которая вызовет окно ввода данных и создания нейронной сети (Neural Network/Data Manager).
Нажатие на кнопку New открывает окно создания нейросети или данных (Create Network or Data). После выбора вкладки Data в поле Name необходимо ввести новое имя входных данных «P», а в поле Value сами значения входных данных: [1 2 3 4 5 6; 7 8 9 10 11 12], в которых числа 1–6 являются кодом каждого из шести факультетов ВУЗа, а 7–12 кодируют год с 2007 по 2012 соответственно. В графе Data Type, справа от поля Value, необходимо выбрать тип данных Inputs.
Нажатием кнопки Create создаются новые данные в окне Neural Network/Data Manager в поле Input Data, но окно создания нейросети или данных по прежнему остается открытым. Следующим шагом является изменение имя данных («Т») и ввод целей, которые представляют собой массив 6x6, содержащий в себе информацию о количестве студентов-отличников на конкретном факультете в конкретном году. Данные вводятся вручную.
[21 |
18 |
27 |
23 |
27 |
25; |
28 |
30 |
32 |
36 |
34 |
36; |
40 |
46 |
52 |
54 |
46 |
48; |
40 |
36 |
40 |
40 |
42 |
38; |
40 |
41 |
38 |
36 |
34 |
36; |
40 |
38 |
42 |
44 |
40 |
48] |
После этого справа выбирается тип данных Targets. Нажатием кнопки Create создаются новые данные цели.
Последним шагом в создании является создание самой нейронной сети. В окне Create Network or Data необходимо перейти на вкладку Network и изменить имя будущей сети на «network». Тип сети по умолчанию Feed-forward backprop, в графах входные данные и цели в списке выбрать введенные прежде данные P и T. После нажатия Create создается новая нейронная сеть с выбранными входными параметрами.
Следующий этап — обучение и тренировка сети. Двойной щелчок левой кнопкой мыши по созданной нейронной сети network в окне менеджера Neural Network/Data Manager открывает окно работы с сетью.
На вкладке View представлена сама нейронная сеть. Переходом на вкладку Reinitialize Weights, где в графе Input Ranges выбираются входные данные P из списка Get from input. Затем последовательное нажатие кнопок Set Input Ranges и Initialize Weights позволяет нам инициализировать веса, необходимые для инициализации всей сети.
Следующий шаг — обучение сети. Переходом на вкладку Train открывается окно обучения, в котором на месте входных данных и целей выбираются P и T соответственно. Справа в графе результатов обучения (Training Results) необходимо поменять имя выходных данных (Outputs) и ошибок (Errors) на O и E соответственно. Затем, нажатием кнопки Train Network начнется обучение сети, процесс которого можно наблюдать в окне Neural Network Training. После окончания обучения окно можно закрыть.
После того, как обучение закончилось в окне менеджера Neural Network/Data Manager появились два типа данных: Output Data (O) и Error Data (E). Двойной щелчок по данным O открывает окно с выводом данных. Нажатием кнопки Export в окне менеджера, а затем повторным нажатием Export во вновь открывшемся окне можно перенести полученные данные в рабочую область Matlab, где они будут представлены в более презентабельном виде. Покажем скриншоты с рабочей области Matlab, на которых изображены таблица значений, которые были известны изначально, T (рис. 1), таблица полученных значений O (рис. 2) и таблица ошибок E (рис. 3).
Рис. 1. Таблица первичных данных, T
Рис 2. Таблица полученных данных, O
Рис. 3. Таблица ошибок, E
Таким образом, из таблиц можно рассчитать, что средняя ошибка сети составляет 1.95, что говорит о продуктивной работе системы.
После обучения сети можно переходить к прогнозированию данных. Возвращаясь к окну менеджера сетей и данных (Neural Network/Data Мanager), необходимо создать дополнительные входные данные нажатием кнопки New. Перейдя во вкладку Data, имя данных меняется, например, на P1, а значения задаются следующим образом:
[1 2 3 4 5 6; 8 9 10 11 12 13].
Значения 1–6 по-прежнему обозначают номера факультетов, а 8–13 код года с 2008 по 2013, поскольку в размерность массива изначально входит 6 столбцов, значит, для прогнозирования результатов на 2013 год необходимо составить массив из 6 столбцов, включающий в себя этот год.
Далее необходимо вернуться к окну работы с сетью Network. Во вкладке Simulate на месте входных значений выбирается массив P1, а у выходных значений Outputs меняется имя на forecast. После нажатия на кнопку Simulate Network можно вернуться в окно менеджера Neural Network/Data Manager и, нажатием на кнопку Export, скопировать выходной массив forecast в рабочую область Matlab. После получения таблицы в рабочей области, внимание обращается на последний столбец, который отвечает за прогнозирование на 2013 г.
Сравнивая данные, выданные системой, и реальные данные, можно убедиться, что нейронная сеть действительно делает прогнозы, приближенные к реальности (рис. 4).
а) данные сети б) данные из источника
Рис. 4. Сравнение данных, полученных прогнозированием.
Таким образом, можно сделать вывод о том, что созданная нейронная сеть действительно делает прогнозы на будущий год. В сравнении с реальным количеством студентов-отличников за 2013 год средняя ошибка сети составляет 2,7. Но ее можно считать не столь существенной, поскольку закономерностей в реальном распределении студентов не наблюдается.
Представленная работа была применена в обучении студентов, обучающихся на направлении «Информационные системы и технологии», что помогло им ближе познакомиться с процессом создания и обучения нейронных сетей в системе Matlab, а также в разработке собственных приложений с использованием нейросетей.
Литература:
1. Семейкин В. Д., Скупченко А. В. Моделирование искусственных нейронных сетей в среде Matlab // Вестник Астраханского Государственного технического университета. Серия: управление, вычислительная техника и информатика. — 2009. — № 1. — С. 159–164.
2. Андреев В. О., Савиных Н. В. Интеллектуальные технологии, мягкие вычисления и программные средства их компьютерной реализации // Вестник компьютерных и информационных технологий. — 2006. — № 8. — С. 2–6.
3. Донской Д. А. Моделирование нейронных сетей в системе Matlab. — Пенза: ИИЦ ПГУ, 2006. — 155 с.
4. Буриченко М. Ю., Иванцев О. Б., Букреева О. В. Использование программного пакета Matlab для построения искусственных сетей нейронных сетей // Електронiка та системи управлiння. — 2011. — № 3 (29). — С. 120–123.
5. Андреев В. В., Порфирьева Н. Н., Прохоров А. М., Прохоров А. М. Исследования нейросетевой системы распознавания образов в среде Matlab // Вестник чувашского университета. — 2008. — № 2. — С. 113–120.
6. Ballabio, D. and M. Vasighi, 2012. A MATLAB toolbox for Self Organizing Maps and supervised neural network learning strategies. Chemometrics and Intelligent Laboratory Systems, 118: 24–32.
7. Neyamadpour, A. and S. Taib, 2009. Using artificial neural networks to invert 2D DC resistivity imaging data for high resistivity contrast regions: A MATLAB application. Computers & Geosciences, 35(11): 2268–2274.
8. Kuzmanovski, I. and M. Novic, 2008. Counter-propagation neural networks in Matlab. Chemometrics and Intelligent Laboratory Systems, 90(1): 84–91.