Поддержка принятия решений в сфере экономики при помощи нейронной сети с алгоритмом обратного распространения ошибки - Студенческий научный форум

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

Поддержка принятия решений в сфере экономики при помощи нейронной сети с алгоритмом обратного распространения ошибки

Соколов В.А. 1
1Сибирский Федеральный Университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Многие сферы деятельности человека сталкиваются проблемой преобразования данных без использования конкретной формулы, либо использования малоэффективных алгоритмов, оптимизировать которые невозможно. Так врач с большим опытом, глядя на результаты анализов пациента способен поставить диагноз, хотя точной формулы для получения диагноза по данным анализам не существует, просто большой опыт в медицине позволил замечать, что с подобными результатами больной как правило страдает от той или иной болезни. Или формула существует, но в ней задействовано очень много вычислений, с которыми человек физически не способен справится за отведенное время. Конечно, во втором случае можно было бы составить программу для расчёта и классификации болезни, но если мы имеем действительно объёмные вычисления и большое количество данных (например, крупный медицинский центр), то эффективность таких решений вновь падает [1]. Другим примером таких вычислений может служить группа менеджеров, решающих, кого из постоянных покупателей включить в рекламную рассылку сообщений, а кого не стоит: они просматривают данные по сотням покупателей, о каждом из которых имеется некоторый фиксированный набор данных, состоящий как из численных (совокупная стоимость покупок за год, количество купленного товара той или иной категории и пр.), так и бинарных переменных (имеет детей или нет, курит или нет и пр.) – всего 27 данных по каждому покупателю.

Разумеется, такой процесс достаточно длителен. Однако есть в такой работе один аспект: со временем менеджер, основываясь на прошлом опыте, может приблизительно представлять итоговый результат, принимая решения значительно быстрее. В таком случае можно говорить о том, что он обучается на готовых результатах. Такой же возможностью обладает такая математическая модель, как нейронная сеть. В настоящее время программы, использующие данную модель, становятся всё более популярны, и в некоторой части это связано с развитием технологий обработки Больших данных. Давайте же разберемся с тем, что это такое.

Нейронные сети ­– одно из направлений в разработке систем искусственного интеллекта. Идея заключается в том, чтобы максимально близко смоделировать работу человеческой нервной системы – а именно, её способности к обучению и исправлению ошибок. В этом состоит главная особенность любой нейронной сети — она способна самостоятельно обучаться и действовать на основании предыдущего опыта, с каждым разом делая всё меньше ошибок [2]. Наша нервная система состоит из нейронов, которые передают сигналы между собой и основывают когнитивные связи для того, чтобы сумма сигналов давала необходимый результат. В случае успешной связи, количество точек соприкосновения нейронов растет, повышая её значимость. В случае ложной связи организм пытается её уничтожить, либо максимально ослабить её влияние.

Алгоритм обратного распространения ошибок работает по тому же принципу. У нас есть массив объектов, называемых нейронами, связанных между собой и способными передавать сигнал далее по системе связей, называемых нейронной сетью. В роли сигналов выступают входные данные сети. В результате их объединения благодаря силе связей (в теории нейронных сетей сила связей называется весом) данные преобразуются и в результате работы сети получается выход – некоторый результат работы. Для предотвращения зацикливания и возможности связать все нейроны, вводится понятие слоёв – совокупность групп нейронов: каждый нейрон слоя связан со всеми нейронами следующего слоя. Но, как и нервная система человека, программа способна обучаться: программа на процессе обучения имеет некоторое количество данных, и верный результат для каждого из таких наборов данных. Получая результат работы по одной выборке данных, программа сравнивает свой результат с тем, который должен получится, и начинает корректировать веса связей между нейронами.

Как же происходит коррекция данных? Как следует из названия алгоритма, все нейроны предыдущего слоя получают значение ошибки и анализируют, какая «часть» этой ошибки произошла из-за данного нейрона согласно своему весу. Получая информацию о том, сколько процентов от ошибки появилось благодаря конкретной связи, программа вносит исправление веса данной связи и передаёт эту «часть» ошибки дальше, от конца к началу. Таким образом происходит коррекция весов связей. Иными словами, если некоторая связь незначительна, не нужна или вносит «ненужную часть сигнала», то в результате работы алгоритма вес такой связи стремится к нулю. И напротив, если та или иная связь значима в процессе получения результата, её вес начинает расти.

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

Нейроны нашего мозга не производят модификацию сигнала, а просто передают его дальше. В программных решениях на основе нейронных сетей используются такие нейроны, и называются они перцептронами: получая сигналы предыдущего слоя они суммируют сигнал и передают его к следующему слою. Однако перцептроны могут использоваться лишь в узком диапазоне задач программирования: дело в том, что при большом количестве данных и немалом количестве нейронов может произойти такая ситуация, что значение входа нейрона превысит размер выделяемой памяти, произойдет переполнение переменной. Разумеется, такая ситуация завершится ошибкой выполнения программы. Поэтому как правило в нейронных сетях, получая совокупный вход, нейрон преобразовывает результаты при помощи активационной функции, и только потом передаёт его в следующий слой. Наиболее используемой является сигмоидальная функция активации: , в которой x–совокупный вход нейрона, а y– вывод нейрона. Такая функция принимает значения в диапазоне . Так, при x стремящемся к , функция стремится к 0, а при xстремящемся к , функция стремится к единице. Таким образом программа запрещает сигналу принимать слишком большие значения [3].

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

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

Каждый кортеж данных состоял из двадцати восьми коэффициентов: первые 11 коэффициентов являлись числами с плавающей точкой и обозначали некоторые численные данные по покупателю: количество кг фруктов, купленных за год, коэффициент доверия к сети магазинов и т.д.; следующие 16 коэффициентов были представлены единицами или нулями и обозначали логические значения некоторых параметров: посещает магазин после 18:00 или нет, имеет ли на покупателя влияние рекламной рассылки ли нет и т.д.; последний коэффициент также представлен нулём или единицей и обозначает решение: единица – покупатель включён в рассылку, нуль –не включён.

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

В результате обучения сеть правильно классифицировала 68% данных. Конечно, результат не максимальный, так как для большей точности можно было бы усложнить архитектуру сети (добавить больше слоёв и нейронов в слоях), а также увеличить время обучения. Также, если бы выборка обучающих данных была больше, это позволило бы программе гораздо лучше обучиться.

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

Список литературы

Каллан Р. Основные концепции нейронных сетей. : Пер. с англ. – Издательский дом «Вильямс», 2001. – 298 с.

Хабр, статья «Нейронные сети для начинающих. Часть 1» [Электронный ресурс] – Режим доступа: https://habr.com/post/312450/.

NeuroHive, статья «Функции активации нейросети: сигмоида, линейная, ступенчатая, ReLu, tahn» [Электронный ресурс] – Режим доступа: https://neurohive.io/ru/osnovy-data-science/activation-functions/

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