Обратная связь Levenberg-Marquardt
net.trainFcn = 'trainlm'
[net,tr] = train(net,...)
trainlm
сетевая учебная функция, которая обновляет вес и значения смещения согласно оптимизации Levenberg-Marquardt.
trainlm
часто самый быстрый алгоритм обратного распространения в тулбоксе и настоятельно рекомендован, когда предпочтительный вариант контролировал алгоритм, несмотря на то, что действительно требуется больше памяти, чем другие алгоритмы.
net.trainFcn = 'trainlm'
устанавливает сеть trainFcn
свойство.
[net,tr] = train(net,...)
обучает сеть с trainlm
.
Обучение происходит согласно trainlm
учебные параметры, показанные здесь с их значениями по умолчанию:
net.trainParam.epochs | 1000
| Максимальное количество эпох, чтобы обучаться |
net.trainParam.goal | 0
| Цель производительности |
net.trainParam.max_fail | 6
| Максимальные отказы валидации |
net.trainParam.min_grad | 1e-7 | Минимальный градиент производительности |
net.trainParam.mu | 0.001
| Начальный |
net.trainParam.mu_dec | 0.1
|
|
net.trainParam.mu_inc | 10
|
|
net.trainParam.mu_max | 1e10 | Максимальный |
net.trainParam.show | 25
| Эпохи между отображениями ( |
net.trainParam.showCommandLine | false | Сгенерируйте командную строку выход |
net.trainParam.showWindow | true | Покажите учебный графический интерфейс пользователя |
net.trainParam.time | inf | Максимальное время, чтобы обучаться в секундах |
Векторы валидации используются, чтобы остановить обучение рано, если производительность сети на векторах валидации не удается улучшиться или остается то же самое для max_fail
эпохи подряд. Тестовые векторы используются в качестве дальнейшей проверки, которую сеть обобщает хорошо, но не оказывайте влияние на обучение.
Можно создать стандартную сеть, которая использует trainlm
с feedforwardnet
или cascadeforwardnet
.
Подготовить пользовательскую сеть, которая будет обучена с trainlm
,
Установите net.trainFcn
к 'trainlm'
. Это устанавливает net.trainParam
к trainlm
параметры по умолчанию.
Установите net.trainParam
свойства к требуемым значениям.
В любом случае, вызывая train
с получившейся сетью обучает сеть с trainlm
.
Смотрите help feedforwardnet
и help cascadeforwardnet
для примеров.
Эта функция использует якобиан в вычислениях, который принимает, что производительность является средним значением или суммой квадратичных невязок. Поэтому сети, обученные с этой функцией, должны использовать любого mse
или sse
функция производительности.
trainlm
обучение поддержек с валидацией и тестовыми векторами, если NET.divideFcn
сети свойство установлено в функцию деления данных. Векторы валидации используются, чтобы остановить обучение рано, если производительность сети на векторах валидации не удается улучшиться или остается то же самое для
max_fail
эпохи подряд. Тестовые векторы используются в качестве дальнейшей проверки, которую сеть обобщает хорошо, но не оказывайте влияние на обучение.
trainlm
может обучить любую сеть пока ее вес, сетевой вход, и передаточные функции имеют производные функции.
Обратная связь используется, чтобы вычислить якобиевский jX
из производительности perf
относительно веса и переменных X
смещения. Каждая переменная настроена согласно Levenberg-Marquardt,
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
времена с прошлого раза это уменьшилось (при использовании валидации).