Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

Алгоритм cgp

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

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

Алгоритм 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.

Алгоритм 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.