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.