Алгоритм CGB

Для всех алгоритмов метода сопряженных градиентов направление поиска периодически переустанавливается на направление антиградиента, или, иными словами, выполняется рестарт. Это происходит в тех случаях, когда возникают проблемы со сходимостью. Например, если количество итераций превысило число настраиваемых параметров сети, либо возникли иные условия, свидетельствующие о плохой сходимости. Одна из таких стратегий рестарта реализована в алгоритме CGB, предложенном Биеле (Beale) и Пауэллом (Powell) [2, 33]. Согласно этой стратегии рестарт выполняется, если текущее и предшествующее направления градиентов слабоортогональны, и это условие определяется следующим образом:

. (3.27)

Рассмотрим работу этого алгоритма на примере нейронной сети (см. рис. 3.8)

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

Функция traincgb характеризуется теми же параметрами, заданными по умолчанию, что и функция traincgf.

Изменим установку следующих параметров:

net.trainParam.epochs = 300;

net.trainParam.show = 5;

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.14

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

Рис. 3.14

a = sim(net,p)

a = –1.0015 –1.0038 1.0045 1.0004

Характеристики алгоритма CGB в данном случае превосходят показатели сходимости алгоритма CGP, хотя для другой задачи или других начальных параметров это может оказаться не так. С точки зрения требований к оперативной памяти для алгоритма CGB требуется 6 векторов, в то время как для алгоритма CGP – 4.


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



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