exponenta event banner

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 + βkpk − 1

Для обновления Polak-Ribiére константа βk вычисляется с помощью

βk = Δgk 1Tgkgk 1Tgk − 1

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

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

Алгоритмы

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

Обратное распространение используется для расчета производных производительности 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 документа «Шкалы» (Введение в нелинейную оптимизацию, 1985).

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

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

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

  • Производительность минимизирована для goal.

  • Градиент производительности падает ниже min_grad.

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

Ссылки

Весы, Л.Е., Введение в нелинейную оптимизацию, Нью-Йорк, Спрингер-Верлаг, 1985

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