Обратное распространение Левенберга-Марквардта
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 может обучать любую сеть, если ее функции веса, чистого ввода и переноса имеют производные функции.
Обратное распространение используется для вычисления якобиана 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 раз с момента последнего уменьшения (при использовании проверки).