BFGS квази-Ньютон обратное распространение
net.trainFcn = 'trainbfg'
[net,tr] = train(net,...)
trainbfg
- сетевая функция обучения, которая обновляет значения веса и смещения в соответствии с методом BFGS квази-Ньютона.
net.trainFcn = 'trainbfg'
устанавливает сетевую trainFcn
свойство.
[net,tr] = train(net,...)
обучает сеть с trainbfg
.
Обучение происходит согласно trainbfg
параметры обучения, показанные здесь с их значениями по умолчанию:
net.trainParam.epochs | 1000 | Максимальное количество эпох для обучения |
net.trainParam.showWindow | true | Показать окно обучения |
net.trainParam.show | 25 | Эпохи между отображениями (NaN при отсутствии отображений) |
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.gama | 0.1 | Параметр, чтобы избежать небольших сокращений эффективности, обычно установленный на 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
с feedfowardnet
или cascadeforwardnet
. Чтобы подготовить пользовательскую сеть для обучения с trainbfg
:
Задайте NET.trainFcn
на 'trainbfg'
. Это устанавливает NET.trainParam
на trainbfg
параметры по умолчанию.
Задайте NET.trainParam
свойства к желаемым значениям.
В любом случае вызов train
с полученной сетью обучает сеть с 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
cascadeforwardnet
| feedforwardnet
| traincgb
| traincgf
| traincgp
| traingda
| traingdm
| traingdx
| trainlm
| trainoss
| trainrp
| trainscg