Алгоритм CGP

Другой вариант алгоритма сопряженного градиента – это алгоритм CGP Полака – Рибейры (Polak – Ribiére) [12, 18]. Для этого алгоритма константа метода bk выражается следующим образом:

. (3.26)

Таким образом, коэффициент равен скалярному произведению приращения градиента на текущий градиент, деленному на квадрат нормы градиента на предыдущей итерации.

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

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

Функция traincgp характеризуется теми же параметрами, заданными по умолчанию, что и функция 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.13

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

Рис. 3.13

a = sim(net,p)

a = –1.0014 –1.0015 0.9977 0.9983

Характеристика сходимости алгоритма CGP во многом похожа на характеристику алгоритма CGF. На практике трудно предсказать, какой алгоритм лучше применить для решения конкретной задачи. Однако требования по памяти для алгоритма CGP несколько больше, поскольку требуется на каждой итерации 4 вектора, в то время как для алгоритма CGF – только 3.


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



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