Автор работы: Пользователь скрыл имя, 22 Ноября 2011 в 22:10, курсовая работа
Искусственные нейронные сети, конечно, годятся не для всех задач, имеющих прикладное значение. Но им, например, будет отдаваться предпочтение в большом классе задач распознавания образов, с которыми плохо или вообще не справляются обычные компьютеры. Уже сейчас искусственные нейронные сети применяются для решения очень многих задач обработки изображений, управления роботами и непрерывными производствами, для понимания и синтеза речи, для диагностики заболеваний людей и технических неполадок в машинах и приборах.
В данном курсовом проекте будет спроектирована нейронная сеть, которая решает такую конкретную задачу, как прогнозирование и аппроксимация функции.
Введение 4
1. Постановка задачи 5
2. Генерирование обучающей выборки 10
3. Проектирование нейронных сетей и алгоритмов обучения 11
3.1 Алгоритм обратного распространения ошибки 11
3.2 Рекуррентная сеть. Архитектура сети. 15
4. Разработка программных модулей 21
5. Тестирование и результаты исследования 22
Заключение 27
Литература 28
a)
производится фаза прямого
, (3.1.17)
где индекс j характеризует нейроны следующего слоя по отношению к слою i.
b)
производится фаза обратного
распространения сигнала, в
, (3.1.18)
. (3.1.19)
В последнем выражении индекс i характеризует нейронные элементы следующего слоя по отношению к слою .
c) для каждого слоя нейронной сети происходит изменение весовых коэффициентов и порогов нейронных элементов:
(3.1.20)
. (3.1.21)
4. Вычисляется
суммарная среднеквадратичная
(3.1.22)
где — размерность обучающей выборки.
5. Если то происходит переход к шагу 3 алгоритма. В противном случае алгоритм обратного распространения ошибки заканчивается.
Таким образом, данный алгоритм функционирует до тех пор, пока суммарная среднеквадратичная ошибка сети не станет меньше заданной, т. е. .
Как известно, многослойные нейронные сети с нелинейной функцией активации нейронных элементов позволяют осуществлять любое отображение входных сигналов в выходные. Однако для эффективного прогнозирования и аппроксимации ряда математических функций их использование является нецелесообразным. К таким математическим функциям относятся те функции, у которых одному значению x соответствует несколько значений y.
Исследуемая
в данном проекте функция принадлежит
к такому роду функций, для прогнозирования
и аппроксимации которых
Рекуррентными называются такие нейронные сети, в которых выходы нейронных элементов последующих слоев имеют синоптические связи с нейронными элементами предшествующих слоев. Это приводит к возможности учета результатов обработки нейронной сетью информации, полученной на предыдущем этапе, при подаче входных данных на следующем этапе функционирования нейронной сети.
Обобщенная
архитектура такой сети представлена
на рис.3.2.1.
X(t) Y(t)
Y(t-1)
Рис.3.2.1.
Обобщенная архитектура рекуррентной
сети
Как видно из рисунка, значение Y, полученное на предыдущем этапе, учитывается на следующем этапе функционирования сети. MLP – многослойный персептрон, Z-1 – элемент задержки.
Существуют различные варианты архитектуры таких сетей, которые отличаются друг от друга способом организации обратных синоптических связей. В данной работе была использована модель Джордана.
В
1986 году Джордан предложил рекуррентную
нейронную сеть, в которой выходы
нейронных элементов последнего
слоя соединены посредством
Модель сети Джордана представлена на рис.3.2.2.
Рис.3.2.2.Модель
рекуррентной сети Джордана
В такой сети количество контекстных нейронов равно количеству выходных нейронных элементов. Wli – синоптическая связь между l-м контекстным нейроном и i-м нейроном скрытого слоя. Контекстные нейроны выполняют распределительные функции.
Зависимость выходных значений от входных в такой сети отражена в формулах (3.2.1)-(3.2.4).
Sj(t)= (3.2.2)
Для скрытого слоя применяются следующие формулы:
pi=F(Si(t)) (3.2.3)
Для
обучения рекуррентных нейронных сетей
используется алгоритм обратного распространения
ошибки, адаптированный к архитектуре
рекуррентной нейронной сети.
В общем случае процедура обучения состоит из следующих шагов:
1) В начальный момент времени t=1 все контекстные нейроны сети устанавливаются в нулевые значения.
2) Входной образ подается на сеть, и происходит его прямое распространение по сети.
3) В соответствии с алгоритмом обратного распространения ошибки происходит модификация весовых коэффициентов и пороговых значений нейронной сети.
4)
Устанавливается значение
5) Обучение производится до тех пор, пока суммарная среднеквадратичная ошибка сети не станет меньше заданной.
Рассмотрим
правила настройки
Выходные значения сети определяются по формуле (3.2.5), значения скрытого слоя – по формулам (3.2.3) и (3.2.4).
y(t)= (3.2.5)
Настраиваемыми параметрами будут Vi(t+1), T(t+1), Wki(t+1), Wli(t+1), Ti(t+1). Для этого используется метод градиентного спуска, в соответствии с которым для минимизации суммарной среднеквадратичной ошибки синоптические связи должны изменяться по формулам (3.2.6)-(3.2.10).
(3.2.6)
(3.2.7)
(3.2.8)
(3.2.9)
(3.2.10)
Квадратичная ошибка для одного выходного образа определяется по формуле (3.2.11).
, (3.2.11)
где е – эталонное значение.
Для
определения формул, по которым будет
производиться модификация
(3.2.16)
В данном курсовом проекте в качестве нейронной сети (НС) применяется рекуррентная нейронная сеть с одним скрытым слоем. Обучение производится согласно алгоритму обратного распространения ошибки, адаптированного к архитектуре рекуррентной нейронной сети. При этом используются три слоя:
В качестве функции активации скрытого и выходного слоя используется линейная функция.
Архитектура нейронной сети для прогнозирования и аппроксимации заданной функции представлена на рис.3.2.3. Подаются значения X(t), Y(t), Z(t) и прогнозируются X(t+1), Y(t+1), Z(t+1). Как видно из рисунка, трехслойная нейронная сеть имеет три входных нейронных элемента, три выходных нейронных элемента и три контекстных нейрона, значения которых получают на выходе сети предыдущего этапа, количество нейронов скрытого слоя можно изменять.
Рис.3.2.3.
Архитектура нейронной сети в первом случае
Примем следующие обозначения:
X(t)=x1, Y(t)= x2, Z(t)= x3 ;
X(t+1)=y1, Y(t+1)= y2, Z(t+1)= y3 ;
Тогда зависимость выходных значений от входных в нашей сети отражена в формулах (3.2.1*), (3.2.3*).
Для скрытого слоя применяются следующие формулы:
pi= (3.2.3*)
Настраиваемые
параметры рассчитываются по формулам
3.5 – 3.16.
В
данном курсовом проекте рассмотрим
также модификацию описанной
выше архитектуры сети. Архитектура
нейронной сети для прогнозирования и
аппроксимации заданной функции во втором
случае состоит из шести входных нейронных
элементов, количество нейронов в скрытом
и выходном слоях остается прежним.
В этом случае, зависимость выходных значений от входных в такой сети отражена в формулах (3.2.1**), (3.2.3**).
Для скрытого слоя применяются следующие формулы:
pi= (3.2.3**)
Настраиваемые параметры рассчитываются по формулам 3.5 – 3.16.
Для реализации проекта была выбрана среда программирования Borland Delphi 7.0. Выбор обусловлен тем, что Borland Delphi 7.0 базируется на технологии объектно-ориентированного программирования и позволяет создавать приложения под операционные системы Windows 9x, XP с удобным для пользователя интерфейсом.
Целью
курсового проекта является исследование
нейронных сетей для
Ниже представлены модули разработанной системы:
Модуль М1 выводит на экран главную форму. Этот модуль позволяет пользователю просматривать всю информацию, содержащуюся в программе, а также осуществляет выход из программы. Т.е. с его помощью осуществляется доступ ко всем остальным модулям.
Модуль М2 предназначен для обучения нейронной сети при заданных параметрах, а именно: размере обучающей выборки, количестве нейронов в скрытом слое, желаемой ошибке сети и максимальном количестве итераций. Модуль при обучении сети выводит номер итерации и ошибку сети, а по окончании процесса обучения в специальной форме отображает результаты: эталонное значение функции, полученное значение и отклонение.
Модуль М3 системы предназначен для прогнозирования функции и вывода результатов прогнозирования.
Модуль М4 предназначены для вывода графиков эталонной и спрогнозированной функций.
При запуске программы появляется главная форма, которая изображена на рис.5.1.