Сопряжение обратного распространения градиента с обновлениями Флетчера-Ривза
net.trainFcn = 'traincgf'
[net,tr] = train(net,...)
traincgf - сетевая обучающая функция, которая обновляет значения веса и смещения согласно сопряженному градиентному обратному распространению с обновлениями Флетчера-Ривза.
net.trainFcn = 'traincgf' устанавливает сеть trainFcn собственность.
[net,tr] = train(net,...) обучает сеть с помощью traincgf.
Обучение происходит в соответствии с traincgf параметры обучения, показанные здесь с их значениями по умолчанию:
net.trainParam.epochs | 1000 | Максимальное количество периодов для обучения |
net.trainParam.show | 25 | Периоды между дисплеями ( |
net.trainParam.showCommandLine | false | Создание выходных данных командной строки |
net.trainParam.showWindow | true | Показать графический интерфейс пользователя для обучения |
net.trainParam.goal | 0 | Цель производительности |
net.trainParam.time | inf | Максимальное время обучения в секундах |
net.trainParam.min_grad | 1e-10 | Минимальный градиент производительности |
net.trainParam.max_fail | 6 | Максимальное количество сбоев проверки |
net.trainParam.searchFcn | 'srchcha' | Имя подпрограммы поиска строк для использования |
Параметры, относящиеся к методам поиска строк (не все используются для всех методов):
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 | Параметр, позволяющий избежать небольшого снижения производительности, обычно устанавливается на |
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 | Максимальный размер шага |
Можно создать стандартную сеть, использующую traincgf с feedforwardnet или cascadeforwardnet.
Подготовка пользовательской сети для обучения traincgf,
Набор net.trainFcn кому 'traincgf'. Эти наборы net.trainParam кому traincgfПараметры по умолчанию.
Набор net.trainParam свойств к требуемым значениям.
В любом случае вызов train с результирующей сетью направляет сеть с traincgf.
traincgf может обучать любую сеть, если ее функции веса, чистого ввода и переноса имеют производные функции.
Обратное распространение используется для расчета производных производительности perf в отношении переменных веса и смещения X. Каждая переменная корректируется в соответствии со следующим:
X = X + a*dX;
где dX - направление поиска. Параметр a выбирается для минимизации производительности вдоль направления поиска. Функция поиска строк searchFcn используется для определения местоположения минимальной точки. Первое направление поиска - это негатив градиента производительности. В последующих итерациях направление поиска вычисляется из нового градиента и предыдущего направления поиска в соответствии с формулой
dX = -gX + dX_old*Z;
где gX - градиент. Параметр Z может быть вычислено несколькими различными способами. Для вариации Флетчера-Ривза сопряженного градиента вычисляется в соответствии с
Z = normnew_sqr/norm_sqr;
где norm_sqr - нормальный квадрат предыдущего градиента и normnew_sqr - нормальный квадрат текущего градиента. Более подробное описание алгоритма см. на стр. 78 раздела Шкалы (Введение в нелинейную оптимизацию).
Обучение прекращается при возникновении любого из следующих условий:
Максимальное количество epochs (повторы) достигается.
Максимальная сумма time превышено.
Производительность минимизирована для goal.
Градиент производительности падает ниже min_grad.
Производительность проверки возросла более чем max_fail раз с момента последнего уменьшения (при использовании проверки).
Весы, Л.Е., Введение в нелинейную оптимизацию, Нью-Йорк, Спрингер-Верлаг, 1985
trainbfg | traincgb | traincgp | traingda | traingdm | traingdx | trainlm | trainoss | trainscg