Обратная связь Levenberg-Marquardt
net.trainFcn = 'trainlm' устанавливает сеть trainFcn свойство.
[ обучает сеть с trainedNet,tr] = train(net,...)trainlm.
trainlm сетевая учебная функция, которая обновляет вес и значения смещения согласно оптимизации Levenberg-Marquardt.
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 может обучить любую сеть пока ее вес, сетевой вход, и передаточные функции имеют производные функции.
Обратная связь используется, чтобы вычислить якобиевский 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 времена с прошлого раза это уменьшилось (при использовании валидации).