БИБЛИОТЕКА ОБУЧЕНИЯ И ОТЛАДКИ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ ТИПА МНОГОСЛОЙНЫЙ ПЕРСЕПТРОН - Студенческий научный форум

V Международная студенческая научная конференция Студенческий научный форум - 2013

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

Валиева Е.Ф. 1
1Пермский государственный национальный исследовательский университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
ВВЕДЕНИЕ

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

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

Исследование современных программных продуктов показало, что для полноценного использования НС не хватает: механизмов отладки, подходов к отладке НС с помощью знаний пользователя, т.е. нужно использовать не столько его знания о НС, сколько знания о ПО, поддержки сложного исследовательского процесса подбора НС под задачу и ведения журнала эксперимента. [3, 6, 16, 17,18, 19] С помощью журнала легко анализировать результат и повторять любой эксперимент.

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

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

АЛГОРИТМ РАБОТЫ КОМПОНЕНТА

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

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

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

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

АЛГОРИТМ РАБОТЫ ОТЛАДКИ НС НА ПРИМЕРЕ КЛАССИФИКАЦИИ ИРИСОВ

Рассмотрим алгоритм работы этого метода на конкретном примере.

В качестве предметной области возьмём данные об ирисах [15]. Первый параметр вектора – это длина чашелистика в см, второй параметр – ширина чашелистика в см, третий – длина лепестка в см, четвёртый – ширина лепестка чашелистика в см и пятый – это вид цветка, который и должна будет определить сеть в ходе своей работы. Возьмём несложную по структуре сеть, т.к. наша главная задача – это её отладка. Исходя из знаний о ПО, будем строить сеть следующим образом: у неё будет четыре входа, каждый из которых соответствует параметру цветка, один слой, на котором будет 5 нейронов, и один выход. Значение выхода – это наименование цветка, которое необходимо распознать сети.

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

Учитывая, что в данном примере есть три вида ирисов: Iris-setosa, Iris-versicolor, Iris-virginica, а сеть согласно данному алгоритму обучения может принимать значения от 0 до 1, то допустим, что выходной нейрон будет принимать формально три значения: 1.0, 0.5, 0.0, что соответствует каждому виду. Т.к. в сети есть ошибка расчёта (погрешность), то значение выходного сигнала будет сравниваться не с конкретным числом, а будет проверяться, попало ли это значение в окрестность одного из этих чисел. Окрестность положим равной 0.15. Если число попало в нужный промежуток, то это означает, что вид ириса был распознан правильно, в противном случае, неправильно. А если сеть не смогла распознать цветок, то значение выходного нейрона будет отмечено как «Unknown».

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

Пройдя создание, обучение и тестирование сети, можно переходить к отладке. Рассмотрим этот этап более подробно. Отладка сети необходима в случае, если сеть не распознала всю выборку, и пользователь хотел бы попытаться улучшить результат. Итак, у нас есть обученная и протестированная сеть, и мы хотим повысить результат правильного распознавания. Как же будет работать компонент отладки НС на практике.

Алгоритм работы:

  1. Выбираем атрибуты, по которым будем делить всю выборку, затем у каждого атрибута зададим интервалы, попадая в которые, вектор будет относиться к определённой группе. Выберем, например, разделение только по первому атрибуту и зададим промежутки, в которые должен попадать этот параметр. Промежутки могут задаваться произвольно, но все значения должны оказаться в одном из них. Зададим следующие промежутки: [4.3; 5.4], (5.4; 6.5] и (6.5; 7.7]. В итоге каждый вектор будет определён в свой массив по первому значению.

  2. После того, как вся выборка поделена на три массива, в котором хранятся вектора, переходим к работе с каждым из них:

    1. Берём первый массив, создаём для него новую сеть, обучаем её и тестируем на тестовой выборке. Получаем число верно распознанных цветов;

    2. Берём второй массив и проделываем те же действия;

    3. С третьим массивом повторяем тот же алгоритм.

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

  2. Далее весь алгоритм можно повторить, выбрав изначально другие параметры для разбиения.

ТЕСТИРОВАНИЕ ПРИЛОЖЕНИЯ

Приложение создано, осталось только убедиться в правильности его работы. Проведём два контрольных теста: первый будет проводиться только на тестовой выборке, т.е. с этой выборкой сеть ещё не работала, второй – на всех данных сразу (тестовая и обучающая выборки). Тесты будут проводиться на данных об «Ирисах», «Акциях» и «Метеоусловиях». Атрибуты ирисов: первый параметр вектора – это длина чашелистика в см, второй параметр – ширина чашелистика в см, третий – длина лепестка в см, четвёртый – ширина лепестка чашелистика в см.[10]. Атрибуты акций: первый параметр вектора – цена закрытия сессии (в долларах США), второй – цена открытия (в долларах США), третий – максимальная цена (в долларах США) и четвертый – минимальная цена (в долларах США). Атрибуты областей по метеоусловиям: первый параметр –норма осадков для месяца (мм), второй – данные по температуре для месяца (градусы С), третий – осадки за месяц (мм) и четвёртый – средняя температура за месяц (градусы С). Данные взяты из хранилища данных ЗАО «Прогноз», составлены РОССТАТ РФ. Во всех примерах решается задача классификации.

Первый тест (тестовая выборка)

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

Результаты тестирования показали, что 16 цветов было распознано правильно из 21, 249 акций было распознано верно из 447 и 221 область из 389 по метеоусловиям.

Теперь попробуем улучшить результат, отладив НС с помощью отладки по атрибутам. Возьмем, ирисы: выбираем первый параметр – длина чашелистика, разбиваем всё множество на три группы, в первую группу входят все вектора, у которых значение этого параметра попадает в промежуток [4.3; 5.4], во вторую группу – у которых значение попадает в промежуток (5.4; 6.5], и третья – если находится в промежутке (6.5; 7.7]. Итак, получилось 3 выборки. Строим по очереди для каждой из них сеть и обучаем её, и затем тестируем каждую полученную НС на тестовой выборке.

Берём и таким же образом отлаживаем выборку по «Акциям»: разбиваем по 1,2 атрибуту, т.е. по цене закрытия и цене открытия, и задаём интервалы для первого атрибута: [10; 500], (500; 1200], (1200; 1900], затем для второго: [10; 300], (300; 600], (600; 900].

И то же самое делаем с данными по «Метеоусловиям». Здесь разобьём по 1 и 3 атрибутам, т.е. по норме осадков для месяца (мм) и по осадкам за месяц (мм) соответственно. Задаём интервалы у 1 атрибута: [1; 32], (32; 64], (64; 100], и у второго: [1; 29], (29; 58], (58; 100] (см. Таблицу 1).

Таблица 1. Тест №1. Тестовая выборка.

1 Тест

Методы тестирования (%)

Данные

Без отладки

Отладка по атрибутам

Результат (до и после отладки)

Кластери-

зация

Результат (до и после отладки)

«Ирисы»

76,2

100

23,8

100

23,8

«Акции»

58,7

73,2

14,5

70,7

12

«Метео-условия»

56,8

75,1

18,3

75,6

18,8

Результаты тестирования после отладки показали, что результат улучшился и в итоге был распознан 21 цветок из 21, т.е. с 76,2% результат работы сети был улучшен до 100%. Среди акций было распознано 323 из 447, т.е. с 58,7% результат работы сети был улучшен до 73,2%. По областям было распознано 292 из 389, т.е. результат улучшился с 56,8% до 75,1%.

Второй тест (все данные)

Посмотрим, повторится ли такой результат на всех данных. Промежутки для разбиения параметров оставим те же и проделаем весь алгоритм заново. Для этого изменим только выборку, которая находится в отдельном файле. Затем повторим предыдущий эксперимент через извлечение данных из базы. Т.е. будет загружена та же самая уже обученная сеть с помощью десериализации. На этапе тестирования начальной сети было распознано около 59 % акций, 76% ирисов и 57% областей. Применяем отладку НС с помощью кластеризации. Результаты тестирования приведены в Таблице 2.

Таблица 2. Тест №2. Все данные.

2 Тест

Методы тестирования (%)

Данные

Без отладки

Отладка по атрибутам

Результат (до и после отладки)

Кластери-

зация

Результат (до и после отладки)

«Ирисы»

74,7

100

25,3

100

25,3

«Акции»

55,7

75,7

20

73,2

17,5

«Метео-условия»

57,9

73,4

15.5

73,9

16

В результате получаем, что сеть смогла распознать 150 ирисов из 150, 713 акций из 974 и 526 областей из 712.

ЗАКЛЮЧЕНИЕ

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

Проведено два контрольных тестирования: на тестовой выборке и всех данных, т.е. обучающая выборка и тестовая вместе. Были взяты данные по ирисам, акциям и областям. Тесты показали, что в ходе отладки результат улучшился, и увеличилось качество работы сети в среднем на 19,6% после отладки по атрибутам и на 18,9% после кластеризации. Все проведенные эксперименты были занесены в журнал.

Библиографический список
  1. Андреева Н.В. Выбор методов и средств онтологического анализа стандартов информационной безопасности.

  2. Богославский С.Н. Область применения искусственных нейронных сетей и перспективы их развития. // Научный журн. КубГАУ, март 2007, №27(3). 11 с.

  3. Грузман И.С., Киричук В.С., Косых В.П., Перетягин Г.И., Спектор А.А. Цифровая обработка изображений в информационных системах: Учебное пособие.- Новосибисрк: Изд-во НГТУ, 2002. - 352 c.

  4. Каллан Р. Основные концепции нейронных сетей = The Essence of Neural Networks First Edition. — 1-е. — «Вильямс», 2001. — С. 288.

  5. Круглов В. В., Борисов В. В. Искусственные нейронные сети. Теория и практика. — 1-е. — М.: Горячая линия - Телеком, 2001. — С. 382.

  6. Осовский С. Нейронные сети для обработки информации / Пер. с польского И.Д. Рудинского. – М.: Финансы и статистика, 2002.

  7. Тарков М.С. Нейрокомпьютерные системы. 2006.

  8. Терехов В.А., Ефимов Д.В., Тюкин И.Ю. Нейросетевые системы управления. — 1-е. — Высшая школа, 2002. — С. 184.

  9. Царегородцев В.Г. Производство полуэмпирических знаний из таблиц данных с помощью обучаемых искусственных нейронных сетей. 2000. 121 с.

  10. Edgar Anderson (1935). «The irises of the Gaspé Peninsula».Bulletin of the American Iris Society59: 2–5.

  11. Fisher, R.A. (1936). «The Use of Multiple Measurements in Taxonomic Problems».Annals of Eugenics7: 179–188.

  12. S. D. Yeung, lan Cloete, D. Shi, W.Y.Ng Wing. Sensitivity Analysis for Neural Network. 2009. 89 c.

  13. Анализ чувствительности [электронный документ],

www.statsoft.ru/home/portal/applications/NeuralNetworksAdvisor/Adv-new/SensitivityAnalysis.htm

  1. Алгоритм обратного распространения ошибки [электронный документ], www.aiportal.ru/articles/neural-networks/back-propagation.html

  2. База данных по ирисам [электронный документ], archive.ics.uci.edu/ml/datasets/Iris

  3. ЗАО Прогноз [официальный сайт],

www.prognoz.ru/ru/func_analiz.php

  1. Data Mining [электронный документ],

ru.wikipedia.org/wiki/Data_mining

  1. NeuroShell Treder [электронный документ],

http://www.neuroproject.ru/neuro.php

  1. NeuroSolutions [официальный сайт],

www.neurosolutions.com/

Научный руководитель: старший преподаватель каф. МО ВС, К.А. Юрков.

10

Просмотров работы: 1636