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

neWELM Нейронная сеть ELM

Сеть Элмана

Синтаксис:

net = newelm(PR, [S1 S2... SNl], {TF1 TF2... TFNl}, btf, blf, pf)

Описание:

Функция newelm предназначена для создания динамических сетей Элмана, которые применяются для построения моделей динамических систем.

Функция net = newelm(PR, [S1 S2... SNl], {TF1 TF2... TFNl}, btf, blf, pf) формирует сеть Элмана и имеет следующие входные и выходные аргументы.

Входные аргументы:

PR – массив размера R´2 минимальных и максимальных значений для R векторов входа;

S i – количество нейронов в слое i;

TF i – функция активации слоя i, по умолчанию tansig;

btf – обучающая функция, реализующая метод обратного распространения, по умолчанию traingdx;

blf – функция настройки, реализующая метод обратного распространения, по умолчанию learngdm;

pf – критерий качества обучения, по умолчанию mse.

Выходные аргументы:

net – объект класса network object динамической сети Элмана.

Свойства сети:

Обучающими функциями могут быть любые функции, реализующие метод обратного распространения: trainlm, trainbfg, trainrp, traingd и др.

Функциями настройки могут быть функции, реализующие метод обратного распространения: learngd, learngdm.

Критерием качества обучения может быть любая дифференцируемая функция: mse, msereg.

При реализации сети Элмана не рекомендуется применять такие алгоритмы обучения, как trainlm или trainrp, которые работают с большим размером шага.

Пример:

Зададим вход P в виде случайной булевой последовательности из нулей и единиц; выходом сети должна быть такая булева последовательность T, элементы которой принимают значение 1 только в том случае, когда в последовательности P встретились 2 единицы подряд:

P = round(rand(1,20))

T = [0 (P(1:end–1)+P(2:end)==2)]

P = 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1

T = 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0

Требуется построить сеть, которая распознает во входном сигнале 2 единицы, следующие подряд. Сначала эти последовательности представим в виде массивов ячеек:

Pseq = con2seq(P); Tseq = con2seq(T);

Создадим сеть Элмана с диапазоном входного сигнала от 0 до 1 с 10 скрытыми и одним выходным нейронами (рис. 11.33):

net = newelm([0 1],[10 1],{'tansig','logsig'});

gensim(net) % Рис.11.33

Рис. 11.33

Затем обучим сеть с допустимой средней квадратичной ошибкой 0.001 и смоделируем ее:

net.trainParam.goal = 0.001;

net.trainParam.epochs = 1000;

net = train(net,Pseq,Tseq);

Y = sim(net,Pseq)

Y1 = seq2con(Y);

E = round(T–Y1{1})

E = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Результат свидетельствует о том, что сеть справилась с поставленной задачей.

Алгоритм:

Сеть Элмана состоит из Nl слоев, использующих функции взвешивания dotprod, накопления netsum и заданные пользователем функции активации. Все слои имеют смещения. Выход последнего слоя является выходом сети. Веса и смещения инициализируются
с помощью функции initnw. Адаптация реализуется с помощью функции adaptwb, которая настраивает веса с помощью заданной функции настройки.

Сопутствующие функции: NEWFF, NEWCF, SIM, INIT, ADAPT, TRAIN.

neWHOP Сеть Хопфилда HOP

Синтаксис:

net = newhop(T)

Описание:

Сети Хопфилда применяются для решения задач распознавания образов.

Функция net = newhop(T) имеет 1 входной аргумент – массив T размера R´Q, объединяющий Q целевых векторов (со значениями +1 или –1), R – число элементов вектора входа.

Функция возвращает рекуррентную сеть Хопфилда в виде объекта класса network object.

Свойства:

Сеть Хопфилда имеет 1 нейронный слой с функциями взвешивания dotprod, накопления netsum и активации satlins. Слой охвачен динамической обратной связью и имеет смещения.

Пример:

Создадим сеть Хопфилда с двумя устойчивыми точками в трехмерном пространстве:

T = [–1 –1 1; 1 –1 1]';

net = newhop(T);

gensim(net) % Рис.11.34

Рис. 11.34

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

Ai = T;

[Y,Pf,Af] = sim(net,2,[],Ai);

Y =

–1 1

–1 –1

1 1

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

Проверим сходимость сети при произвольном входном векторе Ai:

Ai = {[–0.9; –0.8; 0.7]};

[Y,Pf,Af] = sim(net,{1 5},{},Ai);

Y{1}

ans =

–1

–1

Сеть Хопфилда обеспечила переход к устойчивому положению равновесия, ближайшему к заданному входу.

Алгоритм:

Сети Хопфилда разработаны для того, чтобы приводить случайные входные векторы к точкам равновесия, которые соответствуют определенным, заданным пользователем, целям. Алгоритм минимизирует число устойчивых паразитных точек равновесия [25].

Сопутствующие функции: sim, satlins.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: