traincgb

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

Синтаксис

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

Описание

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

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);

Подробнее о

свернуть все

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

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

|gk1Tgk|0.2gk2

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

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

Алгоритмы

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

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

X = X + a*dX;

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

dX = -gX + dX_old*Z;

где gX - градиент. Значение параметра Z может быть вычислен несколькими различными способами. Изменение сопряженного градиента Пауэлла-Била отличается двумя функциями. Во-первых, алгоритм использует тест, чтобы определить, когда сбросить направление поиска к отрицательному значению градиента. Во-вторых, направление поиска вычисляется из отрицательного градиента, предыдущего направления поиска и последнего направления поиска перед предыдущим сбросом. Более подробное обсуждение алгоритма смотрите в Powell, Mathematical Programming, Vol. 12, 1977, pp. 241 to 254.

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

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

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

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

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

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

Ссылки

Powell, M.J.D., «Restart procedures for the conjugate gradient method», Mathematical Programming, Vol. 12, 1977, pp. 241-254

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