Министерство образования и науки Украины
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
на тему "Искусственная нейронная сеть"
по курсу "Объектно-ориентированное программирование"
2005
Содержание
Введение
1 Постановка задачи
2 Описание проектного решения
2.1 Объектно-ориентированный анализ
2.1.1 Описание предметной области
2.1.2 Информационная модель системы
2.1.3 Модель состояний
2.1.4 Модель процессов
2.2 Объектно-ориентированное проектирование
2.3 Реализация критериев качества
3 Программная реализация
4 Руководство пользователя
Заключение
Перечень ссылок
Приложение
Введение
Идея, что мир можно рассматривать как в терминах объектов, так и событий, была известна еще в древности. По словам Декарта, люди имеют обектно-ориентированный взгляд на мир. Объектный подход является одним из современных методов реализации программных систем. Он позволяет применять объектную ориентацию для решения всего круга проблем, связанных со сложными системами. Объектный подход является концептуальной основой объектно-ориентированного проектирования, которое использует в качестве метода объектно-ориентированный анализ, а в качестве инструмента для реализации объектно-ориентированное программирование.
Наиболее показательна эффективность применения объектного подхода для больших программных систем, со сложным характером взаимодействия значительного числа элементов. Исследованию этих вопросов и посвящена данная курсовая работа. Цель данной курсовой работы – детальное проектирование и реализация системы, которая реализует процессы создания и взаимодействия группы объектов. В качестве реализуемой системы для реализации была выбрана искусственная нейронная сеть. Она представляет собой объект, который состоит из объектов – слоев. В свою очередь каждый слой состоит из определенного числа элементарных объектов – нейронов.
Данный вариант задания был выбран потому, что интерес к искусственным нейронным сетям быстро возрос за последние несколько лет. Искусственные нейронные сети демонстрируют большое число свойств, присущих мозгу – они обучаются на основе опыта, обобщают предыдущие прецеденты на новые случаи и извлекают существенные свойства из поступающей информации, содержащей излишние данные.
В данном курсовом проекте для реализации нейронной сети был применен объектный подход. Это позволило упростить разработку системы, сделать более понятным программный код, что может пригодиться при расширении системы и многое другое.
1 ПОСТАНОВКА ЗАДАЧИ
Целью разработки данной системы является проблема распознавания образов компьютером. В данной курсовой работе реализуется распознавание компьютером печатных букв с помощью многослойной нейронной сети, обучающейся по методу обратного распространения ошибки. Нейронная сеть состоит из нескольких слоев нейронов. Формальная модель нейрона представлена на рисунке 1.1.
x1 w1
Ay
x2 w2
xnwn
Рисунок 1.1 – Формальная модель нейрона
Нейрон имеет n входов
. Каждый вход представляет собой числовое значение из некоторого диапазона. Для каждого входа диапазон может отличаться. В нейроне значение входа умножается на коэффициент – вес входа-w. , . Результаты перемножения складываются: . От результата вычисляется некоторая функция: y=f(A). Существует несколько разновидностей функций: линейная, нелинейная, скачкообразная.Слой нейронов состоит из нескольких однотипных нейронов. Однотипные нейроны вычисляют одинаковые функции.
Нейронная сеть состоит из одного или более слоев. Слой принимает выход предыдущего слоя в качестве входа. Нейроны различных слоев могут иметь различные функции.
В данной курсовой работе, используя объектно-ориентированный подход, была разработана искусственная полносвязанная многослойная нейронная сеть. Функцией активации нейронов этой сети является сигмоид, сдвинутый по оси ординат на -0.5. В качестве примера ее использования, реализуется распознавание рисунков печатных букв с помощью этой сети. Для того, чтобы сеть могла распознавать эти буквы, ее необходимо обучить. В данной курсовой работе реализуется алгоритм обучения нейронной сети «С учителем» - метод обратного распространения ошибки. Он заключается в следующем: для каждой обучающей пары вычисляется ошибка на выходе, затем, учитывая эту ошибку, корректируют веса нейронов выходного слоя. Далее вычисляют ошибку для нейроннов слоя, следующего перед выходным, и корректирую веса его нейроннов. И так далее вплоть до входного слоя.
Для распознавания букв другого шрифта, ее необходимо обучить заново. Она может распознавать буквы, поступившие на ее вход с помехами.
Программа, разработанная при выполнении данного курсового проекта, запускается в операционной системе Windows 95/98/2000. Для ее выполнения необходима динамическая библиотека mfc42.dll, которая поставляется вместе с программой.
2 ОПИСАНИЕ ПРОЕКТНОГО РЕШЕНИЯ
2.1 Объектно-ориентированный анализ
Задача состоит в создании системы распознавания рисунков печатных букв. Данная система реализует это действие, используя для распознавания искусственную нейронную. Нейронная сеть представляет собой один или несколько последовательно связанных между собой слоев нейроннов. Выход каждого предыдущего слоя является входом следующего. Вход первого слоя – это вход сети, а выход последнего – это выход сети. Нейрон представляет собой сумматор, выход которого поступает на вход функционального преобразователя. Выход с функционального преобразователя – выход нейрона. Входы сумматора – входы нейрона. Каждый вход умножается на свой вес. Функция в функциональном преобразователе называется активационной. В данной системе в качестве активационной функции используется сигмоид, сдвинутый по оси ординат на -1/2.
В системе используется многослойная нейронная сеть. Для корректного распознавания букв она должна быть обучена. Обучение нейронной сети состоит в том, веса ее связей корректируются, при предъявлении обучающей пары (входного вектора и соответствующего ему выходного вектора). В данной системе нейронная сеть обучается по методу обратного распространения ошибки.
На вход нейронной сети поступает вектор, который выдает элемент, в котором вводится рисунок буквы. Этот вектор состоит из четырехсот элементов. Пустой клетке соответствует элемент -0.5, а закрашенной клетке – элемент 0.5. Сеть просчитывается, и анализируется выходной вектор нейронной сети. Номеру максимального элемента соответствует номер распознанной буквы. Это позволяет правильно распознать букву, даже когда она поступает на вход с помехами.
Система работает под управлением операционной системы Windows и реализует графический диалоговый режим работы. Ввод рисунков букв осуществляется в специально разработанный для этого графический элемент. Вывод распознанных букв в текстовое поле.
2.1.1 Описание предметной области
Основа проектирования – определение ключевых абстракций, характеризующих словарь предметной области и механизмов управления ими.
Сформируем список ключевых абстракций:
Буквы должны как-то вводиться.
Элемент для ввода.
Выходной вектор.
Буквы должны распознаваться искусственной нейронной сетью.
Нейронная сеть.
Входной слой нейронов.
Скрытые слои нейронов.
Выходной слой нейронов.
Число скрытых слоев нейронов.
Нейронная сеть состоит из слоев нейронов.
Слой нейроннов.
Число нейроннов в слое.
Нейронны.
Слой нейронов состоит из нейронов.
Нейрон.
Входы нейрона.
Число входов.
Веса входов.
Выход.
Таким образом список абстракций включает четыре класса. Из них три: нейронная сеть, слой нейронов и нейрон предназначены для построения нейронной сети, т. е. нейронная сеть состоит из слоев нейронов, а слой нейронов состоит из нейронов. Четвертая абстракция – элемент для ввода, предназначена для ввода рисунков букв.
2.1.2 Информационная модель системы
В данной системе помимо объектов, созданных непосредственно средой программирования для реализации пользовательского интерфейса и обеспечения работы программы в операционной системе, были созданы следующие объекты, исходя из абстракций, выделенных в пункте 2.1.1.
Объект Элемент для ввода представляет собой реальный объект, созданный для ввода рисунка букв. Графическое представление этого объекта на рисунке 2.1.2.1.