Рефераты
 

Автоматизированная система построения нейронной сети методом обратного распространения ошибки

Автоматизированная система построения нейронной сети методом обратного распространения ошибки

1

Содержание

Введение

Глава 1. Аналитическая часть

1.1 Исследование предметной области

1.2 Анализ существующих разработок

1.3 Техническое задание

Глава 2. Проектная часть

2.1 Математическая модель задачи

2.2 Обоснование выбора метода проектирования и средств разработки программного обеспечения

2.3 Проектирование функциональной структуры

2.4 Описание и иерархия основных классов

2.5 Проектирование экранных форм системы

Глава 3. Экспериментальная проверка ПО

3.1 Постановка задачи и подготовка тестовых данных для эксперимента

3.2 Тестирование и анализ результатов эксперимента

Глава 4. Оценка экономической эффективности проекта

Заключение

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

Приложения

Введение

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

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

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

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

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

Глава 1. Аналитическая часть

1.1 Исследование предметной области

Сферу использования нейронных сетей в настоящее время можно разделить на несколько групп:

· Финансы, экономика, производство

· Медицина

· Энергетика

· Космос и природные явления

· Искусственный интеллект

· Научные исследования

Рассмотрим крупнейшие из них.[16]

1) Финансы. Одним из наиболее интересных приложений нейронных сетей в последние годы стали задачи финансовой деятельности. На рынке появляется огромное количество как универсальных нейропакетов, которые зачастую используются для решения задач технического анализа, так и специализированных экспертных систем и нейропакетов для решения многих других, зачастую более сложных и трудно формализуемых задач из финансовой области. В настоящее время имеет место широкое появление на отечественном рынке компьютеров и программного обеспечения нейропакетов и нейрокомпьютеров, предназначенных для решения финансовых задач. Те банки и крупные финансовые организации, которые уже используют нейронные сети для решения своих задач, понимают, насколько эффективным средством могут быть нейронные сети для задач с хорошей статистической базой, например при наличии достаточно длинных временных рядов, в том числе и многомерных. Пока ситуация складывалась так, что в финансовой системе, сложившейся в настоящее время, наблюдается повышенный интерес к отдельным видам задач, например предсказанию фьючерсных контрактов или курсов ГКО, при недостаточном внимании к структурному макроэкономическому анализу с использованием нейронных сетей как нелинейных моделей процесса. Лишь в последнее время начинает появляться интерес к использованию нейронных сетей для оценки ситуации, применению нечеткой логики для принятия решений и других более сложных приложений. При этом в качестве потребителя такой информации выступают либо люди, хорошо знающие потенциальные возможности нейронных сетей, либо решающие такие задачи традиционными методами и вынужденные искать другие, более эффективные способы решения задач.

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

Основные задачи:

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

- Страховая деятельность банков.

- Прогнозирование банкротств на основе нейросетевой системы распознавания.

- Определение курсов облигаций и акций предприятий с целью вложения средств в эти предприятия.

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

- Прогнозирование экономической эффективности финансирования проектов.

- Предсказание результатов займов.

- Общие приложения нейронных сетей

Приведем краткое пояснение каждого из основных приложений

1.1. Прогнозирование временных рядов на основе нейросетевых методов обработки.

- Прогнозирование кросс-курса валют

- Прогнозирование котировок и спроса акций для биржевых спекуляций (не для долгосрочного вложения)

- Прогнозирование остатков средств на корреспондентских счетах банка.

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

1.2 Страховая деятельность банков

- оценка риска страхования инвестиций на основе анализа надежности проекта

- оценка риска страхования вложенных средств

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

1.3 Прогнозирование банкротств на основе нейросетевой системы распознавания

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

- анализ величины вероятности банкротства фирмы на основе многокритериальной оценки с построением нелинейной модели с помощью нейронных сетей (пример результата - 74% вероятности банкротства).

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

1.4 Определение курсов облигаций и акций предприятий с целью вложения средств в эти предприятия

- выделение долгосрочных и краткосрочных скачков курсовой стоимости акций на основе нелинейной нейросетевой модели

- предсказание изменения стоимости акций на основе нейросетевого анализа временных экономических рядов

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

- определение соотношения котировок и спроса

Прогнозирующая система может состоять из нескольких нейронных сетей, которые обучаются взаимосвязям между различными техническими и экономическими показателями и периодами покупки и продажи акций. Целью прогноза является выбор наилучшего времени для покупки и продажи акций. Здесь рассматриваются также задачи формирования портфеля ценных бумаг и распознавания шаблонов на графике изменения курсов акций, которые позволяют прогнозировать курс акций на последующем отрезке времени. На рынке акций шаблон «треугольника» в диаграмме (графике) изменений курса акций является индикатором важного направления будущего изменения цены акций. Однако никакие методы основанные на правилах не дают хорошего результата, только высококвалифицированные эксперты. Нейросетевой подход дал весьма многообещающие результаты для Токийской фондовой биржи после обучения сети на 15 обучающих шаблонах треугольника и проверке на одном нейросетевом шаблоне. После чего были проведены 16 экспериментов на данных по ценам акций за последние 3 года. Шаблон треугольника был успешно определен в 15 случаях.

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

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

1.5 Прогнозирование экономической эффективности проектов

- предсказание на основе анализа реализованных ранее проектов;

- предсказание на основе соответствия предлагаемого проекта экономической ситуации.

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

1.6 Предсказание результатов займов

- определение возможности кредитования предприятий

- предоставление кредитов и займов без залога

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

1.7 Общие приложения нейронных сетей

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

Это из самых «модных» применений нейрокомпьютеров в финансовой области. Один из решаемых вопросов - установление цены на новый вид товара на основе многокритериальной оценки.

- моделирование динамики цен на сельскохозяйственную продукцию в зависимости от климатических условий

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

- построение модели структуры расходов семьи.

2) Энергетика

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

Ниже представлен перечень основных задач, решаемых нейрокомпьютерами в современных энергетических системах:

· предсказание нагрузки;

· прогнозирование температуры окружающей среды с целью прогнозирования нагрузки;

· управление потоками электроэнергии в сетях;

· обеспечение максимальной мощности;

· регулирование напряжения;

· диагностика энергосистем с целью определения неисправностей;

· оптимизация размещения датчиков для контроля безопасности энергосистем;

· мониторинг безопасности энергосистем; обеспечение защиты трансформаторов;

· обеспечение устойчивости, оценка динамического состояния и диагностика генераторов;

· управление турбогенераторами;

· управление сетью генераторов;

· управление мощными переключательными системами.

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

3) Медицина. Статистика такова: врач правильно диагностирует болезнь у 88% больных и ошибочно ставит этот диагноз в 29% случаев. Ложных тревог (гипердиагностики) чересчур много. История применения различных методов обработки данных для повышения качества диагностики насчитывает десятилетия, однако лучший из них помог сократить число случаев гипердиагностики лишь на 3%.

В 1990 году Вильям Бакст из Калифорнийского университета в Сан-Диего использовал нейронную сеть - многослойный персептрон - для распознавания инфаркта миокарда у пациентов, поступающих в приемный покой с острой болью в груди. Его целью было создание инструмента, способного помочь врачам, которые не в силах справиться с потоком данных, характеризующих состояние поступившего больного. Другой целью может быть совершенствование диагностики. Свою задачу исследователь усложнил, поскольку анализировал данные только тех пациентов, кого уже направили в кардиологическое отделение. Бакст использовал лишь 20 параметров, среди которых были возраст, пол, локализация боли, реакция на нитроглицерин, тошнота и рвота, потение, обмороки, частота дыхания, учащенность сердцебиения, предыдущие инфаркты, диабет, гипертония, вздутие шейной вены, ряд особенностей ЭКГ и наличие значительных ишемических изменений.

Сеть продемонстрировала точность 92% при обнаружении инфаркта миокарда и дала только 4% случаев сигналов ложной тревоги, ошибочно подтверждая направление пациентов без инфаркта в кардиологическое отделение. Итак, налицо факт успешного применения искусственных нейронных сетей в диагностике заболевания. Теперь необходимо пояснить, в каких параметрах оценивается качество диагноза в общем случае. Предположим, что из десяти человек, у которых инфаркт действительно есть, диагностический метод позволяет обнаружить заболевание у восьми. Тогда чувствительность метода составит 80%. Если же мы возьмем десять человек, у которых инфаркта нет, а метод диагностики заподозрит его у трех человек, то доля ложных тревог составит 30%, при этом дополнительная к нему характеристика - специфичность метода - будет равна 70%.

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

4) Нейронные сети для задач диагностики

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

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

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

Принцип функционирования, основные понятия и определения нейросетей.

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

Модели НС могут быть программного и аппаратного исполнения. В дальнейшем речь пойдет в основном о первом типе.[15]

Несмотря на существенные различия, отдельные типы НС обладают несколькими общими чертами.

Рис.1.1 Искусственный нейрон

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

Рис.1.2 Однослойный перцептрон

Возвращаясь к общим чертам, всех НС, отметим принцип параллельной обработки сигналов, который достигается путем объединения большого числа нейронов в так называемые слои и соединения определенным образом нейронов различных слоев, а также, в некоторых конфигурациях, и нейронов одного слоя между собой, причем обработка взаимодействия всех нейронов ведется послойно. Такие конфигурации, являющиеся некой математической моделью процесса «восприятия» называются перцепртонами(персептронами).

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

Выбор структуры НС осуществляется в соответствии с особенностями и сложностью задачи. Для решения некоторых отдельных типов задач уже существуют оптимальные, на сегодняшний день, конфигурации. Если же задача не может быть сведена ни к одному из известных типов, разработчику приходится решать сложную проблему синтеза новой конфигурации. При этом он руководствуется несколькими основополагающими принципами: возможности сети возрастают с увеличением числа ячеек сети, плотности связей между ними и числом выделенных слоев; введение обратных связей наряду с увеличением возможностей сети поднимает вопрос о динамической устойчивости сети; сложность алгоритмов функционирования сети (в том числе, например, введение нескольких типов синапсов - возбуждающих, тормозящих и др.) также способствует усилению мощи НС. Вопрос о необходимых и достаточных свойствах сети для решения того или иного рода задач представляет собой целое направление нейрокомпьютерной науки. Так как проблема синтеза НС сильно зависит от решаемой задачи, дать общие подробные рекомендации затруднительно. В большинстве случаев оптимальный вариант получается на основе интуитивного подбора.

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

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

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

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

Развивая дальше вопрос о возможной классификации НС, важно отметить существование бинарных и аналоговых сетей. Первые из них оперируют с двоичными сигналами, и выход каждого нейрона может принимать только два значения: логический ноль ("заторможенное" состояние) и логическая единица ("возбужденное" состояние). К этому классу сетей относится и рассмотренный выше персептрон, так как выходы его нейронов, формируемые функцией единичного скачка, равны либо 0, либо 1. В аналоговых сетях выходные значения нейронов спо-соб-ны принимать непрерывные значения.

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

Рис.1.3 Двухслойный персептрон

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

1.8 Анализ существующих разработок

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

1) Компания StatSoft Russia - российское представительство американской компании StatSoft Inc., которая на сегодняшний день является одним из крупнейших в мире разработчиков статистического и аналитического программного обеспечения. Программные продукты StatSoft поддерживаются глобальной сетью филиалов и дистрибуторов в разных странах и используются в основных университетах, корпорациях и правительственных учреждениях во всем мире. Основной продукт компании - система STATISTICA, предназначенная для анализа данных, визуализации, прогнозирования и проведения многих других статистических анализов[20].

STATISTICA Neural Networks является богатой и мощной средой анализа нейросетевых моделей, предоставляющей следующие возможности:

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

· Исключительная простота в использовании плюс непревзойденная аналитическая мощность; так например, не имеющий аналогов Мастер решений проведет пользователя через все этапы создания различных нейронных сетей и выберет наилучшую (эта задача, в противном случае, решается длительным путем "проб и ошибок" и требует основательного знания теории);

· Мощные методы разведочные и аналитические технологии, в том числе Анализ главных компонент и Понижение размерности для выбора нужных входных переменных в разведочном (нейросетевом) анализе данных (выбор нужных входных переменных для нейронных сетей часто занимает длительное время; система STATISTICA Neural Networks может выполнять эту работу за пользователя);

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

· Поддержка комбинаций нейросетей и нейросетевых архитектур практически неограниченного размера, созданных в Наборах сетей - Network Sets; выборочное обучение нейросетевых сегментов; объединение, и сохранение наборов сетей в отдельных файлах;

· Богатые графические и статистические связи, предоставляющие интерактивные разведочные анализы;

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

· Полная интеграция с мощными автоматическими инструментами STATISTICA; запись полноценных макросов для любых анализов; создание собственных нейросетевых анализов и приложений с помощью STATISTICA Visual Basic, вызов STATISTICA Neural Networks из любого приложения, поддерживающего технологию СОМ (например, автоматическое проведение нейро-сетевого анализа в таблице MS Excel или объединение нескольких пользовательских приложений, написанных на С++, С#, Java и т.д.).

2) BaseGroup Labs. занимается разработкой аналитического программного обеспечения и консультациями в области анализа данных. Фирма расположена в Рязани, основана 22 ноября 1995 года.

Основной продукт компании - Аналитическая платформа Deductor. [21]

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

Deductor предоставляет аналитикам инструментальные средства, необходимые для решения самых разнообразных аналитических задач: корпоративная отчетность, прогнозирование, сегментация, поиск закономерностей - эти и другие задачи, где применяются такие методики анализа, как OLAP, Knowledge Discovery in Databases и Data Mining. Deductor является идеальной платформой для создания систем поддержки принятий решений.

Решаемые задачи

Реализованные в Deductor технологии могут использоваться как в комплексе, так и по отдельности для решения широкого спектра бизнес-проблем:

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

· Обработка нерегламентированных запросов. Конечный пользователь может с легкостью получить ответ на вопросы типа "Сколько было продаж товара по группам в Московскую область за прошлый год с разбивкой по месяцам?" и просмотреть результаты наиболее удобным для него способом.

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

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

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

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

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

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

Проанализировав эти продукты по таким критериям как стоимость(Deductor-1000$, Statistica Neural Networks-2595$), скорость, функциональность, требовательность к ресурсам, мы пришли к выводу, что целесообразнее разработать своё приложение, более быстрое, менее ресурсоёмкое и имеющее оптимальный набор функций для построения нейронной сети обратного распространения ошибки.

1.9 Техническое задание

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

НАЗНАЧЕНИЕ

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

1. ТРЕБОВАНИЯ К ПРОГРАММЕ ИЛИ ПРОГРАМНОМУ ИЗДЕЛИЮ

1.1. Требования к функциональным характеристикам

1.1.1. Система должна обеспечивать возможность выполнения следующих функций:

· Импорт данных

· Обработка данных

· Нормализация данных

· Настройка параметров нейронной сети

· Обучение нейронной сети

· Визуализация данных

· Эксперимент

· Сохранение обученной нейронной сети

· Экспорт данных

4.1.2.Исходные данные:

· Статистические данные

· Параметры нормализации

· Количество слоёв и нейронов

· Параметры обучения нейронной сети

· Условия завершения обучения нейронной сети

· Параметры визуализации данных

· Данные для эксперимента

4.1.3. Результаты:

· Временные параметры обучения сети

· График обучения

· Обученная сеть

· Результаты эксперимента

4.2. Требования к надёжности

4.2.1. Предусмотреть контроль вводимой информации.

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

4.2.3. Обеспечить целостность хранимой информации.

4.3. Требования к составу и параметрам технических средств

4.3.1. Система должна работать на IBM совместимых компьютерах.

4.3.2. Минимальная конфигурация:

· Типпроцессора……………….……..…………..Pentium I и выше;

· Частота процессора………………………………..100Mhz и выше;

· Объём оперативного запоминающего устройства(зависит от количества слоёв и нейронов в сети)………………64 Мб и более;

4.4. Требования к информационной и программной совместимости

Система должна работать под управлением семейства операционных систем Win 32 (Windows 95, Windows 98, Windows Me, Windows 2000, Windows NT, Windows XP).

Глава 2. Проектная часть

2.1 Математическая модель задачи

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

Искусственный нейрон.

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

Рис.2.1 Схема нейрона

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

,(1)

Где:

n - число входов нейрона

xi - значение i-го входа нейрона

wi - вес i-го синапса

Затем определяется значение аксона нейрона по формуле

Y = f(S),(2)

Где f - некоторая функция ,которая называется активационной. Наиболее часто в качестве активационной функции используется так называемый сигмоид, который имеет следующий вид:

(3)

Основное достоинство этой функции в том, что она дифференцируема на всей оси абсцисс и имеет очень простую производную:

(4)

При уменьшении параметра ??сигмоид становится более пологим, вырождаясь в горизонтальную линию на уровне 0,5 при ?=0. При увеличении ? сигмоид все больше приближается к функции единичного скачка.

Нейронные сети обратного распространения.

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

Нейронная сеть обратного распространения состоит из нескольких слоев нейронов, причем каждый нейрон слоя i связан с каждым нейроном слоя i+1, т.е. речь идет о полносвязной НС.

В общем случае задача обучения НС сводится к нахождению некой функциональной зависимости Y=F(X) где X-вектор входной, а Y -выходной векторы. В общем случае такая задача, при ограниченном наборе входных данных имеет бесконечное множество решений. Для ограничения пространства поиска при обучении ставится задача минимизации целевой функции ошибки НС, которая находится по методу наименьших квадратов:

,(5)

Где:

yj - значение j-го выхода нейросети

dj- целевое значение j-го выхода

p - число нейронов в выходном слое

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

(6)

где ?- параметр определяющий скорость обучения

,(7)

Где:

yj- значение выхода j-го нейрона

Sj - взвешенная сумма входных сигналов, определяемая по формуле (1). При этом множитель

,(8)

где xi - значение i-го входа нейрона

Далее рассмотрим определение первого множителя формулы (7)

(9)

где k - число нейронов в слое n+1.

Введем вспомогательную переменную

(10)

Тогда мы сможем определит рекурсивную формулу для определения n-ного слоя если нам известно следующего n+1-го слоя.

(11)

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

(12)

И наконец запишем формулу (6) в раскрытом виде

(13)

Рассмотрим теперь полный алгоритм обучения нейросети

подать на вход НС один из требуемых образов и определить значения выходов нейронов нейросети

рассчитать для выходного слоя НС по формуле (12) и рассчитать изменения весов выходного слоя N по формуле (13)

Рассчитать по формулам (11) и (13) соответственно и для остальных слоев НС, n=N-1..1

Скорректировать все веса НС

(14)

Если ошибка существенна, то перейти на шаг 1

На этапе 2 сети поочередно в случайном порядке предъявляются вектора из обучающей последовательности.

1

Повышение эффективности обучения НС обратного распространения

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

Простейшим методом усовершенствования градиентного спуска является введение момента ? ,когда влияние градиента на изменение весов изменяется со временем. Тогда формула (13) примет вид

(13.1)

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

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

Основное отличие НС в том, что в них все входные и выходные параметры представлены в виде чисел с плавающей точкой обычно в диапазоне [0..1]. В тоже время данные предметной области часто имеют другое кодирование. Так это могут быть числа в произвольном диапазоне, даты, символьные строки. Таким образом данные о проблеме могут быть как количественными так и качественными. Рассмотрим сначала преобразование качественных данных в числовые, а затем рассмотрим способ преобразования входных данных в требуемый диапазон.

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

Таблица 2. 1

Обычный

Без осадков

Праздничный

Выходной

День выдачи зарплаты покупателям

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

Таблица 2. 2

Осень

Зима

Весна

Лето

Благоприятность каждого фактора возрастает в таблицах при движении слева направо.

В первом случае мы видим, что день может обладать несколькими свойствами одновременно. В таком случае нам необходимо использовать такое кодирование, при котором отсутствует ситуация, когда разным комбинациям факторов соответствует одно и то же значение. Наиболее распространен способ кодирования, когда каждому фактору ставится в соответствие разряд двоичного числа. 1 в этом разряде говорит о наличии фактора, а 0 о его отсутствии. Параметру «Обычный» можно поставить в соответствии число 0. Таким образом, для представления всех факторов достаточно 4-х разрядного двоичного числа. Получается, что число 10102 = 1010 означает, что у покупателя день выдачи зарплаты, да к тому же и праздничный день, а числу 00002 соответствует обычный день. Таким образом, факторы дня будут представлены числами в диапазоне [0..15].

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

В принципе аналогично можно поступать и для неупорядоченных данных, поставив в соответствие каждому значению какое-либо число. Однако это вводит нежелательную упорядоченность, которая может исказить данные, и сильно затруднить процесс обучения. В качестве одного из способов решения этой проблемы можно предложить поставить в соответствие каждому значению одного из входов НС. В этом случае при наличии этого значения соответствующий ему вход устанавливается в 1 или в 0 при противном случае. К сожалению данный способ не является панацеей, ибо при большом количестве вариантов входного значения число входов НС разрастается до огромного количества. Это резко увеличит затраты времени на обучение. В качестве варианта обхода этой проблемы можно использовать несколько другое решение. В соответствие каждому значению входного параметра ставится бинарный вектор, каждый разряд которого соответствует отдельному входу НС. Например если число возможных значений параметра 128, то можно использовать 7 разрядный вектор. Тогда 1 значению будет соответствовать вектор 0000000 а 128 - вектор 1111111, а, например, 26 значению - 0011011. Тогда число требуемых для кодирования параметров входов можно определить как

N=log2n(15)

Где:

n- количество значений параметра

N- количество входов

Преобразование числовых входных данных

Для НС необходимо чтобы входные данные лежали в диапазоне [0..1], в то время как данные проблемной области могут лежать в любом диапазоне. Предположим что данные по одному из параметров лежат в диапазоне [Min..Max]. Тогда наиболее простым способом нормирования будет

(16)

Где: x- исходное значение параметра

-значение, подаваемое на вход НС

К сожалению этот способ кодирования не лишен недостатков. Так в случае если то распределение данных на входе может принять вид

1

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

(17)

2.2 Обоснование выбора метода проектирования, и средств разработки программного обеспечения

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

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

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

В связи с этим система объектно-ориентированных моделей последовательно разворачивается по направлению от модели общего представления функциональности ЭИС к модели дина-мического взаимодействия объектов, на основе которой могут быть сгенерированы классы объектов в конкретной программ-но-технической среде.

В рамках применения объектно-ориентированного подхода был использован UML. UML представляет собой язык визуального моделирования, который разработан для спецификации, визуализации, проектирования и документирования компонентов программного обеспечения, бизнес-процессов и других систем. Язык UML одновременно является простым и мощным средством моделирования, который может быть эффективно использован для построения концептуальных, логических и графических моделей сложных систем самого различного целевого назначения. Этот язык вобрал в себя наилучшие качества методов программной инженерии, которые с успехом использовались на протяжении последних лет при моделировании больших и сложных систем.

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

Другим принципом построения моделей сложных систем является принцип многомодельности. Этот принцип представляет собой утверждение о том, что никакая единственная модель не может с достаточной степенью адекватности описывать различные аспекты сложной системы. Применительно к объектно-ориентированному подходу это означает, что достаточно полная модель сложной системы допускает некоторое число взаимосвязанных представлений, каждое из которых адекватно отражает некоторый аспект поведения или структуры системы. При этом наиболее общими представлениями сложной системы принято считать статическое и динамическое представления. Феномен сложной системы как раз и состоит в том, что никакое ее единственное представление не является достаточным для адекватного выражения всех особенностей моделируемой системы[5].

Прежде чем приступать к разработке, необходимо определиться с программными продуктами, которые будут использоваться в ходе построения системы. По мере повышения сложности программных проектов резко возрастают требования к эффективности их реализации. Это тем более важно сегодня, когда разработчики ПО вовлечены практически во все аспекты работы предприятий и число таких специалистов растет. В то же время данные исследований в этой области говорят о том, что результаты как минимум половины "внутренних" проектов разработки программных средств не оправдывают возложенных на них надежд. В этих условиях становится особенно актуальной задача оптимизации всего процесса создания программных средств с охватом всех его участников - проектировщиков, разработчиков, тестеров, служб сопровождения и менеджеров. Управление жизненным циклом приложений (Application Lifecycle Management, ALM) рассматривает процесс выпуска программных средств как постоянно повторяющийся цикл взаимосвязанных этапов:

· определение требований (Requirements);

· проектирование и анализ (Design & Analysis);

· разработка (Development);

· тестирование (Testing);

· развертывание и сопровождение (Deployment & Operations).

Каждый из этих этапов должен тщательно отслеживаться и контролироваться. Правильно организованная ALM-система позволяет:

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

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

· повысить производительность труда (разработчики получают возможность делиться передовым опытом разработки и внедрения);

· ускорить разработку благодаря интеграции инструментов;

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

· получить максимальную отдачу от инвестиций в навыки, процессы и технологии.

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


© 2010 BANKS OF РЕФЕРАТ