Методические указания к лабораторной работе №3
Описание файла
Документ из архива "Методические указания к лабораторной работе №3", который расположен в категории "". Всё это находится в предмете "нейрокомпьютерные сети" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "нейрокомпьютерные сети" в общих файлах.
Онлайн просмотр документа "Методические указания к лабораторной работе №3"
Текст из документа "Методические указания к лабораторной работе №3"
Лабораторная работа №3. Моделирование и исследование сетей встречного распространения.
Цель работы – изучение алгоритмов обучения и функционирования сетей встречного распространения и моделирование нейронной сети для решения задачи распознавания образов.
Общие сведения
В модели сети встречного распространения объединены два известных алгоритма: самоорганизующаяся карта Кохонена и звезда Гроссберга, что приводит к свойствам, которых нет ни у одного из них в отдельности. На рис. 1 показана упрощенная версия сети встречного распространения.
В
Входной
слой (0)
Cлой
Кохонена (1)
Слой
Гроссберга (2)
ектор w1 Вектор v2
К1
G1
Y1
v11
v12
x1
w11
К2
G2
Y2
Y
Желаемые выходные сигналы
x2
.
.
.
Кn
Gp
Yp
.
.
.
xm
.
.
.
vnp
wmn
Нейроны Кохонена
Нейроны Гроссберга ГгрГроссберга
Рис. 1. Сеть встречного распространения.
Нейроны слоя 0 (показанные кружками) служат лишь точками разветвления и не выполняют вычислений. Каждый нейрон слоя 0 соединен с каждым нейроном слоя 1 (называемым слоем Кохонена) отдельным весом wmn. Эти веса в целом рассматриваются как матрица весов W. Аналогично, каждый нейрон в слое Кохонена (слое 1) соединен с каждым нейроном в слое Гроссберга (слое2) весом vnp. Эти веса образуют матрицу весов V.
Режим нормального функционирования.
Слой Кохонена.
В своей простейшей форме слой Кохонена функционирует следующим образом: для данного входного вектора один и только один нейрон Кохонена выдает на выходе логическую единицу, все остальные выдают нуль.
Ассоциированное с каждым нейроном Кохонена множество весов соединяет его с каждым входом. Например, на рисунке 1 нейрон Кохонена K1 имеет веса w11,w21...wm1 , составляющие весовой вектор W1. Они соединяются через входной слой с входными сигналами х1, х2 ...xm, составляющими входной вектор Х. Подобно нейронам большинства сетей, выход NET каждого нейрона Кохонена является просто суммой взвешенных входов. Это может быть выражено следующим образом:
NET=X*W
Нейрон Кохонена с максимальным значением NET является “победителем”. Его выход равен единице, а у остальных он равен нулю.
Слой Гроссберга.
Слой Гроссберга функционирует в сходной манере. Его выход NET является суммой взвешенных входов k1,k2...kn слоя Кохонена, образующих вектор K. Вектор соединяющих весов, обозначенный через V, состоит из весов v11,v21...vnp. Тогда выход NET каждого нейрона Гроссберга есть
Y=K*V,
где Y- выходной вектор слоя Гроссберга, K- выходной вектор слоя Кохонена, V- матрица весов слоя Гроссберга. Слой Кохонена функционирует таким образом, что лишь у одного нейрона величина NET равна единице, а у остальных - нулю. Поэтому лишь один элемент вектора К отличен от нуля и вычисления очень просты. Фактически каждый нейрон слоя Гроссберга лишь выдает величину веса, который связывает этот нейрон с единственным ненулевым нейроном Кохонена.
Режим обучения.
Обучение слоя Кохонена.
Слой Кохонена классифицирует входные векторы в группы схожих. Это достигается с помощью такой подстройки весов Кохонена, что близкие входные векторы активируют один и тот же нейрон данного слоя. Затем задачей слоя Гроссберга является получение требуемых выходов.
Обучение Кохонена является самообучением, протекающим без учителя. Поэтому трудно (и не нужно) предсказывать, какой именно нейрон Кохонена будет активизироваться для данного входного вектора. Необходимо лишь гарантировать, чтобы в результате обучения разделялись несхожие входные векторы.
Весьма желательно (хотя и не обязательно) нормализовать входные векторы перед тем, как предъявлять их сети. Это выполняется с помощью деления каждой компоненты входного вектора на длину вектора. В алгебраической записи
хi’=xi/√ (x12+x22+...+xn2)
Это превращает входной вектор в единичный вектор того же направления в n- мерном пространстве.
При обучении слоя Кохонена на вход подается входной вектор, и вычисляются его скалярные произведения с векторами весов, связанными со всеми нейронами Кохонена. Вес нейрона с максимальным скалярным произведением выставляется в единицу. Так как скалярное произведение, используемое для вычисления величин NET, является мерой сходства между входным вектором и вектором весов, то процесс обучения состоит в выборе нейрона Кохонена с весовым вектором, наиболее близким к входному вектору, и дальнейшем приближении весового вектора к входному. Сеть самоорганизуется таким образом, что данный нейрон Кохонена имеет максимальный выход для данного входного вектора. Уравнение, описывающее процесс обучения имеет следующий вид:
wн=wc+х-wс
где wн- новое значение веса, соединяющего входную компоненту х с выигравшим нейроном; wc- предыдущее значение этого веса; - коэффициент скорости обучения, который может варьироваться в процессе обучения. Каждый вес, связанный с выигравшим нейроном Кохонена, изменяется пропорционально разности между его величиной и величиной входа, к которому он присоединен. Направление изменения минимизирует разность между весом и его входом. На рис. 2 этот процесс показан геометрически.
Рис.2 Вращение весового вектора в процессе обучения
Переменная является коэффициентом скорости обучения, который в начале равен 0.7, и может постепенно уменьшаться в процессе обучения. Это позволяет делать большие начальные шаги для быстрого грубого обучения и меньшие шаги при подходе к окончательной величине.
Всем весам сети перед началом обучения следует придать начальные значения. Общепринятой практикой является присваивание весам небольших случайных значений.
Обучение слоя Гроссберга.
Слой Гроссберга обучается сравнительно просто. Входной вектор, являющийся выходом слоя Кохонена, подается на слой нейронов Гроссберга, и выходы слоя Гроссберга вычисляются, как при нормальном функционировании. Далее, каждый вес корректируется лишь в том случае, если он соединен с нейроном Кохонена, имеющим ненулевой выход. Величина коррекции веса пропорциональна разности между весом и требуемым выходом нейрона Гроссберга, с которым он соединен. В символьной записи это выглядит так:
vijн=vijc+(yj- vijc)ki,
где ki- выход i-го нейрона слоя Кохонена (только для одного нейрона Кохонена он отличен от нуля); yj - j-я компонента вектора желаемых векторов.
Первоначально берется 0.1, и затем постепенно уменьшается в процессе обучения.
Отсюда видно, что веса слоя Гроссберга будут сходиться к средним величинам от желаемых выходов, тогда как веса Кохонена обучаются на средних значениях входов. Обучение слоя Гроссберга- это обучение с учителем, алгоритм располагает желаемым выходом, по которому он обучается. Обучающийся без учителя самоорганизующийся слой Кохонена дает выходы в недетерминированных позициях. Они отображаются в желаемые выходы слоем Гроссберга.
Пример
1. Постановка задачи моделирования и составление входного файла.
Постановка задачи: Создать нейронную сеть, реализующую функции распознавания графических изображений - с применением модели сети встречного распространения.
Изображения представим в виде двоичных векторов, закодированных следующим образом:
Табл. 1 Первый входной образ «+».
0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 |
Табл. 2 Второй входной образ «-».
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
Табл. 3 Третий входной образ «».
1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
Табл. 4 Четвертый входной образ «/».
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 |
На основании этих таблиц получаем входные последовательности - четыре двоичных вектора:
-
0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0;
-
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0;
-
1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1;
-
0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0;
Выходные последовательности будут иметь такой же вид как и входные.