Обратное распространение BFGS quasi-Newton
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 может обучать любую сеть, если ее функции веса, чистого ввода и переноса имеют производные функции.
Обратное распространение используется для расчета производных производительности 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
cascadeforwardnet | feedforwardnet | traincgb | traincgf | traincgp | traingda | traingdm | traingdx | trainlm | trainoss | trainrp | trainscg