разъясните пожалуйста алгоритм Левенберга-Марквардта

tramway5

описание на wiki

Вопрос собственно следующий:
Поскольку у меня есть книга, на которую они внизу ссылаются (Гилл Ф., Мюррей У., Райт М. Практическая оптимизация ) , то Хк , я полагаю есть текущая оценка минимизации функции F(x). х - вектор параметров модельной функции, зависящей помимо этого от некоторого аргумента, скажем t. На картинке под заголовком Алгоритм приведён метод определения направления поиска Левенберга-Марквардта, где фигурирует функция f(Xk) с определением которой у меня вышла заминка.
Мне нужно реализовать метод программно, имея некоторые экспериментальные данные и соответственно модельную кривую (да, я знаю что метод встроен почти во все математические программные пакеты) и не очень понятно каким образом решать такую систему. В частности не понятно для каких t я должен определять вектор направлений? Для всех? Или функция f(x) в этой системе определяется как сумма по всем значениям аргумента от разностей (или квадратов разностей) значений экспериментальной и теор кривых при данном наборе значений параметров ?
Спасибо

vitamin8808

[math]$x_{k}$[/math] это точка в [math]$\mathbb R^{n}$[/math](набор параметров модели).
Общая идея такая — есть функция, которая зависит от вектора [math]$x \in \mathbb R^{n}$[/math] и ещё от чего-нибудь. По смыслу тут x это параметры модели, а "ещё чего-нибудь" это время. Например, когда вычисляют цены контрактов финансовых, выбирают модель(скажем, 5 параметров, для примера, уравнения для рынка). А цена контракта ещё зависит от времени, когда он истекает, notional amount, ну там куча условий. Хочется найти точку х, которая минимизирует расстояние между ценами контрактов на рынке и в модели. Ну и берут 20-30 контрактов.
Точка ищется в цикле, начиная с какой-то[math]$x_0$[/math]. Сам алгоритм описывает, как по [math]$x_k$[/math] вычислить [math]$x_{k+1}$[/math]. Производные все, обычно, вычисляют численно (пошевелил параметр, уж что получилось, то получилось). Линейная система решается как угодно, уж что там у тебя в есть в доступе побыстрее, то и используй.
Ещё тут вот описано:
http://www.ics.forth.gr/~lourakis/levmar/levmar.pdf
Там, в принципе, много тонкостей на практике.

vitamin8808

Про функцию — она у тебя будет векторная.
Например, значением будет вектор цен тех 30 контрактов при каких-то параметрах модели.
А минимизируется длина вектора разности между ценами в модели и ценами на рынке.

tramway5

Я несколько недопонял. Минимизируемая функция помимо набора (вектора) параметров зависит также и от некоторого числа аргументов (в простейшем случае одного что отражают "экспериментальные данные", где фактически представлен массив некоторых экспериментальных значений и соответствующий ему массив значений аргумента. Решая уравнение уравнение для поиска направления Левенберга-Марквардта при данном значении параметров минимизируемой функции, для определения значений Якобиана этой функции и её собственных значений требуется задать также и значение аргумента этой функции по которому минимизация не ведётся. В связи с этим мне не ясно какой вид имеет скажем якобиан f(X) или сама f(Xk) в этом уравнении. Строится ли он следующим образом (матричное уравнение) :

?

vitamin8808

Ну да, так и строится. В написанной формуле всё правильно.
Поясню на примере, как мы используем. Нам нужно калибровать разные модели в фин. математике.
Допустим, что модель как-то описывает рынок, и зависит от n параметров. Берутся контракты реально существующие на рынке, скажем m=20 разных контрактов. У них есть какие-то свои параметры, типа на какую сумму, сроки контракта, и т.п. У каждого контракта есть цена реальная, и цена в модели. Функция это вектор из m цен выбранных контрактов в модели. А минимизируется расстояние до вектора рыночных цен.
Оставить комментарий
Имя или ник:
Комментарий: