trainbfg

BFGS квази-Ньютон обратное распространение

Синтаксис

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

Описание

trainbfg - сетевая функция обучения, которая обновляет значения веса и смещения в соответствии с методом BFGS квази-Ньютона.

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

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

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

net.trainParam.epochs1000

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

net.trainParam.showWindowtrue

Показать окно обучения

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

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

net.trainParam.goal0

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

net.trainParam.timeinf

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

net.trainParam.min_grad1e-6

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

net.trainParam.max_fail6

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

net.trainParam.searchFcn'srchbac'

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

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

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

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

net.trainParam.batch_frag0

В случае нескольких партий они считаются независимыми. Любое ненулевое значение подразумевает фрагментированную партию, поэтому условия последнего слоя предыдущей обученной эпохи используются в качестве начальных условий для следующей эпохи.

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

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

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

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

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

Примеры

свернуть все

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

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

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

Подробнее о

свернуть все

BFGS Quasi-Newton Backpropagation

Метод Ньютона является альтернативой сопряженным методам градиента для быстрой оптимизации. Основной шаг метода Ньютона -

xk+1=xkAk1gk

где Ak1 - матрица Гессия (вторые производные) индекса эффективности при текущих значениях весов и смещений. Метод Ньютона часто сходится быстрее, чем сопряженные градиентные методы. К сожалению, вычислить матрицу Гессия для нейронных сетей с feedforward сложно и дорого. Существует класс алгоритмов, который основан на методе Ньютона, но который не требует вычисления вторых производных. Они называются квази-ньютонскими (или секантными) методами. Они обновляют приблизительную матрицу Гессия при каждой итерации алгоритма. Обновление вычисляется как функция от градиента. Метод квази-Ньютона, который был наиболее успешен в опубликованных исследованиях, является обновлением Broyden, Fletcher, Goldfarb и Shanno (BFGS). Этот алгоритм реализован в trainbfg стандартная программа.

Алгоритм BFGS описан в [DeSc83]. Этот алгоритм требует больше расчеты в каждой итерации и больше памяти, чем сопряженные методы градиента, хотя он обычно сходится в меньшем количестве итераций. Приблизительный Гессиан должен быть сохранен, и его размерность n x n, где n равно количеству весов и смещений в сети. Для очень больших сетей может быть лучше использовать Rprop или один из сопряженных алгоритмов градиента. Однако для небольших сетей trainbfg может быть эффективной функцией обучения.

Алгоритмы

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

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

X = X + a*dX;

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

dX = -H\gX;

где gX является градиентом и H - приблизительная матрица Гессия. Более подробное обсуждение метода BFGS quasi-Newton смотрите на странице 119 Gill, Murray, and Wright (Practical Optimization, 1981).

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

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

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

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

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

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

Ссылки

Gill, Murray, & Wright, Практическая оптимизация, 1981

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