Левенберг-Марквардтская обратная практика
net.trainFcn = 'trainlm'
устанавливает сетевую trainFcn
свойство.
[
обучает сеть с trainedNet
,tr
] = train(net
,...)trainlm
.
trainlm
- функция сетевого обучения, которая обновляет значения веса и смещения в соответствии с оптимизацией Левенберга-Марквардта.
trainlm
часто является самым быстрым алгоритмом обратного распространения в тулбоксе и настоятельно рекомендуется в качестве алгоритма с первым выбором, хотя и требует большей памяти, чем другие алгоритмы.
Обучение происходит согласно trainlm
параметры обучения, показанные здесь с их значениями по умолчанию:
net.trainParam.epochs
- Максимальное количество эпох для обучения. Значение по умолчанию является 1000.
net.trainParam.goal
- Цель эффективности. Значение по умолчанию 0.
net.trainParam.max_fail
- Максимальные отказы в валидации. Значение по умолчанию 6
.
net.trainParam.min_grad
- Минимальный градиент эффективности. Значение по умолчанию 1e-7
.
net.trainParam.mu
- Начальная mu
. Значение по умолчанию является 0,001.
net.trainParam.mu_dec
- Коэффициент уменьшения для mu
. Значение по умолчанию является 0,1.
net.trainParam.mu_inc
- Коэффициент увеличения для mu
. Значение по умолчанию является 10.
net.trainParam.mu_max
- Максимальное значение для mu
. Значение по умолчанию 1e10
.
net.trainParam.show
- Эпохи между отображениями (NaN
при отсутствии отображений). Значение по умолчанию является 25.
net.trainParam.showCommandLine
- Сгенерируйте выход в командной строке. Значение по умолчанию false
.
net.trainParam.showWindow
- Показать обучающий графический интерфейс пользователя. Значение по умолчанию true
.
net.trainParam.time
- Максимальное время обучения в секундах. Значение по умолчанию inf
.
Векторы валидации используются, чтобы остановить обучение раньше, если эффективность сети на векторах валидации не улучшается или остается прежней для max_fail
эпох в строку. Тестовые векторы используются как дополнительная проверка того, что сеть хорошо обобщается, но не оказывают никакого эффекта на обучение.
Эта функция использует Якобиан для вычислений, что принимает, что эффективность является средним значением или суммой квадратичных невязок. Поэтому сети, обученные с помощью этой функции, должны использовать или mse
или sse
эффективность.
trainlm
Поддержки обучение с валидацией и тестовыми векторами, если сеть NET.divideFcn
свойство устанавливается в функцию деления данных. Векторы валидации используются, чтобы остановить обучение раньше, если эффективность сети на векторах валидации не улучшается или остается прежней для max_fail
эпох в строку. Тестовые векторы используются как дополнительная проверка того, что сеть хорошо обобщается, но не оказывают никакого эффекта на обучение.
trainlm
может обучать любую сеть, пока ее вес, чистый вход и передаточные функции имеют производные функции.
Backpropagation используется для вычисления якобианской jX
от эффективности perf
относительно переменных веса и смещения X
. Каждая переменная корректируется согласно Левенбергу-Марквардту,
jj = jX * jX je = jX * E dX = -(jj+I*mu) \ je
где E
все ошибки и I
- матрица тождеств.
Адаптивное значение mu
увеличивается на mu_inc
до тех пор, пока вышеуказанное изменение не приведет к уменьшению значения эффективности. Затем изменение вносится в сеть и mu
уменьшается на mu_dec
.
Обучение останавливается, когда происходит любое из следующих условий:
Максимальное количество epochs
(повторения) достигается.
Максимальное количество time
превышено.
Эффективность минимизирована до goal
.
Градиент эффективности падает ниже min_grad
.
mu
превышает mu_max
.
Эффективность валидации увеличилась более чем max_fail
раз с момента последнего уменьшения (при использовании валидации).