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