trainoss

Одноэтапное секантное обратное распространение

Синтаксис

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

Описание

trainoss является сетевой функцией обучения, которая обновляет значения веса и смещения в соответствии с одношаговым секущим методом.

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

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

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

net.trainParam.epochs1000

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

net.trainParam.goal0

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

net.trainParam.max_fail6

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

net.trainParam.min_grad1e-10

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

net.trainParam.searchFcn'srchbac'

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

net.trainParam.show25

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

net.trainParam.showCommandLinefalse

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

net.trainParam.showWindowtrue

Показать обучающий графический интерфейс пользователя

net.trainParam.timeinf

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

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

Подробнее о

свернуть все

Одношаговый метод секанта

Поскольку алгоритм BFGS требует большего объема памяти и расчетов в каждой итерации, чем сопряженные алгоритмы градиента, существует потребность в сечении приближения с меньшими требованиями к хранению и расчетам. Одношаговый метод секанса (OSS) является попыткой преодолеть разрыв между сопряженными алгоритмами градиента и квази-Ньютонскими (секантными) алгоритмами. Этот алгоритм не хранит полную матрицу Гессия; оно принимает, что при каждой итерации предыдущий Гессиан был матрицей тождеств. Это имеет дополнительное преимущество, что новое направление поиска может быть вычислено без вычисления обратной матрицы.

Одноэтапный метод сечения описан в [Batt92]. Этот алгоритм требует меньше памяти и расчетов в каждую эпоху, чем алгоритм BFGS. Это требует немного большего объема памяти и расчетов в каждую эпоху, чем сопряженные алгоритмы градиента. Это может быть рассмотрено как компромисс между полными алгоритмами квази-Ньютона и сопряженными алгоритмами градиента.

Алгоритмы

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

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

X = X + a*dX;

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

dX = -gX + Ac*X_step + Bc*dgX;

где gX является градиентом, X_step - изменение весов на предыдущей итерации и dgX - изменение градиента от последней итерации. См. Battiti (Neural Computation, Vol. 4, 1992, pp. 141-166) для более подробного обсуждения одношагового секторального алгоритма.

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

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

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

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

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

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

Ссылки

Battiti, R., «First and второго порядка methods for learning: Between наискорейшего спуска and Newton's method», Neural Расчета, Vol. 4, No. 2, 1992, pp . 141-166

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