Для обучения сети Элмана могут быть использованы как процедура адаптации, так
и процедура обучения, реализуемые с помощью функций 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 циклов. Теперь можно проверить работу сформированной сети.