Здравствуйте! Я реализовал аппроксимацию методом Левенберга-Марквардта, но алгоритм работает не так, как хотелось бы.
(Оффтоп)
Коротко о проблеме. Есть начальные параметры
, к которым в каждой итерации прибавляется
, чем и подбирается их истинное значение.
Если "неправильно" выбрать начальные параметры
или начальное значение
, тогда алгоритм изменяет параметры в неверном направлении, что приводит к абсолютно неверному ответу.
Получается, алгоритм либо выдает точное и правильное решение, либо полную чушь. Пытаюсь понять почему так происходит, сразу возникают вопросы:
- Непонятно, насколько близко к истинному значению надо задавать стартовые значения параметров ?
- Величина , насколько я понимаю, должна меняться в каждой итерации. Она должна быть обратно пропорциональна скорости изменения ошибки. Но по какому конкретно закону ее следует менять я не понимаю. Сейчас у меня (полагаю знаменатель есть модуль скорости изменения суммы квадратов отклонений).
- В выражении первом выражении матрица должна быть квадратной, в которой все ячейки нулевые, кроме главной диагонали (тут значения берутся из ). Я правильно понял?
Или могут быть какие-то другие причины? Подскажите, как можно решить данную проблему?