close

Вход

Забыли?

вход по аккаунту

?

NeuralNetwork1

код для вставкиСкачать
Лабораторная 4. Многослойный пересптрон
ТЕОРИЯ.2
СТРУКТУРА МНОГОСЛОЙНОГО ПЕРСЕПТРОНА.2
РАБОТА НЕЙРОННОЙ СЕТИ.3
ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ МЕТОДОМ "BACK PROPAGATION".3
ОПИСАНИЕ ПРОГРАММЫ.5
СОЗДАНИЕ И РЕДАКТИРОВАНИЕ НЕЙРОННОЙ СЕТИ.5
СОХРАНЕНИЯ И ЗАПИСЬ НЕЙРОННОЙ СЕТИ.7
СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ОБУЧАЮЩИХ ДАННЫХ.8
СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ТЕСТИРУЮЩИХ ДАННЫХ.9
СОХРАНЕНИЯ И ЗАГРУЗКА ОБУЧАЮЩИХ И ТЕСТИРУЕМЫХ ДАННЫХ.9
ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ.9
ТЕСТИРОВАНИЕ НЕЙРОННОЙ СЕТИ.10
ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ.11
ОГРАНИЧЕНИЯ В ПРОГРАММЕ.11
Многослойный персептрон.
Теория.
Структура многослойного персептрона.
Рассмотрим многослойный не рекурсивный персептрон следующего вида:
,где:
- N - количество входов
- M - количество выходов
- K - количество слоев в сети Каждый слой такой нейронной сети состоит из набора нейронов. Каждый нейрон имеет следующую внутреннюю структуру:
Нейрон сначала суммирует все пришедшие сигналы, а потом полученную величину пропускает через передаточную функцию F.
Функция F обычно имеет следующий вид:
Каждый слой нейронной сети связан с слоем, посредством матрицы весови вектор состояний слоя выражается через вектор состояния слоя следующим образом: Далее, будем считать, что первый слой, является входным слоем и передаточная функция нейронов этого слоя равна 1. Последний слой нейронной сети называется выходным, на котором формируется выходной сигнал. Для простоты, предположим, что вход у нейрона будет обозначаться буквой , а выход будет обозначаться .
Работа нейронной сети.
Работа нейронной сети может быть представлена следующими шагами.
1. Получить входные данные в вектор .
2. Цикл :
3. 4. Конец цикла
5. Выдать выходные данные В результате работы нейронной сети будет получен результат , являющийся откликом системы на входной вектор .
Обучение нейронной сети методом "back propagation".
Задача данной главы состоит в том, чтобы научить нейронную сеть правильно откликаться на заранее заданные входные данные. Для этого необходимо иметь нейронную сеть и набор входных данных:
.
Где первый вектор каждой пары, задает входной сигнал для нейронной сети, а второй вектор задает правильный вектор реакции нейронной сети на данный входной вектор. Данный метод обучения называется, обучением с учителем.
Обучение нейронной сети задается следующими шагами:
Цикл 1. Получить входные данные в вектор .
2. Цикл :
3. 4. Конец цикла
5. Выдать выходные данные 6. Посчитать невязку на выходном слое 7. Посчитать приращение матрицы весов 8. Изменим матрицу весов Цикл 9. Найти невязку 10. Найти приращение матрицы весов 11. Изменить матрицу весов Конец цикла
Конец цикла
В итоге работы этого алгоритма изменятся веса матриц нейронной сети. Этот алгоритм следует повторять, пока результаты работы нейронной сети, не будут отличаться от требуемых выходных векторов на , на всей обучающей последовательности. Шаг алгоритма - нужно выбирать в пределе .
Описание программы.
По выше изложенным алгоритмам была реализованная программа. Которая позволяет:
- создавать нейронную сеть
- редактировать нейронную сеть
- обучать нейронную сеть
- тестировать нейронную сеть
- создавать и редактировать обучающие и тестируемые данные
- сохранять, загружать нейронную сеть, а также обучающие и тестируемые данные
Создание и редактирование нейронной сети.
При каждом запуске программы, в памяти создается простейшая нейронная сеть, с 3 слоями, по 1 нейрону в каждом слое. Информация о нейронной сети отображается в диалоговом окне, следующего вида:
На экране отображается:
- количество слоев в сети
- список нейронов и количество нейронов на каждом слое
- тип передаточной функции нейронов, может быть:
- уровень единицы
- уровень нуля
Так как программа рассчитана на создание и обучения нейронной сети в целях классификации входного изображения. Причем входное изображение передается в черно-белом виде. Соответственно черной точке соответствует 1, а белой 0. Если 0 и 1 будут составлять входные и выходные вектора, то при обучении веса нейронов, на которые будут подаваться 0, не будут изменяться при процедуре "back propagation". Соответственно было предложено сделать при работе и обучении следующее введение.
Ноль заменить на ZeroLevel, а единицу на UnityLevel. Где
&
, для передаточной функции
.
И
& для передаточной функции .
Тогда обучение нейронной сети будет происходить быстрей. Также тип передаточной функции влияет на скорость обучения сети. Было замечено, что при второй функции скорость обучения примерно в два раза быстрей, чем при первой. Созданную нейронную сеть можно редактировать с помощью формы, вызываемой в меню как Правка->Сеть...:
Здесь можно задавать все параметры нейронной сети.
При выборе передаточной функции, автоматически задается LevelZero и LevelUnity, также эти уровни можно изменить вручную. Сохранения и запись нейронной сети.
В программе можно сохранять и загружать раннее созданную нейронную сеть, посредством соответствующего меню.
Создание и редактирование обучающих данных.
При запуске приложения автоматически создается минимальный набор обучающих данных, состоящий из одной пары одноэлементных векторов. В процессе работы этот набор можно редактировать с помощью формы, выбираемую через меню Правка->Обучающие данные...:
Список Входные данные отображает входной вектор, каждый элемент данного вектора может иметь собственное название. Выходные данные, отображаются в одноименном поле. Поля Размер по X и Размер по Y позволяют задавать ширину и высоту входных изображений входного вектора. Выходные данные всегда форматируется по 1 цифре в строчке. Поле Размер выхода позволяет выбрать текущую редактируемую пару. Также между полями Входные данные и Выходные данные, находится поле, которое отображает текущее графическое представление данного графического элемента.
Чтобы удалить какой-то элемент надо выделить нужный элемент в списке Входные данные и нажать правую кнопку мыши, и во возникнувшем меню выбрать Удалить.
А чтобы изменить графическое представление входного элемента, нужно дважды щелкнуть на желаемом элементе в списке Входные данные. Тогда появится следующая форма:
В этой форме можно с помощью мышки задать нужное графическое представление. Если нажата "Левая" клавиша мыши, то рисуется черная линия, если нажата "Правая", то изображение в том месте, где находится мышка, стирается. В поле Название можно задать подходящее название для этого элемента. Кнопки-стрелки позволяют перемещаться по элементам входных данных. Кнопка Очистить - очищает текущее графическое изображение.
Создание и редактирование тестирующих данных.
Чтобы оценить качество обучения нейронной сети, необходимо проконтролировать степень распознавания входных данных. Если тестируемые данные состоят из тех же пар, что и обучающая последовательности, то распознавание будет 100%, если же менять тестируемые данные (искажать изображения, вводить шумы), то процент распознавания измененных входных данных уже не будет 100%. Поэтому тестируемая последовательность создается и редактируется аналогичным методом.
Сохранения и загрузка обучающих и тестируемых данных.
Программа позволяет сохранять и загружать созданные данные. Это реализовано в меню Данные->...
Обучение нейронной сети.
Обучение созданной нейронной сети на множестве обучающих пара, происходит по вызову команды Работа->Обучение. Вся информация, относящаяся к этому процессу отображается и изменяется в поле вывода Тестирование главной формы. Опишем присутствующие там параметры:
- Поле Максим. Эпох - задает максимальное количество итерации прогона обучающей последовательности, через алгоритм обучения нейронной сети. Так как нейронная сеть в момент обучения может попасть в локальный минимум, то процесс обучения никогда не кончится. И следовательно было бы разумно ограничить количество итерации обучения сверху большим, но не бесконечным числом.
- Поле Процесс - отображает состояние работы алгоритма обучения (Обучение, Стоп).
- Поле Текущая Эпоха - отображает после алгоритма обучения сети, количество проделанных итерации.
- Поле Результат - выводит результат обучения сети (Обучена, Не обучена), то есть обучена нейронная сети или нет.
- Поле Точность - задает точность , используемая в алгоритме обучения, как критерий обученности сети.
- Поле Шаг - задает шаг алгоритма обучения сети.
Во время обучение нейронной сети возникает следующее окно:
В данном окне, отображается информация о обучении сети. В поле Невязка отображается максимальная невязка на текущей эпохе. В поле Текущая эпоха отображается (кратно 10) номер текущей эпохи. На экране (как на осциллографе) отображается относительное представление невязки.
Также процесс обучения можно прервать по нажатию кнопки Остановить.
Тестирование нейронной сети.
Тестирование нейронной сети происходит на множестве тестируемых пар, происходит по вызову команды Работа->Тестирование.
Вся информация, относящаяся к этому процессу отображается в поле вывода Тестирование главной формы и имеет следующие аспекты:
- Поле Процесс (Работа,Стоп)
- Поле Точность- задает область однозначности Уровня Нуля(LevelZero) и Уровня Единицы(UnityLevel) на выходе нейронной сети. - Поле Правильность - количество правильных ответов в процентах(%).
- Поле (Раскрывающий список) Элементы - после тестировании нейронной сети выводит список названий "не угаданных" элементов.
Использование программы.
Данная программа представляет собой .exe файл с именем Nnetwork1.exe, который и является выше описанной программой. При повторных использованиях операции ввода\вывода создает создает переменную, в которой хранится директория последнего обращения к внешним файлам (Сделано для более быстрой навигации по файлам сети и данных). Данный исполняемый модуль можно копировать и задавать ему другое имя. Это не повлияет на работу программы. Также почти все пункты меню продублированы на ToolBar-е. Что делает каждая из этих кнопок, можно узнать, наведя мышку на эту кнопку.
Пункт меню Правка->Очистить сеть позволяет "скинуть" все веса нейронной сети в начальное (не обученное) состояние. Также практически все поля в программе выводят дополнительную информацию о данном поле, после наведения на это поле мышки.
Также с программой поставляются несколько исходным файлов:
- Digits_10_Clever.net - файл обученной нейронной сети, распознающий цифры с размерность изображения 10х10.
- Digits_10.trn - файл, содержащий обучающую последовательность цифр с размерность изображения 10х10.
- Letters_10_Clever.net - файл обученной нейронной сети, распознающую английские буквы размерность изображения 10х10.
- Letters_10.trn - файл, содержащий обучающую последовательность английские буквы с размерность изображения 10х10.
Ограничения в программе.
Данная программа имеет следующие ограничения:
- количество нейронов [1..1000]
- количество нейронов на каждом слое [1..2500]
- размер по X и Y входного изображения [1..50]
Также не рекомендую задавать большие размерности соседним слоям сети. Так как при этом требуется огромное количество памяти. Примерно, сколько нужно памяти для нейронной сети можно по следующей формуле:
где -размер i-ого слоя, а K - количество слоев в нейронной сети. То есть например для нейронной сети 2500,1000,100,8 потребуется около 20 Мегабайт памяти. 11
Документ
Категория
Рефераты
Просмотров
17
Размер файла
208 Кб
Теги
neuralnetwork
1/--страниц
Пожаловаться на содержимое документа