Нейронные сети и нейроконтроллеры. Бураков М.В. - 152 стр.

UptoLike

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

152
также, чтобы выходной слой имел достаточно большое число ней-
ронов. Все эти слои Элмана имеют смещения.
При обучении сети Элмана веса выходного слоя подвергаются
точно такой же коррекции, как и веса персептрона. Формулы уточ-
нения весов скрытого слоя сети Элмана более сложны из-за нали-
чия обратных связей между скрытым и контекстным слоями [54].
В MatLab cети Элмана создаются функцией
net = newelm(PR, [S1, S2, …, SN], {TF1,TF2, …, TFN}, BTF, BLF, PF),
где PR массив размером R×2 минимальных и максимальных зна-
чений для R векторов входа; S
1
, S
2
, , S
N
число нейронов в сло-
ях; TF
1
, TF
2
, , TF
N
– функции активации в слоях (по умолчанию
tansig); BTF – обучающая функция, реализующая метод обратного
распространения (по умолчанию traingdx); BLF функция настрой-
ки, реализующая метод обратного распространения (по умолчанию
learngdm); PF – критерий качества обучения (по умолчанию mse).
Сети Элмана ориентированы на моделирование временных рядов.
Пример 6.1. Пусть нейронная сеть должна в ответ выдавать по-
следовательность битов, в которой появляется единичный бит, если
в исходной последовательности встретилось две единицы подряд.
Зададим случайную последовательность из 20 битов командой
>> P = round (rand (1, 20))
P =
0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0
Тогда целевой вектор можно описать командой
>> T = [0 (P(1:end–1)+P(2:end) = = 2)]
T =
0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
Для обучения создадим массивы ячеек:
>> Pseq = con2seq(P);
>> Tseq = con2seq(T);
Сеть Элмана создается командой
>> net = newelm ([0 1], [10, 1], {'tansig', 'logsig'});
Задание параметров и запуск обучения:
>> net.trainParam.goal = 0.001;
>> net.trainParam.epochs = 1000;
>> net = train(net, Pseq, Tseq);
Проверка:
>> Y = sim(net, Pseq)