close

Вход

Забыли?

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

?

NeuralNetwork2

код для вставкиСкачать
ТЕОРИЯ.ERROR! BOOKMARK NOT DEFINED.
СТРУКТУРА МНОГОСЛОЙНОГО ПЕРСЕПТРОНА.2
РАБОТА НЕЙРОННОЙ СЕТИ.3
ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ МЕТОДОМ "BACK PROPAGATION".3
ОПИСАНИЕ ПРОГРАММЫ.4
СОЗДАНИЕ И РЕДАКТИРОВАНИЕ НЕЙРОННОЙ СЕТИ.5
СОХРАНЕНИЯ И ЗАПИСЬ НЕЙРОННОЙ СЕТИ.ERROR! BOOKMARK NOT DEFINED.
СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ОБУЧАЮЩИХ ДАННЫХ.6
СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ТЕСТИРУЮЩИХ ДАННЫХ.8
СОХРАНЕНИЯ И ЗАГРУЗКА ОБУЧАЮЩИХ И ТЕСТИРУЕМЫХ ДАННЫХ.8
ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ.8
ТЕСТИРОВАНИЕ НЕЙРОННОЙ СЕТИ.9
ИСХОДНЫЕ ФАЙЛЫ.ERROR! BOOKMARK NOT DEFINED.
ОГРАНИЧЕНИЯ В ПРОГРАММЕ.9
Многослойный персептрон
Структура многослойного персептрона
Рассмотрим многослойный персептрон следующего вида:
,где:
- 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 нейрону в каждом слое. Информация о нейронной сети отображается в диалоговом окне, следующего вида:
На экране отображается:
- количество слоев в сети
- список нейронов и количество нейронов на каждом слое
- тип передаточной функции нейронов, может быть:
- "уровень единицы"
- "уровень нуля"
Так как программа рассчитана на создание и обучения нейронной сети для классификации входного изображения, которое закодировано двоичными векторами, то при обучении веса нейронов, на которые будут подаваться 0, не будут изменяться в процессе обучения. Поэтому в программе "0" соответствует ZeroLevel, а "1" - UnityLevel. Где
&,
для передаточной функции
.
и
& для передаточной функции .
Также тип передаточной функции влияет на скорость обучения сети. Было замечено, что при второй функции скорость обучения примерно в два раза быстрей, чем при первой. Созданную нейронную сеть можно редактировать с помощью формы, вызываемой в меню как Правка->Сеть...:
Здесь можно задавать все параметры нейронной сети.
При выборе передаточной функции, автоматически задается LevelZero и LevelUnity, также эти уровни можно изменить вручную. Создание и редактирование обучающих данных.
При запуске приложения автоматически создается минимальный набор обучающих данных, состоящий из одной пары одноэлементных векторов. В процессе работы этот набор можно редактировать с помощью формы, выбираемой через меню Правка->Обучающие данные...:
Список Входные данные отображает входной вектор, каждый элемент данного вектора может иметь собственное название. Выходные данные, отображаются в одноименном поле. Поля Размер по X и Размер по Y позволяют задавать ширину и высоту входных изображений входного вектора. Выходные данные всегда форматируется по 1 цифре в строчке. Поле Размер выхода позволяет выбрать текущую редактируемую пару. Также между полями Входные данные и Выходные данные, находится поле, которое отображает текущее графическое представление данного графического элемента.
Чтобы удалить какой-то элемент, надо выделить нужный элемент в списке Входные данные и нажать правую кнопку мыши, и во возникнувшем меню выбрать Удалить.
А чтобы изменить графическое представление входного элемента, нужно дважды щелкнуть на желаемом элементе в списке Входные данные. Тогда появится следующая форма:
В этой форме можно с помощью мыши задать нужное графическое представление. Если нажата левая клавиша мыши, то рисуется черная линия, если нажата правая, то изображение в том месте, где находится мышка, стирается. В поле Название можно задать подходящее название для этого элемента. Кнопки-стрелки позволяют перемещаться по элементам входных данных. Кнопка Очистить - очищает текущее графическое изображение.
Создание и редактирование тестирующих данных.
Чтобы оценить качество обучения нейронной сети, необходимо проконтролировать степень распознавания входных данных. Если тестируемые данные состоят из тех же пар, что и обучающая последовательность, то распознавание будет 100%, если же менять тестируемые данные (искажать изображения, вводить шумы), то процент распознавания измененных входных данных уже не будет 100%. Тестирующая последовательность создается и редактируется аналогичным способом.
Сохранение и загрузка обучающих и тестирующих данных
Программа позволяет сохранять и загружать созданные данные. Это реализовано в меню Данные->...
Обучение нейронной сети
Обучение созданной нейронной сети на множестве обучающих пар происходит по вызову команды Работа->Обучение. Вся информация, относящаяся к этому процессу, отображается и изменяется в поле вывода Тестирование главной формы. Опишем присутствующие там параметры:
- Поле Максим. Эпох - задает максимальное количество итерации прогона обучающей последовательности, через алгоритм обучения нейронной сети. Так как нейронная сеть в момент обучения может попасть в локальный минимум, то процесс обучения может никогда не закончиться. Следовательно, было бы разумно ограничить количество итераций обучения сверху большим числом.
- Поле Процесс - отображает состояние работы алгоритма обучения (Обучение, Стоп).
- Поле Текущая Эпоха - отображает после алгоритма обучения сети, количество проделанных итераций.
- Поле Результат - выводит результат обучения сети (Обучена, Не обучена).
- Поле Точность - задает точность , используемую в алгоритме обучения как критерий обученности сети.
- Поле Шаг - задает шаг алгоритма обучения сети.
Во время обучения нейронной сети возникает следующее окно:
В данном окне отображается информация об обучении сети. В поле Невязка отображается максимальная невязка на текущей эпохе. В поле Текущая эпоха отображается (кратно 10) номер текущей эпохи. На экране (как на осциллографе) отображается относительное представление невязки.
Процесс обучения можно прервать, нажав кнопку Остановить.
Тестирование нейронной сети.
Тестирование нейронной сети на множестве тестирующих пар происходит по вызову команды Работа->Тестирование.
Вся информация, относящаяся к этому процессу, отображается в поле вывода Тестирование главной формы:
- Поле Процесс (Работа,Стоп)
- Поле Точность- задает область однозначности Уровня Нуля(LevelZero) и Уровня Единицы(UnityLevel) на выходе нейронной сети. - Поле Правильность - количество правильных ответов в процентах(%).
- Поле (Раскрывающий список) Элементы - после тестирования нейронной сети выводит список названий "неугаданных" элементов.
Исходные файлы
- 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 Мегабайт памяти. 10
Документ
Категория
Рефераты
Просмотров
25
Размер файла
208 Кб
Теги
neuralnetwork
1/--страниц
Пожаловаться на содержимое документа