Главная страница
Навигация по странице:

Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6. В. Г. Потемкин



Скачать 14.83 Mb.
Название В. Г. Потемкин
Анкор Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Дата 26.04.2017
Размер 14.83 Mb.
Формат файла doc
Имя файла Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Тип Книга
#3790
страница 25 из 50
1   ...   21   22   23   24   25   26   27   28   ...   50

8. Рекуррентные сети


В этой главе рассматриваются 2 типа рекуррентных нейронных сетей, представляющих наибольший интерес для пользователей, – это класс сетей Элмана (Elman) и класс сетей Хопфилда (Hopfield). Характерной особенностью архитектуры рекуррентной сети является наличие блоков динамической задержки и обратных связей. Это позволяет таким сетям обрабатывать динамические модели. Обратимся к описанию конкретных типов
рекуррентных нейронных сетей.

8.1. Сети Элмана


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

По команде help elman можно получить следующую информацию об М-функциях, входящих в состав ППП Neural Network Toolbox и относящихся к построению сетей Элмана:


Elman recurrent networks

Рекуррентные сети Элмана

New networks

Формирование сети

newelm

Создание сети Элмана

Using networks

Работа с сетью

sim

init

adapt

train

Моделирование

Инициализация

Адаптация

Обучение

Weight functions

Функции взвешивания

dotprod

ddotprod

Скалярное произведение

Производная скалярного произведения

Net input functions

Функции накопления

netsum

dnetsum

Сумма взвешенных входов

Производная суммы взвешенных входов

Transfer functions

Функции активации

purelin

tansig

logsig

dpurelin

dtansig

dlogsig

Линейная

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

Логистическая

Производная линейной функции

Производная гиперболического тангенса

Производная логистической функции

Performance functions

Функции оценки качества сети

msemsereg
dmse

dmsereg

Среднеквадратичная ошибка обученияСреднеквадратичная ошибка обучения
при применении регуляризации

Производная среднеквадратичной ошибки обучения

Производная среднеквадратичной ошибки обучения при применении регуляризации

Initialization functions

Функции инициализации сети

initlay

initnw

Послойная инициализация

Функция NW (Nguyen – Widrow)

Learning functions

Функции настройки параметров

learngd

learngdm

Функция настройки методом градиентного спуска

Функция настройки методом градиентного спуска
с возмущением

Adapt functions

Функции адаптации

adapt

Адаптация весов и смещений

Training functions

Функции обучения

traingd
traingdm

traingda


Градиентный спуск по правилу обратного
распространения ошибки

Градиентный спуск с возмущением

Градиентный спуск с адаптацией параметра
скорости настройки

Demonstrations

Демонстрационные примеры

appelm1

Пример рекуррентной сети Элмана

Архитектура


Сеть Элмана – это, как правило, двухслойная сеть с обратной связью от выхода
ко входу первого слоя (рис. 8.1).



Рис. 8.1

В качестве функций активации в сети Элмана часто используются: в скрытом, рекуррентном слое – функция гиперболического тангенса tansig, в линейном слое – функция purelin. Такое сочетание функций активации позволяет максимально точно аппроксимировать функции с конечным числом точек разрыва. Единственное требование, предъявляемое к сети, состоит в том, чтобы скрытый слой имел достаточно большое число нейронов, что необходимо для успешной аппроксимации сложных функций.

В соответствии со структурной схемой сети Элмана сформируем динамическое описание ее рекуррентного слоя в виде уравнений состояния

(8.1)

Эта рекуррентная матричная форма уравнений состояния лишний раз подчеркивает название изучаемых нейронных сетей.

Второй, линейный слой является безынерционным и описывается соотношениями

(8.2)

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

Далее рассматриваются выборки из набора двух синусоид с амплитудами 1.0 и 2.0:

p1 = sin(1:20);

p2 = sin(1:20)*2;

Целевыми выходами такой сети являются векторы

t1 = ones(1,20);

t2 = ones(1,20)*2;

Сформируем набор векторов входа и целевых выходов:

p = [p1 p2 p1 p2];

t = [t1 t2 t1 t2];

Сформируем обучающую последовательность в виде массивов ячеек:

Pseq = con2seq(p);

Tseq = con2seq(t);

Создание сети


В ППП NNT для создания сети Элмана предусмотрена М-функция newelm. Решаемая задача требует, чтобы сеть Элмана на каждом шаге наблюдения значений выборки могла выявить единственный ее параметр – амплитуду синусоиды. Это означает, что сеть должна иметь 1 вход и 1 выход:

R = 1; % Число элементов входа

S2 = 1;% Число нейронов выходного слоя

Рекуррентный слой может иметь любое число нейронов, и чем сложнее задача, тем большее количество нейронов требуется. Остановимся на 10 нейронах рекуррентного слоя:

S1 = 10; % Число нейронов рекуррентного слоя

Элементы входа для данной задачи изменяются в диапазоне от –2 до 2. Для обучения используется метод градиентного спуска с возмущением и адаптацией параметра скорости настройки, реализованный в виде М-функции traingdx:

net = newelm([–2 2],[S1 S2],{'tansig','purelin'},'traingdx');

Сеть использует следующие функции адаптации, инициализации, обучения и оценки качества:

adaptFcn: 'adaptwb'

initFcn: 'initlay'

performFcn: 'mse'

trainFcn: 'traingdx'

Слои сети Элмана имеют следующие характеристики:

net.layers{1}

ans =

dimensions: 10

distanceFcn: 'dist'

distances: [1010 double]

initFcn: 'initnw'

netInputFcn: 'netsum'

positions: [0 1 2 3 4 5 6 7 8 9]

size: 10

topologyFcn: 'hextop'

transferFcn: 'tansig'

userdata: [11 struct]

net.layers{2}

ans =

dimensions: 1

distanceFcn: 'dist'

distances: 0

initFcn: 'initnw'

netInputFcn: 'netsum'

positions: 0

size: 1

topologyFcn: 'hextop'

transferFcn: 'purelin'

userdata: [11 struct]

Скрытый слой использует функцию активации tansig, которая для сети Элмана принимается по умолчанию; инициализация весов и смещений реализуется методом NW (Nguen – Widrow) с помощью М-функции initnw. Второй слой использует линейную функцию активации purelin.

По умолчанию для настройки весов и смещений используется функция learngdm,
а для оценки качества обучения – функция mse.

Обучение сети


Для обучения сети Элмана могут быть использованы как процедура адаптации, так
и процедура обучения, реализуемые с помощью функций adapt и train соответственно.

В процессе процедуры адаптации на каждом шаге выполняются следующие действия:

  • моделирование сети при подаче полного набора векторов входа и вычисление ошибки сети;

  • вычисление приближенного градиента функционала ошибки относительно весов
    и смещений методом обратного распространения ошибки;

  • настройка весов с использованием функции настройки, выбираемой пользователем; рекомендуется функция learngdm.

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

  • моделирование сети при подаче последовательности входных сигналов, сравнение
    с целевыми выходами и вычисление ошибки;

  • вычисление приближенного градиента функционала ошибки относительно весов
    и смещений методом обратного распространения ошибки;

  • настройка весов с использованием функции настройки, выбираемой пользователем; рекомендуется функция traingdx.

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

В дальнейшем для обучения сети Элмана используется М-функция train. Ее входными аргументами являются обучающие последовательности Pseq и Tseq, в качестве метода обучения используется метод обратного распространения ошибки с возмущением и адаптацией параметра скорости настройки. Количество циклов обучения принимается равным 1000, периодичность вывода результатов – 20 циклов, конечная погрешность обучения – 0.01:

net.trainParam.epochs = 1000;

net.trainParam.show = 25;

net.trainParam.goal = 0.01;

[net,tr] = train(net,Pseq,Tseq);

После 500 циклов обучения получим следующий график ошибки (рис. 8.2).

Рис. 8.2

Требуемая точность обучения обеспечивается за 728 циклов. Теперь можно проверить работу сформированной сети.

Проверка сети


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

figure(2)

a = sim(net,Pseq);

time = 1:length(p);

plot(time, t, '––', time, cat(2,a{:}))

axis([1 80 0.8 2.2]) % Рис.8.3

На рис. 8.3 приведены графики входного и выходного сигналов.

Рис. 8.3

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

Подадим на сеть набор сигналов, составленный из двух синусоид с амплитудами 1.6
и 1.2 соответственно:

p3 = sin(1:20)*1.6;

t3 = ones(1,20)*1.6;

p4 = sin(1:20)*1.2;

t4 = ones(1,20)*1.2;

pg = [p3 p4 p3 p4];

tg = [t3 t4 t3 t4];

pgseq = con2seq(pg);

figure(3)

a = sim(net,pgseq);

ime = 1:length(pg);

plot(time, tg, '––', time, cat(2,a{:}))

axis([1 80 0.8 2.2])

Результат представлен на рис. 8.4.

Рис. 8.4

На этот раз сеть хуже справляется с задачей. Сеть стремится детектировать значение амплитуды, но делает это не очень точно. Улучшенное обобщение могло быть получено, обучая сеть на большее количество амплитуд, чем только на значения 1.0 и 2.0. Использование трех или четырех гармонических сигналов с различными амплитудами может привести к намного лучшему датчику амплитуд.

Читатель может продолжить изучение сетей Элмана, используя программу appelm1. Сделав копию этой программы, можно продолжить эксперименты, увеличивая количество нейронов в рекуррентном слое или длительность, а также количество входных наборов.
1   ...   21   22   23   24   25   26   27   28   ...   50
написать администратору сайта