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_lim0.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.

Примеры

свернуть все

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

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

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

Больше о

свернуть все

Обратная связь квазиньютона BFGS

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

xk+1=xkAk1gk

где Ak1 матрица Гессиана (вторые производные) индекса производительности в текущих значениях весов и смещений. Метод Ньютона часто сходится быстрее, чем методы сопряженных градиентов. К сожалению, это является комплексным и дорогим вычислить матрицу Гессиана для feedforward нейронных сетей. Существует класс алгоритмов, который основан на методе Ньютона, но который не требует вычисления вторых производных. Они называются квазиньютоном (или секанс) методами. Они обновляют аппроксимированную матрицу Гессиана в каждой итерации алгоритма. Обновление вычисляется как функция градиента. Приближенным методом ньютона, который был самым успешным в опубликованных исследованиях, является Broyden, Флетчер, Goldfarb и Shanno (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 является аппроксимированной матрицей Гессиана. Смотрите страницу 119 Жабр, Мюррея и Райта (Практическая Оптимизация, 1981) для более детального обсуждения приближенного метода ньютона BFGS.

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

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

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

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

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

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

Ссылки

Жабры, Murray, & Wright, практическая оптимизация, 1981

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