Методические указания к лабораторной работе №2
Описание файла
Документ из архива "Методические указания к лабораторной работе №2", который расположен в категории "". Всё это находится в предмете "нейрокомпьютерные сети" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "нейрокомпьютерные сети" в общих файлах.
Онлайн просмотр документа "Методические указания к лабораторной работе №2"
Текст из документа "Методические указания к лабораторной работе №2"
Лабораторная работа №2. Моделирование и исследование сетей обратного распространения.
Цель работы – изучение алгоритмов обучения и функционирования сетей обратного распространения и моделирование нейронной сети для решения задачи распознавания образов.
Общие сведения
Обратное распространение – это систематический метод обучения многослойных искусственных нейронных сетей.
На рис.1 показан нейрон, используемый в качестве основного строительного блока в сетях обратного распространения. На него подается множество входов, идущих либо извне, либо от предшествующего слоя. Каждый из этих входов умножается на соответствующий вес, и произведения суммируются. Сумма NET должна быть вычислена для каждого нейрона сети, затем она модифицируется с помощью активационной функции и получается сигнал OUT.
W1OUT
o
w2
1o
wn
2o n
NET
NET = o1w1 + o2w2+. . . +onwn = oiwi
OUT = F(NET)
Рис.1. Искусственный нейрон с активационной функцией.
На рис.2 показана активационная функция, обычно используемая для сетей обратного распространения.
OUT = 1/(1+ e-NET) (1)
Рис. 2
Эта функция, называемая сигмоидом, удобна, т.к. имеет простую производную, что используется при реализации алгоритма обратного распространения.
OUT/OUTOUT
Сигмоид, который иногда называется также логистической или сжимающей функцией, сужает диапазон изменения NET так, что значение OUT лежит между нулем и единицей. Многослойные нейронные сети обладают большей представляющей способностью, чем однослойные, а сжимающая функция обеспечивает требуемую нелинейность.
На рис.3 изображена многослойная сеть, которая может обучаться с помощью процедуры обратного распространения. Первый слой нейронов служит лишь в качестве распределительных точек, суммирования входов здесь не производится. Каждый нейрон последующих слоев выдает сигналы NET и OUT.
Входной
слой i
Скрытый слой j
Выходной слой k
OUT1
Желаемый
сигнал1
w11
w12
X1
OUT2
Ошибка1
Желаемый сигнал2
X2
Ошибка2
OUTn
Желаемый сигналn
w2m
Xn
w3m
Ошибкаn
Рис.3. Двухслойная сеть обратного распространения.
Обучение сети обратного распространения.
Целью обучения сети является такая подстройка ее весов, чтобы приложение некоторого множества входов приводило к требуемому множеству выходов. При обучении предполагается, что для каждого входного вектора существует парный ему целевой вектор, задающий требуемый выход. Вместе они называются обучающей парой. Например, входная часть обучающей пары может состоять из набора нулей и единиц, представляющего образ некоторой буквы алфавита. Совокупность обучающих пар называется обучающим множеством.
Перед началом обучения всем весам должны быть присвоены небольшие начальные значения, выбранные случайным образом. Это гарантирует, что в сети не произойдет насыщения большими значениями весов. Например, если всем весам придать одинаковые начальные значения, а для требуемого функционирования нужны неравные значения, то сеть не сможет обучиться.
Алгоритм обучения:
-
Выбрать очередную обучающую пару из обучающего множества; подать входной вектор на вход сети.
-
Вычислить выход сети.
-
Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары).
На шаги 1 и 2 можно смотреть как на «проход вперед», так как сигнал распространяется по сети от входа к выходу.
-
Подкорректировать веса сети так, чтобы минимизировать ошибку.
-
Повторять шаги с 1 по 4 для каждого вектора обучающего множества до тех пор, пока ошибка на всем множестве не достигнет приемлемого уровня.
Шаги 3, 4 составляют «обратный проход», вычисляемый сигнал ошибки распространяется обратно по сети и используется для подстройки весов.
Проход вперед.
Шаги 1 и 2 могут быть выражены в векторной форме следующим образом: подается входной вектор Х и на выходе получается вектор Y. Векторная пара вход-цель, Х и Т, берется из обучающего множества. Вычисления проводятся над вектором Х, чтобы получить выходной вектор Y.
Вычисления в многослойных сетях выполняются слой за слоем, начиная с ближнего ко входу слоя. Величина NET каждого нейрона первого слоя вычисляется как взвешенная сумма входов нейрона. Затем активационная функция F “сжимает” NET и дает OUT для каждого нейрона в этом слое. Когда множество выходов слоя получено, оно является входным множеством для следующего слоя. Процесс повторяется слой за слоем, пока не будет получено заключительное множество выходов сети.
Этот процесс может быть выражен в векторной форме. Рассмотрим веса между нейронами как матрицу W. Например, вес от нейрона 8 в слое 2 к нейрону 5 в слое 3 обозначается как w8,5. Тогда NET- вектор слоя N может быть выражен как произведение X и W. В векторном обозначении: N=X*W. Покомпонентным применением функции F к NET- вектору получается выходной вектор О.
Таким образом, для данного слоя вычислительный процесс описывается следующим выражением:
O=F(X*W) (3)
Выходной вектор одного слоя является входным вектором для следующего, поэтому это выражение применяется несколько раз вплоть до вычисления выходного сигнала.
Обратный проход.
Так как для каждого нейрона выходного слоя задано целевое значение, то подстройка весов легко осуществляется с использованием модифицированного дельта-правила (-разность между целевым и реальным выходом). Внутренние слои назовем “скрытыми слоями”. Для их выходов не имеется целевых значений для сравнения. Поэтому обучение усложняется.
На рис. 4 показан процесс обучения для одного веса от нейрона р в скрытом слое j к нейрону q в выходном слое k.
Рис.4. Настройка веса в выходном слое.
Выход нейрона слоя k, вычитаемый из целевого значения (Target), дает сигнал ошибки. Он умножается на производную сжимающей функции [OUT*(1-OUT)], вычисленную для этого нейрона слоя k, давая, таким образом, величину q,k
q,kOUT*(1-OUT)*(Target-OUT). (4)
Затем q,kумножается на величину OUT нейрона j, из которого выходит рассматриваемый вес. Это произведение, в свою очередь, умножается на коэффициент скорости обучения (обычно от 0.01 до 1), и результат прибавляется к весу. Такая же процедура выполняется для каждого веса от нейрона скрытого слоя к нейрону в выходном слое.
Следующие уравнения иллюстрируют это вычисление:
wpq,k=q,kOUTp,j, (5)
wpq,k(n+1)= wpq,k(n)+wpq,k , (6)
где
wpq,k(n) - величина веса от нейрона р в скрытом слое к нейрону q в выходном слое на шаге n (до коррекции). Отметим, что индекс k относится к слою, в котором заканчивается данный вес, то есть с которым он объединен;
wpq,k(n+1) - величина веса на шаге n+1(после коррекции);
q,k - величина длянейронаq в выходном слое k;
OUTp,j - величина OUT для нейрона p в скрытом слое j.
Подстройка весов скрытого слоя.
Рассмотрим один нейрон в скрытом слое, предшествующем выходному слою. При проходе вперед этот нейрон передает входной сигнал нейронам в выходном слое через соединяющие их веса. Во время обучения эти веса функционируют в обратном порядке, пропуская величину от выходного слоя назад к скрытому слою. Каждый из этих весов умножается на величину нейрона, к которому он присоединен в выходном слое. Величина , необходимая для нейрона скрытого слоя, получается суммированием всех таких произведений и умножением на производную сжимающей функции (см. рис. 5):
p,j=OUTp,j(1- OUTp,j)[ qq,kwpq,k] (7)
Когда значение получено, веса, питающие первый скрытый уровень, могут быть подкорректированы с помощью уравнений подстройки весов выходного слоя, где индексы модифицированы в соответствии со слоем.
Рис. 5. Настройка веса в скрытом слое.
Для каждого нейрона в данном скрытом слое должно быть вычислено и подстроены все веса, ассоциированные с этим слоем. Этот процесс повторяется слой за слоем по направлению к входу, пока все веса не будут подкорректированы.
Добавление нейронного смещения.
Во многих случаях желательно наделять каждый нейрон обучаемым смещением. Это позволяет сдвигать начало отсчета логической функции, давая эффект, аналогичный подстройке порога персептронного нейрона, и приводит к ускорению процесса обучения. Эта возможность может быть легко введена в обучающий алгоритм с помощью добавляемого к каждому нейрону веса, присоединенного к +1. Этот вес обучается так же, как и все остальные веса, за исключением того, что подаваемый на него сигнал равен +1, а не выходу нейрона предыдущего слоя.
Трудности обучения
Паралич сети
В процессе обучения сети значения весов могут в результате коррекции стать очень большими величинами. Это может привести к тому, что все или большинство нейронов будут функционировать при очень больших значениях OUT, в области, где производная сжимающей функции очень мала. Так как посылаемая обратно в процессе обучения ошибка пропорциональна этой производной, то процесс обучения может практически замереть. Обычно этого избегают уменьшением размера шага , что это увеличивает время обучения.
Локальные минимумы
Обратное распространение использует разновидность градиентного спуска, т.е. осуществляет спуск вниз по поверхности ошибки, непрерывно подстраивая веса в направлении к минимуму. Поверхность ошибки сложной сети сильно изрезана и состоит из холмов, долин, складок и оврагов в пространстве высокой размерности. Сеть может попасть в локальный минимум (неглубокую долину), когда рядом имеется гораздо более глубокий минимум. В точке локального минимума все направления ведут вверх, и сеть не способна из него выбраться.
Размер шага