Нейронные сети

Содержание

 

Введение

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

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

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

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

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

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

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

 

  1. Общая часть

1.1 Анализ используемых инструментальных средств

Для решения данной задачи существует несколько подходящих средств разработки: Borland C++ Builder, MS Visual C++, Adobe Flash.

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

Borland C++ Builder – представляет собой средство разработки от компании Borland, использующее язык программирования С++.

Достоинства:

  • интерфейс выполнен в SDI (simple development interface – простой интерфейс разработки) стиле – это подразумевает удобный и наглядный процесс разработки приложения;
  • высокая надёжность программы созданной с помощью этого средства;
  • конечный продукт будет представлять собой исполняемый файл (*.exe), а это означает, что ПП будет полностью самостоятелен и не будет зависеть от других программных пакетов;
  • подходит для решения любой задачи по программированию.

Недостатки:

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

Visual C++ – средство разработки от компании Microsoft использующее язык программирования С++.

Достоинства:

  • программы, созданные с помощью Visual C++ крайне надёжны;
  • конечный продукт будет исполняемым файлом;
  • подходит для создания абсолютно любой программы для Windows.

Недостатки:

  • требует ещё большего знания языка C++, так как не обладает простым и понятным интерфейсом.

Adobe Flash – среда для создания приложений под Flash платформу от компании Adobe.

Достоинства:

  • разработка приложений занимает немного времени;
  • имеются отличные средства для создания интерактивного интерфейса.

Недостатки:

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

Разрабатываемый программный  продукт должен включать в себя понятный и удобный пользовательский интерфейс  и производить немалое число  математических вычислений. В принципе все вышеперечисленные средства разработки можно было бы использовать для решения этой задачи, но использование C++ Builder это самый рациональный путь, так как эта среда разработки обладает достоинствами всех перечисленных средств, и в то же время не обладает такими недостатками как «чрезмерная требовательность к ресурсам процессора» (Adobe Flash) и не требует большого знания языка C++ как MS Visual C++.

C++ Builder – среда быстрой разработки, выпускаемая компанией Borland. Предназначена для написания программ на языке программирования C++. C++ Builder объединяет Библиотеку визуальных компонентов и среду программирования.

C++ Builder содержит инструменты, которые позволяют осуществлять настоящую визуальную разработку Windows-приложений методом drag-and-drop, упрощая программирование благодаря WYSIWYG (сокращение от What You See Is What You Get, англ. что видишь, то и получишь) редактору интерфейса, встроенному в его среду разработки.

1.2 Характеристика используемого комплекса технических средств и программного обеспечения ЭВМ

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

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

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

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

Основными характеристиками ПК являются:

- Быстродействие, производительность, тактовая частота

-  Разрядность машины и кодовых шин интерфейса.

- Типы системного и локальных интерфейсов.

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

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

  • Материнская плата   - Gigabyte GA-MA69VM-S2 (Socker AM2, Dual-Ch DDR2 800, SATA 3Gb/s, Gagabit LAN, HD Audio, micro ATX);
  • Жёсткий диск - HDD SATA 500.0 Gb Seagate Barracuda Cache 8 Mb 7200 rpm;
  • Процессор – AMD Athlon 64 X2 4200+;
  • Оперативная память (ОЗУ) – Kingston KVR800D2N6/1G 1Gb PC2 – 6400 CL6 24 – PIN DIMM;
  • Видеокарта – NVIDIA GeForce 275 GTX Sonic 896 mb, 256 bit;
  • Звуковая карта – Realtek High Definition Audio.

Используемое  программное обеспечение:

  • ОС Windows 7;
  • MS Word 2007;
  • C++ Builder 2010.

 

2. Специальная часть

2.1 Постановка задачи

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

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

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

Функциональная схема  программы представлена на рисунке 2.1.


 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 2.1 - Функциональная схема программы.

 

2.2 Информационное обеспечение задачи

Информационная база программы представлена в виде базы данных.

База данных состоит  из следующих таблиц:

    • Таблица предметов для сравнения (Рисунок 2.2)
    • Таблица параметров сравнения (Рисунок 2.3)
    • Таблица значений параметров (Рисунок 2.4)

 

Рисунок 2.2 - Таблица предметов для сравнения.

Рисунок 2.3 - Таблица параметров сравнения.

 

Рисунок 2.4 - Таблица значений параметров.

2.3 Алгоритмы и их описание

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

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

Функции «Создание эталона» и «Создание предмета» имеют похожие алгоритмы (рисунки 2.6 и 2.7), с отличием в том что алгоритм работы с предметами является по сути урезанным алгоритмом работы с эталонами. В нем убраны функции редактирования и создания кроме значения параметра сравниваемого предмета.

Алгоритм функции «Обработка» представлен на рисунке 2.8.

 

Рисунок 2.5 - Блок-схема главного модуля программы.

Рисунок 2.6 - Блок-схема модуля создания эталона.

 

Рисунок 2.7 - Блок-схема модуля создания предмета.

 

Рисунок 2.8 - Блок-схема алгоритм функции «Обработка».

2.4 Описание программы

C++ Builder представляет собой SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель (слева) и палитру компонентов (справа). Помимо этого, по умолчанию при запуске C++ Builder появляются окно инспектора объектов (слева) и форма нового приложения (справа). Под окном формы приложения находится окно редактора кода. Формы являются основой приложений C++ Builder. Создание пользовательского интерфейса приложения заключается в добавлении в окно формы элементов объектов C++ Builder, называемых компонентами. Компоненты C++ Builder располагаются на палитре компонентов, выполненной в виде многостраничного блокнота. Важная особенность C++ Builder состоит в том, что он позволяет создавать собственные компоненты и настраивать палитру компонентов, а также создавать различные версии палитры компонентов для разных проектов.

Компоненты C++ Builder

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

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

Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы.

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

Компоненты, использованные в создании программы:

  • TBsSkinButton – кнопка Windows;
  • TLabel – стандартная текстовая метка;
  • TMainMenu – стандартное главное меню программы;
  • TEdit – стандартное поле для редактирования;
  • TRadioGroup – стандартное групповое поле переключателей;
  • TGroupBox – стандартное поле для группировки компонентов;
  • TRichEdit – стандартное поле для вывода форматированного текста.

Свойства компонентов

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Многие свойства компонента в колонке свойств имеют значение, устанавливаемое по умолчанию (например, высота кнопок). Свойства компонента отображаются на странице свойств (Properties). Инспектор объектов отображает опубликованные (published) свойства компонентов. Помимо published-свойств, компоненты могут и чаще всего имеют общие (public), опубликованные свойства, которые доступны только во время выполнения приложения. Инспектор объектов используется для установки свойств во время проектирования. Список свойств располагается на странице свойств инспектора объектов. Можно определить свойства во время проектирования или написать код для видоизменения свойств компонента во время выполнения приложения.

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

События

Страница событий (Events) инспектора объектов показывает список событий, распознаваемых компонентом (программирование для операционных систем с графическим пользовательским интерфейсом, в частности, для Windows Vista или Windows 7 предполагает описание реакции приложения на те или иные события, а сама операционная система занимается постоянным опросом компьютера с целью выявления наступления какого-либо события). Каждый компонент имеет свой собственный набор обработчиков событий. В C++ Builder следует писать функции, называемые обработчиками событий, и связывать события с этими функциями. Создавая обработчик того или иного события, вы поручаете программе выполнить написанную функцию, если это событие произойдет.

Для того чтобы добавить обработчик событий, нужно выбрать на форме  с помощью мыши компонент, которому необходим обработчик событий, затем  открыть страницу событий инспектора объектов и дважды щелкнуть левой  клавишей мыши на колонке значений рядом с событием, чтобы заставить C++ Builder сгенерировать прототип обработчика событий и показать его в редакторе кода. При этом автоматически генерируется текст пустой функции, и редактор открывается в том месте, где следует вводить код. Курсор позиционируется внутри операторных скобок {...}. Далее нужно ввести код, который должен выполняться при наступлении события. Обработчик событий может иметь параметры, которые указываются после имени функции в круглых скобках.

Методы

Метод является функцией, которая связана с компонентом, и которая объявляется как часть объекта. Создавая обработчики событий, можно вызывать методы, используя следующую нотацию: ->, например:

Edit1->Show();

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

Для нормального функционирования программы, необходимы следующие требования к характеристикам ПК:

    • CPU 2,4 ГГц и выше;
    • ОЗУ 512;
    • Видео карта 64 Мб и выше;
    • Объём памяти на жёстком диске – 1,5 Мб.

В ходе дипломного проектирования были разработаны следующие главные функции:

  • управление эталонами ;
  • управление параметрами;
  • обработка;

Рассмотрим подробнее  вышеперечисленные функции.

Управление  эталонами реализуется с помощью ряда различных функций.

При нажатии на кнопку выбора «Создание эталона» пользователь попадает в окно выбора названия предмета сравнения. Код конструктора представлен на рисунке 2.9

Рисунок 2.9 – Код конструктора.

 

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

Далее пользователь видит  окно создания эталона. Оно реализовано  с помощью класса параметров (приложение А).

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

Следующим шагом идет генерация панели для размещения параметра и его значений.

Создается управляющая  сетка для размещения в ней  значений параметров. Далее идет получение указателя на панель управляющей сетки для вставки в него интервала и значения веса.

В конце сохраняется  номер параметра, перерисовка управляющей  сетки и ее обновление.

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

Функция добавления строки в таблицу (Рисунок 2.10)

 

Рисунок 2.10 - Функция добавления строки в таблицу

Функция удаления строки из таблицы (Рисунок 2.11)

 

Рисунок 2.11- Функция удаления строки из таблицы

 

Функция добавления столбца  в таблицу (Рисунок 2.12)

 

Рисунок 2.12- Функция добавления столбца в таблицу

Функция удаления столбца  из таблицы. (Рисунок 2.13)

 

Рисунок 2.13 - Функция удаления столбца из таблицы

 

Функция обнуления всех занесенных в таблицу величин (Рисунок 2.14).

 

Рисунок 2.14 - Функция обнуления всех занесенных в таблицу величин

 

Выход из диалогового  окна осуществляется с помощью клавиши  «Выход». Реализуется функцией представленной на рисунке 2.15

 

Рисунок 2.15 – Функция выхода из диалогового окна

 

Для удобства пользователя реализована функция перерисовки всех параметров и их значений из окна «Создание эталона» в окно «Создание предмета». Ее код показан на рисунке 2.16.

 

Рисунок 2.16 – Функция перерисовки таблицы параметров и их значений

 

Показ формы на экран  осуществляется функцией представленной на рисунке 2.17.

Рисунок 2.17 – Функция показа формы

 

Закрытие формы и  сохранение внесенных изменений  осуществляется функцией приведенной  на рисунке 2.18.

 

Рисунок 2.18 – функция закрытия формы

 

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

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

Вариация этой функции  представлена на рисунке 2.19.

 

Рисунок 2.19 – функция обнуления величин

 

Так же в управлении параметрами и эталонами присутствует деструктор класса (Рисунок 2.20)

 

Рисунок 2.20– Деструктор класса

 

Обработка выполняется с помощью конструктора и ряда функций.

Конструктор представлен  на рисунке 2.21.

Рисунок 2.21– Конструктор

 

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

 

Рисунок 2.22 – функция калькуляции отклонения

 

Так же для расчета  используется функция округления (рисунок 2.23).

Далее идет построение графика, определение координаты точки, и  создание рисунка, как отдельного файла (рисунок 2.24).

 

Рисунок 2.23 – Функция округления

 

Рисунок 2.24 – Построение графика

 

Предусмотрена функция  сохранения полученного графика

(рисунок 2.25).

 

Рисунок 2.25 – Функция сохранения графика

 

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

Функция создания меню выбора (рисунок 2.26).

 

Рисунок 2.26 – Функция создания маню выбора

 

Функция заполнения предметами (рисунок 2.27).

Рисунок 2.27 - Функция заполнения предметами

 

Функция создания строк  в меню (рисунок 2.28).

 

Рисунок 2.28 – функция создания строк в меню

 

Функция удаления строк  и перенумерации индексов (рисунок 2.29).

Событие вызываемое при  нажатии ( рисунок 2.30 ).

Рисунок 2.29 - Функция удаления строк и перенумерации индексов

Рисунок 2.30 - Событие вызываемое при нажатии

2.5 Описание процесса отладки программы

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

Ошибки, которые могут  быть допущены в процессе проектирования:

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

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

Тестирование позволяет  не только устранить ошибки, но и  оценить готовность ПО к эксплуатации.

Программа тестировалась по нескольким направлениям:

  1. Проверка загрузки соответствующего параграфу теоретического материала и примеров;
  2. Тестирование правильности проверки тренировочных упражнений;
  3. Тестирование проверки правильности контрольных тестов.

2.6 Обработка ошибок в программе

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

Программа в силу своей  специфики не должна давать сбои. Единственный случай возникновения ошибок может происходить в случае отсутствия или повреждения файлов программы. Если при запуске программы возникает ошибка «Can’t open Database “…” или «File “…” is corrupt». В таких случаях необходимо проверить наличие упомянутой базы данных в папке с программой и если файл поврежден или отсутствует, то следует перезаписать программу.

Нейронные сети