traincgp

Сопряженная градиентная обратная реализация с обновлениями Polak-Ribiére

Синтаксис

net.trainFcn = 'traincgp'
[net,tr] = train(net,...)

Описание

traincgp - функция сетевого обучения, которая обновляет значения веса и смещения в соответствии с сопряженной градиентной обратным распространением с обновлениями Polak-Ribiére.

net.trainFcn = 'traincgp' устанавливает сетевую trainFcn свойство.

[net,tr] = train(net,...) обучает сеть с traincgp.

Обучение происходит согласно traincgp параметры обучения, показанные здесь с их значениями по умолчанию:

net.trainParam.epochs1000

Максимальное количество эпох для обучения

net.trainParam.show25

Эпохи между отображениями (NaN при отсутствии отображений)

net.trainParam.showCommandLinefalse

Сгенерируйте выход в командной строке

net.trainParam.showWindowtrue

Показать обучающий графический интерфейс пользователя

net.trainParam.goal0

Цель эффективности

net.trainParam.timeinf

Максимальное время обучения в секундах

net.trainParam.min_grad1e-10

Минимальный градиент эффективности

net.trainParam.max_fail6

Максимальные отказы валидации

net.trainParam.searchFcn'srchcha'

Имя стандартной программы поиска по линиям

Параметры, относящиеся к методам поиска по линии (не все используются для всех методов):

net.trainParam.scal_tol20

Разделите на delta для определения допуска для линейного поиска.

net.trainParam.alpha0.001

Масштабный коэффициент, который определяет достаточное сокращение perf

net.trainParam.beta0.1

Масштабный коэффициент, который определяет достаточно большой размер шага

net.trainParam.delta0.01

Начальный размер шага в шаге местоположения интервала

net.trainParam.gama0.1

Параметр, чтобы избежать небольших сокращений эффективности, обычно устанавливается на 0.1 (см. srch_cha)

net.trainParam.low_lim0.1

Нижний предел изменения размера шага

net.trainParam.up_lim 0.5

Верхний предел изменения размера шага

net.trainParam.maxstep100

Максимальная длина шага

net.trainParam.minstep1.0e-6

Минимальная длина шага

net.trainParam.bmax26

Максимальный размер шага

Использование сети

Можно создать стандартную сеть, которая использует traincgp с feedforwardnet или cascadeforwardnet. Чтобы подготовить пользовательскую сеть для обучения с traincgp,

  1. Задайте net.trainFcn на 'traincgp'. Это устанавливает net.trainParam на traincgpпараметры по умолчанию.

  2. Задайте net.trainParam свойства к желаемым значениям.

В любом случае вызов train с полученной сетью обучает сеть с traincgp.

Примеры

свернуть все

В этом примере показано, как обучить нейронную сеть с помощью traincgp обучите функцию.

Здесь нейронная сеть обучена прогнозировать проценты жира в организме.

[x, t] = bodyfat_dataset;
net = feedforwardnet(10, 'traincgp');
net = train(net, x, t);
y = net(x);

Подробнее о

свернуть все

Сопряженная градиентная обратная реализация с обновлениями Polak-Ribiére

Другой вариант сопряженного алгоритма градиента был предложен Полаком и Рибьером. Как и в случае с алгоритмом Флетчера-Ривза, traincgf, направление поиска в каждой итерации определяется

pk=gk+βkpk1

Для обновления Полака-Рибьера константа β k вычисляется

βk=Δgk1Tgkgk1Tgk1

Это скалярное произведение предыдущего изменения градиента с текущим градиентом, разделенным на норму в квадрате предыдущего градиента. Смотрите [FlRe64] или [HDB96] для обсуждения сопряженного алгоритма градиента Полака-Рибьера.

The traincgp стандартная программа имеет эффективность, подобную traincgf. Трудно предсказать, какой алгоритм будет работать лучше всего по заданной задаче. Требования к хранению для Polak-Ribiére (четыре вектора) немного больше, чем для Fletcher-Reeves (три вектора).

Алгоритмы

traincgp может обучать любую сеть, пока ее вес, чистый вход и передаточные функции имеют производные функции.

Backpropagation используется для вычисления производных от perf эффективности относительно переменных веса и смещения X. Каждая переменная регулируется согласно следующему:

X = X + a*dX;

где dX - направление поиска. Значение параметра a выбран для минимизации эффективности в поисковом направлении. Функция поиска по линии searchFcn используется для определения местоположения минимальной точки. Первое направление поиска является отрицательным для градиента эффективности. В последующих итерациях направление поиска вычисляется из нового градиента и предыдущего направления поиска согласно формуле

dX = -gX + dX_old*Z;

где gX - градиент. Значение параметра Z может быть вычислен несколькими различными способами. Для изменения сопряженного градиента Полака-Рибьера он вычисляется согласно

Z = ((gX - gX_old)'*gX)/norm_sqr;

где norm_sqr - норма квадрат предыдущего градиента, и gX_old - градиент предыдущей итерации. Более подробное обсуждение алгоритма смотрите на странице 78 Scales (Введение в нелинейную оптимизацию, 1985).

Обучение останавливается, когда происходит любое из следующих условий:

  • Максимальное количество epochs (повторения) достигается.

  • Максимальное количество time превышено.

  • Эффективность минимизирована до goal.

  • Градиент эффективности падает ниже min_grad.

  • Эффективность валидации увеличилась более чем max_fail раз с момента последнего уменьшения (при использовании валидации).

Ссылки

Шкалы, L.E., Введение в нелинейную оптимизацию, Нью-Йорк, Springer-Verlag, 1985

Представлено до R2006a