exponenta event banner

traincgb

Спряжение градиентного обратного распространения с перезапуском Пауэлла-Била

Синтаксис

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

Описание

traincgb - сетевая обучающая функция, которая обновляет значения веса и смещения согласно сопряженному градиентному обратному распространению с перезапусками Пауэлла-Била.

net.trainFcn = 'traincgb' устанавливает сеть trainFcn собственность.

[net,tr] = train(net,...) обучает сеть с помощью traincgb.

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

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

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

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

Можно создать стандартную сеть, использующую traincgb с feedforwardnet или cascadeforwardnet.

Подготовка пользовательской сети для обучения traincgb,

  1. Набор net.trainFcn кому 'traincgb'. Эти наборы net.trainParam кому traincgbПараметры по умолчанию.

  2. Набор net.trainParam свойств к требуемым значениям.

В любом случае вызов train с результирующей сетью направляет сеть с traincgb.

Примеры

свернуть все

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

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

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

Подробнее

свернуть все

Алгоритм Пауэлла-Била

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

|gk−1Tgk|≥0.2‖gk‖2

Если это условие выполнено, направление поиска сбрасывается в отрицательное значение градиента.

traincgb подпрограмма имеет несколько лучшую производительность, чем traincgp для некоторых проблем, хотя производительность по любой данной проблеме трудно предсказать. Требования к хранению для алгоритма Пауэлла-Била (шесть векторов) немного больше, чем для Полака-Рибьера (четыре вектора).

Алгоритмы

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

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

X = X + a*dX;

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

dX = -gX + dX_old*Z;

где gX - градиент. Параметр Z может быть вычислено несколькими различными способами. Вариация Пауэлла - Била сопряжённого градиента отличается двумя признаками. Сначала алгоритм использует тест, чтобы определить, когда сбросить направление поиска на отрицательное от градиента. Во-вторых, направление поиска вычисляется из отрицательного градиента, предыдущего направления поиска и последнего направления поиска перед предыдущим сбросом. См. Пауэлл, Математическое программирование, том 12, 1977, стр. 241- 254, для более подробного обсуждения алгоритма.

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

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

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

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

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

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

Ссылки

Пауэлл, M.J.D., «Процедуры перезапуска для метода сопряженного градиента», Математическое программирование, том 12, 1977, стр. 241-254

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