Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовик ИТПЗ отчет мой.docx
Скачиваний:
5
Добавлен:
24.12.2018
Размер:
515.55 Кб
Скачать

Министерство образования и науки РФ

ФГБОУ ВПО «ИжГТУ»

Кафедра « Мехатронные системы»

Отчет по курсовой работе

Тема: «Исследование метода обратного распространения ошибки для обучения нейронной сети»

Выполнил:

студент гр. 7-05-3

Клековкин А.В.

Проверил:

Караваев Ю.Л.

Ижевск 2011

Содержание

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

Введение 3

1.Разработка алгоритма 4

1.1Математический алгоритм 5

1.2Разработка схем алгоритмов 12

2. Разработка программы 14

3.Вычислительный эксперимент 15

3.1 Определение оптимальных параметров нейросети в среде Matlab. 15

3.2 Программа разработанная на языке С#. 17

4.Руководство программиста 19

4.1 Назначение и условия применения программы 19

4.2 Характеристика программы 19

4.3 Обращение к программе 21

4.4Входные и выходные данные 21

5.Руководство пользователя 22

Заключение 25

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

Приложение А 27

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

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

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

Введение

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

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

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

  1. Разработка алгоритма

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

    1. Математический алгоритм

      1. Нормальное распределение.

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

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

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

Пусть  (1)

Тогда  по распределению при , (2)

где N(0,1) — нормальное распределение с нулевым математическим ожиданием и стандартным отклонением, равным единице. Обозначив символом  выборочное среднее первых n величин, то есть  (3), мы можем переписать результат центральной предельной теоремы в следующем виде:  по распределению при . (4)

Используя вышеприведенные формулы, формируем 4 класса чисел с нормальным распределением: 1 класс – μ=0; 2 класс – μ=5; 3 класс – μ=2,5; 4 класс – μ=10.

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

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

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

Состояние нейрона определяется по формуле

(5)

где :

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

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

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

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

Y = f(S)

(6)

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

(7)

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

(8)

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

Список других наиболее употребляемых функций активации приведен в таблице 1.

Таблица 1- Основные функций активации.

Название

Математическая запись

1

Линейная

2

Пороговая бинарная

3

Пороговая биполярная

4

Линейная ограниченная

5

Гиперболический тангенс

6

Логарифмическая

7

Радиально-базисная

8

Сигмоидная (y [-1,1])

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

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

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

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

Алгоритм обратного распространения ошибки:

  1. Инициализировать синаптические веса маленькими случайными значениями.

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

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

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

  5. Подкорректировать веса сети для минимизации ошибки (как см. ниже).

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

Рассмотрим подробней 5 шаг – корректировка весов сети. Здесь следует выделить два нижеописанных случая.

Случай 1. Корректировка синаптических весов выходного слоя

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

Введем величину δ, которая равна разности между требуемым и реальным выходами, умноженной на производную функции активации: (9)

Тогда, веса выходного слоя после коррекции будут равны:

(10)

где:

i – номер текущей итерации обучения;

– величина синаптического веса, соединяющего нейрон p с нейроном q;

– коэффициент «скорости обучения», позволяет управлять средней величиной изменения весов;

– выход нейрона .

Случай 2. Корректировка синаптических весов скрытого слоя.

(11)

где:

– сумма от 1 по N, N – количество нейронов выходного слоя.

Тогда, веса скрытого слоя после коррекции будут равны:

(12)

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

(13)

где  реальное выходное состояние нейрона  выходного слоя N нейронной сети при подаче на ее входы  - го образа;  - желаемое (идеальное) выходное состояние этого нейрона. Суммирование происходит по всем нейронам выходного слоя и по всем обрабатываемым сетью образам.

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

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

План эксперимента:

Коэффициент сигмоиды изменяется от 0 до 10 с шагом 0,1;

Количество шагов обучения – 100;

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

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