exponenta event banner

trainbfg

Обратное распространение BFGS quasi-Newton

Синтаксис

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

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

xk + 1 = xk Ak − 1 gk

где Ak 1 - гессенская матрица (вторые производные) индекса производительности при текущих значениях весов и смещений. Метод Ньютона часто сходится быстрее, чем методы сопряженного градиента. К сожалению, вычислять матрицу Гессена для нейронных сетей прямой связи сложно и дорого. Существует класс алгоритмов, который основан на методе Ньютона, но который не требует вычисления вторых производных. Они называются квазиньютоновскими (или секантными) методами. Они обновляют приближенную матрицу Гессена на каждой итерации алгоритма. Обновление вычисляется как функция градиента. Квазиньютоновский метод, который был наиболее успешным в опубликованных исследованиях, является обновлением Бройдена, Флетчера, Гольдфарба и Шанно (BFGS). Этот алгоритм реализован в trainbfg рутина.

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

Алгоритмы

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

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

X = X + a*dX;

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

dX = -H\gX;

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

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

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

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

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

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

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

Ссылки

Гилл, Мюррей, & Райт, Практическая оптимизация, 1981

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