Алгоритм SCG

Все рассмотренные выше алгоритмы, основанные на методе сопряженных градиентов, реализуют на каждой итерации процедуру одномерного поиска. Эта дорогостоящая
в вычислительном отношении процедура требует на каждой итерации несколько раз вычислять реакцию сети. Алгоритм SCG, предложенный Моллером (Moller) [29], позволяет избежать излишних затрат. Этот алгоритм объединяет идеи метода сопря­жен­ных гради­ентов с квазиньютоновыми методами, и в частности использует подход, реализо­ванный в алгоритме LM Левенберга – Марквардта.

Вновь обратимся к сети, показанной на рис. 3.7, но будем использовать функцию
обучения trainrp:

net = newff([–1 2; 0 5],[3,1],{'tansig','purelin'},'trainscg');

Функция trainrp характеризуется следующими параметрами, заданными по умолчанию:

net.trainParam

ans =

epochs: 100

show: 25

goal: 0

time: Inf

min_grad: 1.0000e–006

max_fail: 5

sigma: 5.0000e–005

lambda: 5.0000e–007

Первые 6 параметров рассматривались ранее. Поясним назначение последних двух параметров; параметр sigma управляет весом аппроксимированной матрицы Гессе, параметр lambda позволяет учесть степень неточности аппроксимации.

Изменим установки некоторых параметров:

net.trainParam.epochs = 300;

net.trainParam.show = 10;

net.trainParam.goal = 1e–5;

p = [–1 –1 2 2;0 5 0 5];

t = [–1 –1 1 1];

net = train(net,p,t); % Рис.3.15

На рис. 3.15 приведен график изменения ошибки обучения в зависимости от числа выполненных циклов обучения.

Рис. 3.15

a = sim(net,p)

a = –1.0007 –1.0012 0.9986 1.0018

Алгоритм SCG может потребовать большего числа итераций, чем другие алгоритмы метода сопряженных градиентов, но при этом количество вычислений на каждой итерации существенно сокращено. Требования по памяти для алгоритма SCG примерно такие же, как и для метода CGF.


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



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