2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Проблема с МНК. Алгоритм Левенберга-Марквардта.
Сообщение12.04.2015, 01:18 
Здравствуйте! Я реализовал аппроксимацию методом Левенберга-Марквардта, но алгоритм работает не так, как хотелось бы.

(Оффтоп)

Если кому надо вспомнить суть метода (ссылка с кириллицей не распознается тегом URL, так что пишу в таком виде):
http://www.machinelearning.ru/wiki/index.php?title=Алгоритм_Левенберга-Марквардта

Коротко о проблеме. Есть начальные параметры $w$, к которым в каждой итерации прибавляется $\Delta w$, чем и подбирается их истинное значение.
$\Delta w=(J^TJ+\lambda \operatorname{diag}(J^TJ))^{-1}J^T(y-f(w))$

Если "неправильно" выбрать начальные параметры $w$ или начальное значение $\lambda$, тогда алгоритм изменяет параметры в неверном направлении, что приводит к абсолютно неверному ответу.

Получается, алгоритм либо выдает точное и правильное решение, либо полную чушь. Пытаюсь понять почему так происходит, сразу возникают вопросы:
  1. Непонятно, насколько близко к истинному значению надо задавать стартовые значения параметров $w$?
  2. Величина $\lambda$, насколько я понимаю, должна меняться в каждой итерации. Она должна быть обратно пропорциональна скорости изменения ошибки. Но по какому конкретно закону ее следует менять я не понимаю. Сейчас у меня $\lambda=\frac{1}{\sum\limits_{}^{}|(y-f(w+\Delta w))^2-(y-f(w))^2|}$ (полагаю знаменатель есть модуль скорости изменения суммы квадратов отклонений).
  3. В выражении первом выражении матрица $\operatorname{diag}(J^TJ)$ должна быть квадратной, в которой все ячейки нулевые, кроме главной диагонали (тут значения берутся из $J^TJ$). Я правильно понял?

Или могут быть какие-то другие причины? Подскажите, как можно решить данную проблему?

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group