trainbfg

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

Описание

пример

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

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

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

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

  • net.trainParam.epochs — Максимальное количество эпох, чтобы обучаться. Значение по умолчанию 1000.

  • net.trainParam.showWindow — Покажите учебный графический интерфейс пользователя. Значением по умолчанию является true.

  • net.trainParam.show — Эпохи между отображениями (NaN ни для каких отображений). Значение по умолчанию равняется 25.

  • net.trainParam.showCommandLine — Сгенерируйте командную строку выход. Значением по умолчанию является false.

  • net.trainParam.goal — Цель эффективности. Значение по умолчанию 0.

  • net.trainParam.time — Максимальное время, чтобы обучаться в секундах. Значением по умолчанию является inf.

  • net.trainParam.min_grad — Минимальный градиент эффективности. Значением по умолчанию является 1e-6.

  • net.trainParam.max_fail — Максимальные отказы валидации. Значением по умолчанию является 6.

  • net.trainParam.searchFcn — Имя линии ищет стандартную программу, чтобы использовать. Значением по умолчанию является 'srchbac'.

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

  • net.trainParam.scal_tol — Разделитесь на дельту, чтобы определить допуск к линейному поиску. Значение по умолчанию равняется 20.

  • net.trainParam.alpha — Масштабный коэффициент, который определяет достаточное сокращение перфекта. Значением по умолчанию является 0.001.

  • net.trainParam.beta — Масштабный коэффициент, который определяет достаточно большой размер шага. Значением по умолчанию является 0.1.

  • net.trainParam.delta — Начальный размер шага на шаге местоположения интервала. Значением по умолчанию является 0.01.

  • net.trainParam.gamma — Параметр, чтобы избежать маленьких сокращений эффективности, обычно устанавливайте на 0,1 (см. srch_cha). Значением по умолчанию является 0.1.

  • net.trainParam.low_lim — Нижний предел на изменении в размере шага. Значением по умолчанию является 0.1.

  • net.trainParam.up_lim — Верхний предел изменения в размере шага. Значением по умолчанию является 0.5.

  • net.trainParam.maxstep — Максимальная длина шага. Значением по умолчанию является 100.

  • net.trainParam.minstep — Минимальная длина шага. Значением по умолчанию является 1.0e-6.

  • net.trainParam.bmax — Максимальный размер шага. Значением по умолчанию является 26.

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

Примеры

свернуть все

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

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

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

Входные параметры

свернуть все

Введите сеть в виде сетевого объекта. Чтобы создать сетевой объект, используйте, например, feedforwardnet или narxnet.

Выходные аргументы

свернуть все

Обучивший сеть, возвращенный как network объект..

Учебная запись (epoch и perf), возвратился как структура, поля которой зависят от сетевой учебной функции (net.NET.trainFcn). Это может включать поля, такие как:

  • Обучение, деление данных, и функции эффективности и параметры

  • Индексы деления данных для обучения, валидации и наборов тестов

  • Маски деления данных для учебной валидации и наборов тестов

  • Номер эпох (num_epochs) и лучшая эпоха (best_epoch).

  • Список учебных имен состояния (states).

  • Поля для каждого имени состояния, записывающего его значение в течение обучения

  • Эффективность лучшей сети (best_perf, best_vperf, best_tperf)

Больше о

свернуть все

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

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

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

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

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

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

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

xk+1=xkAk1gk

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

Ссылки

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

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