Разработка нейросетевой программы прогнозирования стоимостных показателей объектов

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

1. Обзор научно-технической литературы и анализ состояния проблемы

1.1 Обзор научно-технической литературы и существующих программных продуктов

1.2 Анализ состояния проблемы

2. Техническое задание на разработку нейросетевой программы прогнозирования стоимостных показателей объектов

3. Обоснование выбора наилучшей модели для прогнозирования стоимостных показателей объектов

3.1 Математический аппарат

3.2 Подбор наилучшей модели нейронной сети для прогнозирования стоимостных показателей объектов

4. Разработка программно-алгоритмического обеспечения

4.1 Обоснование выбора средств разработки

4.2 Разработка структуры программы

4.3 Разработка модулей программы

4.4 Разработка пользовательского интерфейса

4.5 Разработка алгоритма загрузки нейронной сети в проект

4.6 Разработка алгоритма работы конструктора создания нейросетевой экспертной системы

4.7 Разработка алгоритма загрузки данных в проект

5. Организационно-экономический раздел

5.1 Экономическое обоснование необходимости разработки программного обеспечения

5.2 Расчёт затрат на создание программного обеспечения, цены и прибыли от его реализации

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

Заключение

Список сокращений и обозначений

Библиографический список

Приложение, А (обязательное). Листинг команд среды Matlab для подбора оптимальной архитектуры ИНС

Приложение Б (обязательное). Схема алгоритма загрузки нейронной сети в проект

Приложение В (обязательное). Схема алгоритма работы мастера создания НЭС

Приложение Г (обязательное). Схема алгоритма загрузки файла Excel в проект

Приложение Д (обязательное). Исходный код программы

Приложение E (обязательное). Авторская справка

Введение

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

Понятие прогнозирования не имеет четко очерченных границ и активно взаимодействует со смежными задачами анализа данных. Одно из определений прогнозирования было дано Г. Тейлом: «некоторое суждение относительно неизвестных, особенно будущих, событий» [1].

Прогнозирование является одним из ключевых моментов при принятии решений и направлено на определение тенденций динамики конкретного объекта или события на основе ретроспективных данных, т. е. анализа его состояния в прошлом и настоящем.

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

объёмом истинных (верифицированных) исходных данных и периодом их сбора;

объёмом неверифицированных исходных данных, периодом их сбора;

свойствами системы, объекта, подвергающихся прогнозированию;

методиками и подходами к прогнозированию.

К основным методам прогнозирования относятся

статистические методы;

экспертные оценки (метод Дельфи);

моделирование;

«по объекту-аналогу» и другие [2].

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

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

Для таких организаций наиболее приемлемым методом является приобретение программного обеспечения для осуществления прогнозов.

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

Рядом научных исследований было доказано, что использование нейронных сетей для прогнозирования дает некоторые преимущества относительно статистических прогнозов, так как нейронные сети являются более чувствительными к параметрам [3,4,5].

Способности нейронной сети к прогнозированию напрямую следуют из ее способности к обобщению и выделению скрытых зависимостей между входными и выходными данными. После обучения сеть способна предсказать будущее значение некой последовательности на основе нескольких предыдущих значений и/или существующих в настоящий момент факторов [6].

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

Целью дипломного проектирования является разработка программы прогнозирования стоимостных показателей объектов с использованием нейронных сетей, предназначенной для использования в небольших коммерческих и некоммерческих организациях.

1. Обзор научно-технической литературы и анализ состояния проблемы

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

1.1 Обзор научно-технической литературы и существующих программных продуктов

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

1.1.1 Обзор научно-технической литературы

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

Интерес к применению нейронных сетей для решения прикладных задач прогнозирования начал активно возрастать в 80−90-е годы XX века и остается актуальным в настоящее время. В статье [3] экспериментально доказывается возможность и эффективность применения нейронной сети прямого распространения сигнала для решения задачи прогнозирования временных рядов с нелинейными зависимостями. В статье [4] на примере предсказания соотношения показателя «соматическая продукция — биомасса» в экосистемах эмпирически доказывается то, что использование нейронных сетей прямого распространения сигнала и обратного распространения ошибки является более эффективным для предсказания по сравнению с линейной регрессией.

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

Оценка исследований относительно эффективности нейронных сетей в решении задач прогнозирования, описанных в статье [6] показала, что в 19 из 22 (86%) исследованных случаях нейронные сети показали более высокие результаты по сравнению с другими моделями.

Тем не менее, в применении искусственных нейронных сетей прямого распространения сигнала и обратного распространения ошибки существует и ряд проблем, например, проблема выбора наилучшей архитектуры сети и проблема переобучения сети при изменении первичных данных [7].

Помимо искусственных нейронных сетей типа «многослойный персептрон» для решения задач прогнозирования используются также и искусственные нейронные сети с радиально-базисными функциями и их подвид «обобщенные регрессионные сети». Некоторыми из важных преимуществ данных сетей является высокая скорость их обучения с заданной точностью, а также отсутствие необходимости в подборе архитектуры сетей такого типа [8].

В статье [9] дается теоретическое обоснование эффективности искусственных нейронных сетей с радиально-базисными функциями для решения задач прогнозирования и аппроксимации функций. В статье [10] эмпирически доказывается эффективность искусственных нейронных сетей с радиально-базисными функциями для прогнозирования цен на золото. В разделе, посвященном искусственным нейронным сетям с радиально-базисными функциями книги [11] теоретически обосновывается и доказывается эффективность применения таких сетей для решения различных задач прогнозирования.

1.1.2 Обзор существующих программных продуктов

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

Программа Neuro Pro (версия 0. 25) является свободно распространяемой версией нейросетевого программного продукта для работы с искусственными нейронными сетями в среде Microsoft Windows. На рисунке 1.1 приведено изображение окна пользовательского интерфейса программы.

Рисунок 1.1 — Окно пользовательского интерфейса программы Neuro Pro (версия 0. 25)

Основные возможности программы:

работа с файлами в форматах *. dbf и *. db;

создание многослойных нейронных сетей с числом слоев до 10 и нейронов в слое до 100;

использование нелинейной сигмоидной функции;

обучение нейронной сети по алгоритму обратного распространения ошибки с применением одного из методов оптимизации (градиентный спуск, модифицированный ParTan, метод сопряженных градиентов;

генерация вербального описания нейронной сети [7].

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

Среди недостатков следует выделить следующие:

отсутствие поддержи ОС Windows старше Windows XP;

поддержка единственного вида сетей — многослойного персептрона;

ограниченный набор методов оптимизации;

для использования программы необходимо знание нейронных сетей;

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

Alyuda Forecasting Software — коммерческое нейросетевое программное обеспечение для Windows 9x/2000/XP/Vista.

Позволяет выполнять финансовые и бизнес — прогнозы, а также анализировать данные с использованием технологии нейронных сетей [13]. На рисунке 1.2 приведено изображение окна пользовательского интерфейса программы.

Рисунок 1.2 — Окно пользовательского интерфейса программы Alyuda Forecasting Software

Основные возможности программы:

мастер-подобный интерфейс;

возможность работы в трёх режимах: базовом, стандартном, а также в режиме для экспертов;

возможность автоматической и ручной предварительной обработки данных;

автоматический и ручной выбор архитектуры сети и параметров обучения;

возможность создания отчетов;

включены примеры решения финансовых, маркетинговых, научных задач и задач оценки недвижимости;

работа с нейронными сетями типа «многослойный персептрон»

обучение нейронной сети по алгоритму обратного распространения ошибки с применением наиболее эффективных методов оптимизации (метод сопряженных градиентов, «Quick-propagation», алгоритм Левенберга-Маркардта) [14].

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

Недостатками данного продукта являются:

поддержка единственного вида сетей — многослойного персептрона;

продукт не русифицирован;

относительно высокая стоимость продукта (1297 долларов США) [14].

NeuralWorks Predict — коммерческое нейросетевое программное обеспечение для ОС семейства Windows, Linux, Oracle/SUN Sparc/Solaris.

NeuralWorks Predict является современным инструментов для быстрого создания и развертывания приложений для решения задач прогнозирования и классификации.

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

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

Рисунок 1.3 — Окно пользовательского интерфейса программы NeuralWorks Predict

Основные преимущества программы:

возможность визуализации процесса обучения;

возможность интеграции с Microsoft Excel;

встроен инструмент кластеризации данных на основе самоорганизующихся карт Кохонена;

поддержка различных операционных систем [15].

К недостаткам программы следует отнести следующие:

продукт не русифицирован;

на официальном сайте заявлена относительно высокая стоимость продукта (2495 долларов США для ОС Linux/Windows, 4995 долларов США для других ОС) [15].

NeuroDimensions NeuroSolutions — коммерческое нейросетевое программное обеспечение для ОС Windows XP/Vista/7/8.

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

На рисунке 1.4 приведено изображение окна пользовательского интерфейса программы.

Основные преимущества программы:

возможность визуализации процесса обучения;

возможность интеграции с Microsoft Excel;

возможность интеграции с Mathworks Matlab;

поддержка режимов работы программы как с продвинутыми пользователями, так и с пользователями, не знакомыми с технологиями нейронных сетей;

поддержка различных архитектур и типов нейронных сетей;

широкие возможности распараллеливания вычислений с использованием GPU видеокарт nVidia (технология CUDA) [16].

Рисунок 1.4 — Окно пользовательского интерфейса программы NeuroSolutions

К недостаткам программы следует отнести следующие:

продукт не русифицирован;

относительно высокая стоимость продукта (1338 долларов США) [17].

STATISTICA NeuralNetworks for Windows — коммерческое нейросетевое программное обеспечение для ОС Windows XP/Vista/7/8.

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

Возможности и достоинства продукта:

пре- и пост-процессирование, включая выбор данных, кодирование номинальных значений, шкалирование, нормализация, удаление пропущенных данных с интерпретацией для классификации, регрессия и задачи временных рядов;

мощные разведочные и аналитические технологии, в том числе анализ главных компонент и понижение размерности для выбора нужных входных переменных в разведочном (нейросетевом) анализе данных;

самые современные, оптимизированные и мощные алгоритмы обучения сети (включая методы сопряженных градиентов и Левенберга-Маркардта);

полный контроль над всеми параметрами, влияющими на качество сети, такими как функции активации и ошибок, сложность сети;

поддержка ансамблей нейросетей и нейросетевых архитектур неограниченного размера, созданных в наборах сетей;

выборочное обучение нейросетевых сегментов, объединение, и сохранение наборов сетей в отдельных файлах;

полная интеграция с системой STATISTICA: все результаты, графики, отчеты и т. д. могут быть в дальнейшем модифицированы с помощью мощных графических и аналитических инструментов STATISTICA;

поддержка различных архитектур и типов нейронных сетей (в т.ч. RBF, рекурсивных сетей и др.);

программное обеспечение полностью русифицировано [18].

Рисунок 1.5 — Окно пользовательского интерфейса программы STATISTICA NeuralNetworks for Windows

Недостатки продукта:

для работы в среде необходимы как минимум начальные знания нейросетевых технологий;

стоимость продукта достаточно высока для небольших предприятий (1997 долларов США) [19].

Stuttgart Neural Networks Simulator — нейросетевое программное обеспечение для Unix — подобных систем.

Программное обеспечение разработано в Институте параллельных и распределенных высокопроизводительных систем (IPVR) в Университете Штутгарта, Германия. Целью проекта является создание эффективной и гибкой среды моделирования для исследования и применения нейронных сетей. На рисунке 1.6 приведено изображение пользовательского интерфейса программы.

Рисунок 1.6 — Окно пользовательского интерфейса программы Stuttgart Neural Networks Simulator

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

многослойный персептрон;

сети встречного распространения;

сети RBF;

сети АРТ-1;

сети АРТ-2;

сети ARTMAP;

сети каскадной корреляции;

рекуррентные сети каскадной корреляции;

сети LVQ;

карты Кохонена;

сети с временными задержками;

ассоциативная память;

сети Элмана и расширенные иерархические сети Элмана;

сети Джордана [20].

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

данное программное обеспечение не русифицировано;

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

наиболее эффективно SNNS работает в системах с большим количеством процессоров под управлением Unix — подобных операционных систем.

1.2 Анализ состояния проблемы

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

Программа NeuroPro v.0. 25, хотя и является бесплатной, не поддерживается современными операционными системами, такими как Windows 7, к тому же, имеет сложный для непрофессионального пользователя интерфейс.

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

Продукты NeuroSolutions, NeuralWorks Predict, Alyuda Forecaster являются неруссифицированными и к тому же распространяются по относительно высокой цене.

Программа STATISTICA NeuralNetworks for Windows, несмотря на преимущества полностью руссифицированного интерфейса и большого набора возможностей, является относительно дорогой даже для средних по величине организаций.

Таким образом, можно сделать вывод, что существующие на сегодняшний день решения не лишены недостатков: недостатком большинства коммерческих продуктов является их относительно высокая цена для небольших компаний, а также отсутствие руссифицированных версий (за исключением продукта STATISTICA NeuralNetworks for Windows). Бесплатное же программное обеспечение является либо устаревшим (как NeuroPro v.0. 25), либо не подходящим для использования специалистами, не знакомыми с технологиями нейронных сетей и сложное в освоении (как SNNS). Поэтому необходимо разработать простой, удобный в использовании, полностью руссифицированный и недорогой инструмент для прогнозирования стоимостных показателей объектов с использованием нейронных сетей.

Выводы

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

2. Техническое задание на разработку нейросетевой программы прогнозирования стоимостных показателей объектов.

2.1 Назначение

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

Задачей является разработка программного продукта для прогнозирования стоимостных показателей объектов с использованием нейронных сетей.

Разрабатываемая программа предназначена для получения прогнозов на основе обученных искусственных нейронных сетей.

2.2 Функциональные возможности программного продукта

Продукт должен обладать следующими функциональными возможностями.

2.2.1 Программный продукт должен включать в себя следующие модули:

модуль работы с нейронными сетями, созданными в среде Matlab;

модуль работы с нейронными сетями, созданными в программе;

модуль работы с проектами программы;

модуль работы с данными;

модуль отображения результатов;

справочный модуль.

Модуль работы с нейронными сетями, созданными в среде Matlab должен предоставлять возможности:

загрузка нейронных сетей и проверка совместимости загружаемой сети с программным продуктом;

получение выходных результатов обработки нейронной сетью на основе входных данных.

Модуль работы с проектами программы должен предоставлять возможность загрузки и сохранение проекта программы.

Модуль работы с данными должен предоставлять возможности:

загрузка файлов формата Excel и его проверка на совместимость с программным продуктом;

сохранение отредактированных файлов;

нормализация и денормализация обучающей выборки;

проверка загружаемых данных на соответствие требуемому типу.

Модуль работы с данными должен предоставлять возможности:

загрузка файлов формата Excel и его проверка на совместимость с программным продуктом;

сохранение отредактированных файлов;

нормализация и денормализация обучающей выборки;

проверка загружаемых данных на соответствие требуемому типу.

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

Представление входных данных:

возможность загрузки данных из файла типа *. xls;

возможность загрузки нейронных сетей, созданных в среде Matlab из файлов типа *. mat;

возможность загрузки нейронных сетей, созданных в программе из файлов типа *. ncnet;

возможность редактирования и сохранения данных.

Требования к модулю справочной информации

Предусмотреть разработку руководства пользователя по работе с программой.

2.3 Требования к программным и аппаратным средствам

Разрабатываемая программа предназначена для использования на персональной ЭВМ, обладающей следующими минимальными характеристиками, позволяющими работать с программой более эффективно:

центральный процессор Intel Pentium 4 — 1,9 ГГц или аналогичный и выше;

оперативная память не менее 1 Гб;

монитор с разрешением от 1024*768 пикс;

видеокарта SVGA с объемом памяти не менее 32 Мб;

установленная ОС Microsoft Windows XP/Vista/7 и выше;

установленный Microsoft. NET Framework версии 4.0 (распространяется бесплатно);

установленная среда Matlab Compiler Runtime v. 413 32 bit (распространяется бесплатно) для возможности работы с нейронными сетями, созданными в среде Matlab;

манипулятор типа «мышь»;

клавиатура.

2.4 Выбор критериев качества разрабатываемого программного продукта

Разрабатываемый программный продукт должен отвечать показателям качества, которые определены в [27].

Показателем надежности является работоспособность — способность программы функционировать в заданных режимах и объемах обрабатываемой информации в соответствии с программными документами при отсутствии сбоев технических средств.

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

К показателям корректности относятся:

полнота реализации — полнота реализации заданных функций ПС и достаточность их описания в программной документации.

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

логическая корректность — функциональное и программное соответствие процесса обработки данных при выполнении задания общесистемным требованиям.

проверенность — полнота проверки возможных маршрутов выполнения программы в процессе тестирования.

2.5 Меню программы

Предусмотреть следующие пункты меню программы:

файл:

загрузить проект;

сохранить проект как;

сохранить проект;

выход;

режим работы:

упрощенный;

продвинутый;

НЭС:

мастер создания НЭС;

данные:

загрузить данные для обучения;

загрузить данные для тестирования;

нейронная сеть:

импортировать из MatLab;

загрузить готовую нейронную сеть;

создать новую нейронную сеть;

помощь:

справка;

о программе.

2.6 Стадии и этапы разработки

Стадии и этапы разработки программного продукта приведены в таблице 2.1.

Таблица 2.1 Этапы разработки приложения

Содержание работы

Срок

Исполнитель

Исследование подходов к созданию приложений для прогнозирования с использованием нейронных сетей, а также имеющихся на сегодняшний день решений

1−2 недели

Неведицин Н.А.

Разработка технического задания

3-я неделя

Неведицин Н.А.

Разработка. NET библиотеки в среде Matlab для работы с нейронными сетями

4-я неделя

Неведицин Н.А.

Разработка структуры программы (иерархии классов, модулей)

5−6 недели

Неведицин Н.А.

Создание интерфейса и модуля для работы с нейронными сетями, импортированными из Matlab

7-я неделя

Неведицин Н.А.

Разработка графического интерфейса пользователя для создания инструментов прогнозирования с использованием нейронных сетей, созданных в среде Matlab

8−12 недели

Неведицин Н.А.

Объединение разработанных частей в единое приложение

13-я неделя

Неведицин Н.А.

Разработка руководства пользователя программы

14−15 недели

Неведицин Н.А.

2.7 Порядок контроля и приемки

Испытание представленной программы и контроль качества ее работы провести на базе кафедры ЭВМ факультета автоматики и вычислительной техники ВятГУ. Во время испытаний проверить работу системы по следующим позициям:

запуск программы;

импорт нейронной сети, созданной в среде Matlab и её тестирование;

обучение нейронной сети и её тестирование;

сохранение готового проекта и его загрузка.

Выводы

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

3. Обоснование выбора наилучшей модели для прогнозирования стоимостных показателей объектов

В данном разделе проанализирован математический аппарат искусственных нейронных сетей и проведен эксперимент по подбору наилучшей модели для прогнозирования стоимостных показателей объектов.

3.1 Математический аппарат

В данном подразделе рассматриваются нейронные сети типа многослойный персептрон и РБФ. Способность нейронных сетей типа многослойный персептрон решать задачи регрессии и прогнозирования неоднократно подтверждалась различными исследованиями, например [3,4,5], причем ИНС данного типа справляются с решением задач этого класса, как правило, эффективнее, чем модель множественной линейной регрессии благодаря тому, что обладают большей чувствительностью к изменению параметров [3,4,5]. Способность РБФ сетей успешно решать задачи регрессии и прогнозирования также неоднократно доказывалась рядом исследований, например [21,22]. К тому же, в среде Matlab существует даже специальный класс сетей, предназначенных специально для этих целей — обобщенные регрессионные сети (general regression networks), которые, в сущности, являются РБФ сетями.

3.1.1 Искусственная нейронная сеть типа многослойный персептрон

Изучение искусственной нейронной сети следует начать с рассмотрения модели искусственного нейрона.

На рисунке 3.1 изображена модель простого искусственного нейрона.

Рисунок 3.1 — Модель простого нейрона

На вход искусственного нейрона поступает некоторое множество сигналов pi, которые, умножаясь на соответствующие веса w1i, суммируются друг с другом. К этой сумме прибавляется смещение b и результат n подается в качестве аргумента активационной функции f, значение которой при данном аргументе является выходом a нейрона. Таким образом, модель простого искусственного нейрона можно описать следующей формулой

,(3. 1)

где w1i — веса нейронов;

pi — множество входных сигналов;

b — смещение;

f — активационная функция.

В качестве активационной функции могут выступать следующие функции:

линейная функция f (x) = tx, где t — параметр функции;

пороговая функция или функция Хевисайда — представляет собой «перепад»: до тех пор, пока взвешенный сигнал на входе нейрона не достигает некоторого уровня T, -- сигнал на выходе равен нулю. Как только сигнал на входе нейрона превышает указанный уровень -- выходной сигнал скачкообразно изменяется на единицу;

сигмоидальная функция f (x) = 1/(1 + е-x);

гиперболический тангенс f (x) = th (x).

Для решения практических задач, как правило, используют слоистые нейронные сети [21]. На рисунке 3.2 показан слой искусственных нейронов.

Рисунок 3.2 — Слой искусственных нейронов

Входы слоя pi одновременно являются входами для всех нейронов слоя, веса wir задаются матрицей весов W. Каждый i-й нейрон формирует выход ai, в итоге выходы слоя формируют вектор-столбец a.

Количество входов в слое может не совпадать с количеством нейронов. В каждом слое используется, как правило, одна и та же функция активации, хотя при необходимости можно выставить различные функции активации.

Более крупные и сложные нейронные сети обладают, как правило, и большими вычислительными возможностями: многослойные сети обладают большими возможностями, чем однослойные, и в последние годы были разработаны алгоритмы для их обучения [7]. На рисунке 3.3 показана модель трехслойной нейронной сети.

Рисунок 3.3 — Трехслойная нейронная сеть

Как видно из рисунка 3. 3, выходы одного слоя являются входами для последующего слоя. Сети такого вида получили название «сети прямого распространения сигнала».

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

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

Выбрать очередную обучающую пару из обучающего множества; подать входной вектор на вход сети.

Вычислить выход сети.

Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары).

Подкорректировать веса сети так, чтобы минимизировать ошибку.

Повторять шаги с а) по г) для каждого вектора обучающего множества до тех пор, пока ошибка на всем множестве не достигнет приемлемого уровня [22].

Согласно методу наименьших квадратов [7], минимизируемой целевой функцией ошибки ИНС является следующая функция

, (3. 2)

где ai — выходное значение i-го нейрона;

ti — желаемое выходное значение i-го нейрона;

E — средний квадрат ошибки.

Классический алгоритм обратного распространения ошибки использует метод градиентного спуска для подстройки весов после каждого обучающего примера и, таким образом, обеспечивается «движение» в многомерном пространстве весов [23]. Чтобы добраться до минимума ошибки, необходимо «двигаться» в сторону, противоположную градиенту, то есть, на основании каждой группы правильных ответов, добавлять к каждому весу приращение, которое вычисляется по формуле

(3. 3)

где 0< з <1 — множитель, задающий «скорость» движения;

E — средний квадрат ошибки;

wij — вес соответствующего нейрона.

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

Существуют ускоренные алгоритмы обучения многослойных нейронных сетей, базирующиеся на вычислении матрицы Гессе вторых частных производных функции ошибки по настраиваемым параметрам. К таким алгоритмам относятся квазиньютовоские алгоритмы, алгоритм Левенберга-Маркарта и другие. Работа данных алгоритмов требует больших аппаратных ресурсов, чем классический алгоритм обратного распространения ошибки. В руководстве к среде Matlab рекомендуется использовать алгоритм Левенберга-Маркарта, так как он на сегодняшний день является наиболее эффективным и быстрым.

3.1.2 Искусственная нейронная сеть типа РБФ

Радиально-базисные сети состоят из большего количества нейронов, чем стандартные сети с прямой передачей сигналов и обучением методом обратного распространения ошибки, но на их создание требуется значительно меньше времени. Эти сети особенно эффективны, если доступно большое количество обучающих векторов[24].

На рисунке 3.4 представлена модель нейрона, используемого в сетях РБФ, одновременно эта модель является простейшей РБФ-сетью с R входами.

Рисунок 3.4 — Модель нейрона, используемого в сетях РБФ

Модуль разности вектора входов p и вектора весов w умножается на значение смещения b. Результирующее произведение подается в качестве аргумента активационной функции РБФ-нейрона, значение которой при данном аргументе является выходом a нейрона. Таким образом, модель РБФ-нейрона можно описать следующей формулой

, (3. 4)

где — вектор весов;

— вектор входных сигналов;

b — смещение;

f — активационная радиально-базисная функция.

Активационной функцией РБФ-нейрона является радиально-базисная функция. Характерным свойством класса радиально-базсисных функций является то, что отклик функции монотонно убывает (возрастает) с удалением от центральной точки. Примером радиально-базисных функций служит функция Гаусса, которая в скалярном виде может быть описана следующей формулой

,(3. 5)

где с и r — некоторые константы;

x — аргумент функции.

В векторном виде данная функция может быть описана как

,(3. 6)

где — вектор некоторых констант;

— вектор аргументов функции;

r — некоторая константа.

График этой функции с параметрами с=0 и r=1 представлен на рисунке 3. 5

Рисунок 3.5 — График Гауссовой функции при c=0 и r=1

Эта функция имеет максимум, равный единице, когда вход равен 0. Таким образом, РБФ-нейрон действует как индикатор, который формирует значение 1, когда вектор входов идентичен вектору весов. Смещение b позволяет корректировать чувствительность нейрона.

На рисунке 3.6 изображена двухслойная РБФ-сеть, состоящая из слоя РБФ и линейного слоя.

Рисунок 3.6 — Двухслойная РБФ-сеть

Входами блока dist являются вектор входа p и матрица весов IW, а выходом — вектор, состоящий из S элементов, которые определяются расстоянием между i-м вектором входа p и i-й и вектором весов i-го нейрона матрицы весов IW. При задании вектора входа каждый нейрон РБФ-слоя выдает значение в соответствии с тем, как близок вектор входа к вектору весов каждого нейрона. Таким образом, РБФ-нейроны с векторами весов, значительно отличающимися от вектора входа, будут иметь выходы, близкие к нулю, и их влияние на выходы линейных нейронов будет незначительным [7].

Обучение РБФ-сети является аппроксимационной задачей нахождения многомерной поверхности, обеспечивающей наилучшее совпадение с набором тренировочных данных. В процессе обучения подбираются веса и смещения РБФ-нейронов. В отличие от многослойных перcептронов, которые глобально аппроксимируют нелинейное преобразование вход-выход, РБФ-сети строят локальную аппроксимацию. Из-за экспоненциального убывания активационных функций нейронов скрытого слоя выход РБФ-сети для входных данных, лежащих вдали от тренировочных шаблонов, стремится к нулю. Такая локальность обеспечивает быстрое обучение сети и снижает типичную для многослойных персептронов зависимость качества обучения от последовательности подачи тренировочных данных. С другой стороны, это приводит к необходимости использования большего числа скрытых нейронов [25].

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

На первом этапе находится интерполяционная матрица H

(3. 7)

где m — число нейронов в скрытом слое;

p — размер обучающей выборки;

x -- вектор, состоящий из входных компонентов, число которых равно числу входов сети.

На втором этапе вычисляется инверсия произведения матрицы H на транспонированную матрицу H

,(3. 8)

где Н — интерполяционная матрица;

НT — транспонированная интерполяционная матрица.

На третьем этапе рассчитывается вектор весов по следующей формуле

,(3. 9)

где A-1 — инверсия произведения матрицы H на транспонированную матрицу H;

НT — транспонированная интерполяционная матрица;

— целевой вектор выходов.

Если предыдущее предположение о фиксированных параметрах функции активации не выполняется, то есть помимо весов необходимо настроить параметры активационной функции каждого нейрона (смещение функции и ее радиус), задача становится нелинейной. И решать ее приходится с использованием итеративных численных методов оптимизации, например, градиентных методов [26].

3.2 Подбор наилучшей модели нейронной сети для прогнозирования стоимостных показателей объектов

Для подбора наилучшей модели для прогнозирования стоимостных показателей объектов приведем обучающее множество, представленное на сайте Университета Калифорнии [28] и подберем для него наилучшую регрессионную модель. Данное множество представляет собой статистические данные по стоимости жилья в пригородах Бостона в 1978 году и состоит из 506 элементов, каждый из которых представляет собой следующий набор переменных:

параметр CRIM: уровень преступности в пригороде на душу населения;

параметр ZN: доля земли, занятая жилыми домами в пригороде (для участков более 25 000 кв. футов), %;

параметр INDUS: доли земли, занятая не розничным бизнесом в пригороде, %;

параметр CHAS: фиктивная переменная (да/нет) (= 1, если дом граничит с рекой; 0 в противном случае);

параметр NOX: концентрация оксида азота в пригороде, частей на 10 млн. ;

параметр RM: средне число комнат в жилище;

параметр AGE: доля домов, построенных до 1940 года;

параметр DIS: показатель взвешенного расстояния до пяти ключевых центров в Бостоне, в которых больше всего работы;

параметр RAD: индекс доступности до магистралей;

параметр TAX: ставка налога на имущество на каждые 10 000 долларов, долл. ;

параметр PTRATIO: отношение количества учеников к количеству учителей в пригороде;

параметр B: = 1000*(Bk — 0. 63) ^ 2, где Bk — доля афроамериканцев в пригороде;

параметр LSTAT: показатель, отражающий, насколько процентов плотность населения в пригороде ниже, чем в среднем по стране;

параметр MEDV: среднее значение стоимости жилых домов, долл.

Для подбора наилучшей модели для прогнозирования стоимостных показателей объектов была взята именно данная выборка, по следующим причинам:

дано неплохое количество обучающих векторов (506);

предоставлены реальные статистические данные;

эта выборка используется для экспериментов с машинным обучением во многих университетах мира на протяжении многих лет;

это хороший пример для решения задачи регрессии.

Подбор модели будет произведен в среде Matlab с использованием функций пакетов Neural Network Toolbox и Statistics Toolbox.

Сравнение моделей будет осуществлено на основе сравнения показателя среднего квадрата ошибки (MSE), который вычисляется по формуле

(4. 1)

где MSE — средний квадрат ошибки;

Yi, Y^i — реальный показатель и спрогнозированный показатель

соответственно;

n — количество случаев.

Первой из сравниваемых моделей выбрана множественная линейная регрессия. Для построения множественной линейной регрессии в среде Matlab используется функция b = regress (y, X). Данная функция принимает параметры y — выходной вектор и X — множество входных векторов (матрица) и возвращает параметр b — полученные коэффициенты регрессии.

Для создания и обучения искусственных нейронный сетей типа многослойный персептрон в среде Matlab сущесвует ряд функций. Для создания новой ИНС типа многослойный персептрон сущесвует функция newff (P, T,[S1 S2… S (N-l)],{TF1 TF2… TFNl}, BTF, BLF, PF, IPF, OPF, DDF). Данная функция возвращает новую необученную ИНС типа «многослойный персептрон» и принимает следующие параметры:

параметр P: матрица R х Q1 (Q1 образцов входных векторов R);

параметр T: матрица SN х Q2 (Q2 образцов целевых (выходных) векторов SN);

параметр Si: Размер i-го слоя, N-1 слоев, по умолчанию = [] (Выходной слой размером SN определяется из T);

параметр TFi: Передаточная функция i-го слоя (По умолчанию = «tansig» (гиперболический тангенс) для скрытых слоев и «purelin» (линейная) для выходного слоя);

параметр BTF: функция обратного распространения ошибки обучения сети (по умолчанию = «trainlm» (Левенберга — Маркарта));

параметр BLF: функция подбора весов / смещений (по умолчанию = «learngdm» (градиентный спуск));

параметр PF: функция производительности сети (По умолчанию = «MSE» (Средний квадрат ошибки));

параметр IPF: функции для обработки входных данных. (По умолчанию = {"fixunknowns"(фиксировать неизвестные), «removeconstantrows» (удалить постоянные ряды), «mapminmax» (нормализация) })

параметр OPF: функции обработки выходных данных. (По умолчанию = {'removeconstantrows', 'mapminmax'});

параметр DDF: функция для разделения входных данных на обучающее, тестовое и контрольное подмножества (по умолчанию = «dividerand"(случайно)).

Большинство параметров по умолчанию являются оптимальными параметрами и менять их не имеет смысла, так, алгоритм Левенберга--Маркарта для обучения сети, как сказано в руководстве по использованию пакета Matlab Neural Network Toolbox, является наиболее быстрым и производительным, использовать вместо него другие алгоритмы рекомендуется только если компьютер имеет небольшой размер оперативной памяти.

Для обучения ИНС типа многослойный персептрон в среде Matlab сущесвует функция train (net, P, T, Pi, Ai). Данная функция возвращает объект обученной ИНС, а также ряд информационных параметров, таких как, за сколько итераций была обучена сеть, массив ошибок обучения и так далее. Функция принимает следующие параметры:

параметр net: обучаемая ИНС;

параметр P: обучающие векторы;

параметр T: целевые векторы;

параметр Pi и Ai — параметры задержек (для ИНС с задержками времени, по умолчанию равны нулю).

В среде Matlab имеется возможность работы с обобщенными регрессионными сетями. Это вид РБФ-сети, используемый для решения задач регрессии.

Для обучения обобщенной регрессионной сети в среде Matlab используется функция newgrnn (P, T, spread). Данная функция возвращает объект обученной ИНС и принимает следующие параметры:

параметр P: матрица P х Q1 (Q1 входных (обучающих) векторов P);

параметр T: матрица T х Q2 (Q2 целевых (выходных) векторов T);

параметр spread: по умолчанию = 1,0, чем больше значение данного параметра, тем функция аппроксимации является более гладкой, тем приближение осуществляется более «плавно».

Для создания и обучения искусственной нейронной сети типа РБФ в среде Matlab сущесвует функция newrbe (P, T, spread). Данная функция возвращает объект обученной ИНС типа «РБФ» и принимает следующие параметры:

параметр P: матрица P х Q1 (Q1 входных (обучающих) векторов P);

параметр T: матрица T х Q2 (Q2 целевых (выходных) векторов T);

параметр spread: параметр РБФ spread (по умолчанию = 1,0).

Создать и обучить нейронную сеть типа РБФ можно также при помощи функции newrb (P, T, goal, spread, MN, DF). Данная функция возвращает объект обученной ИНС типа РБФ и принимает помимо параметров, принимаемых функцией newrbe (P, T, spread), следующие параметры:

параметр goal: целевой средний квадрат ошибки обучения (по умолчанию = 0,0);

параметр MN: Максимальное число нейронов (по умолчанию Q);

параметр DF: Число нейронов, добавляемое после каждой итерации (по умолчанию = 25).

Для вычисления среднего квадрата ошибки используется функция среды Matlab MSE (E), которая принимает параметр E — вектор ошибок и возвращает средний квадрат ошибок.

Разделим общую выборку случайным образом на 2 части:

Обучающая выборка — 450 примеров;

Тестовая выборка — 56 примеров.

Первые 13 переменных представим в качестве входного вектора, а переменную MEDV в качестве выходного значения (прогнозируемого показателя).

Оценка модели состоит из следующих этапов:

Обучение нейронной сети с помощью обучающей выборки (или вычисление коэффициентов регрессии из обучающей выборки);

Применение модели к обучающей выборке;

Применение модели к тестовой выборке;

Вычисление среднего квадрата ошибки обучающей выборки;

Вычисление среднего квадрата ошибки тестовой выборки.

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

Для того, чтобы избежать эффекта «бабушкиного воспитания» при подборе оптимальной РБФ-сети, будем изменять параметр «spread», а также целевой средний квадрат ошибки при создании новой сети.

При применении множественной линейной регрессии применим функцию regress (y, X) к обучающей выборке, а полученные коэффициенты используем для прогнозирования параметра MEDV тестовой выборки.

В таблице 3.1 приведены результаты оценки используемых моделей. Листинг оценки моделей в Matlab приведен в приложении А. Поля MSE (L), MSE (T), MSESUM таблицы 3.1 означают средние квадраты ошибок обучающей выборки, тестовой выборки и сумму средних квадратов ошибок обучающей и тестовой выборок соответственно.

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

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

Таблица 3.1 — Сравнение моделей нейронных сетей

Модель

MSE (L)

MSE (T)

MSESUM

Доп. параметры сети

1

2

3

4

5

Множ. линейная регрессия

2,542E+07

1,520E+07

4,061E+07

Обобщенна регрессионная сеть

8,029E+04

2,058E+08

2,059E+08

Многослойный персептрон

1,032E+07

1,755E+07

2,786E+07

13: 10:10:1, умолч.

Многослойный персептрон

6,51E+06

2,44E+07

3,089E+07

13: 12:8:1, умолч.

Многослойный персептрон

6,66E+06

3,21E+07

3,874E+07

13: 7:7:1, умолч.

Многослойный персептрон

6,042E+06

2,946E+07

3,550E+07

13: 30:1, умолч.

Многослойный персептрон

2,086E+07

1,469E+07

3,555E+07

13: 20:1, умолч.

Многослойный персептрон

1,673E+07

3,455E+07

5,128E+07

13: 19:1, умолч.

Многослойный персептрон

7,108E+06

1,486E+08

1,558E+08

13: 17:1, умолч.

Многослойный персептрон

9,668E+06

7,286E+07

8,253E+07

13: 15:1, умолч.

Многослойный персептрон

7,982E+06

2,340E+07

3,138E+07

13: 21:1, умолч.

Многослойный персептрон

1,107E+07

2,790E+07

3,897E+07

13: 22:1, умолч.

Многослойный персептрон

1,589E+07

3,130E+07

4,719E+07

13: 23:1, умолч.

Многослойный персептрон

1,19E+07

7,71E+07

8,901E+07

13: 24:1, умолч.

РБФ-сеть

6,06E-21

1,43E+07

1,427E+07

spread = 1. 0

РБФ-сеть

8,67E-19

3,74E+08

3,744E+08

spread = 0. 1

РБФ-сеть

2,13E-20

5,58E+07

5,581E+07

spread = 1. 5

РБФ-сеть

4,83E-20

8,08E+07

8,083E+07

spread = 0. 75

РБФ-сеть

4,82E-21

2,54E+07

2,539E+07

spread = 1. 1

РБФ-сеть

5,02E-21

1,85E+07

1,853E+07

spread = 1. 25

РБФ-сеть

3,14E-21

1,85E+07

1,850E+07

spread = 2. 0

РБФ-сеть

1,63E-16

3,73E+11

3,730E+11

spread = 20. 0

Многослойный персептрон

2,00E+07

9,78E+06

2,982E+07

13: 20:1, max_fail = 10

Многослойный персептрон

2,09E+07

1,47E+07

3,555E+07

13: 20:1, max_fail = 9

Многослойный персептрон

2,09E+07

1,47E+07

3,555E+07

13: 20:1, max_fail = 8

Далее были созданы и протестированы девять трёхслойных нейронных сетей типа многослойный персептрон, из которых наилучший результат при заданных по умолчанию параметрах обучения показала сеть с архитектурой «13: 20:1». Создание сетей с количеством нейронов в скрытом слое более 30 не имеет смысла по причине ограничения, следуемого из теории Вапника-Червоненкиса.

Созданные с различными параметрами «spread» РБФ — сети показали почти нулевую ошибку применительно к обучающей выборке, однако результаты применения к тестовой выборке оказались несколько хуже, чем у сети типа «многослойный персептрон» с архитектурой 13: 20:1.

Изменение параметра обучения «max_fail» нейронной сети с архитектурой «13: 20:1» дало положительные результаты. Увеличение данного параметра до значения 10 уменьшило среднюю ошибку прогноза в тестовой выборке в полтора раза.

ПоказатьСвернуть
Заполнить форму текущей работой