Алгоритм Левенберга — Марквардта

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Алгоритм Левенберга–Марквардта (Шаблон:Lang-en, LMA або просто LM), також відомий як метод сгасних найменших квадратів (Шаблон:Lang-en, DLS) використовується у математиці та обчислювальній техніці для розв'язування нелінійних задач найменших квадратів. Такі задачі мінімізації особливо актуальні при підборі кривої методом найменших квадратів. LMA інтерполює між алгоритмом Гаусса–Ньютона (GNA) та методом градієнтного спуску. LMA є більш надійним, ніж GNA, що означає, що в багатьох випадках він знаходить рішення, навіть якщо воно починається дуже далеко від кінцевого мінімуму. Для нормальної роботи функцій і розумних стартових параметрів LMA, як правило, повільніше, ніж GNA. LMA також можна розглядати як Гаусса–Ньютона, використовуючи підхід довіри до регіону.

Алгоритм був вперше опублікований у 1944 році Шаблон:Нп,[1] під час роботи у Франкфордському армійському арсеналі. У 1963 році його знову відкрили Шаблон:Нп,[2] який працював статистиком у DuPont, і незалежно Жірард[3], Вінн[4] і Моррісон[5].

LMA використовується в багатьох програмних додатках для розв'язання загальних задач Шаблон:Нп. Використовуючи алгоритм Гаусса–Ньютона, він часто сходиться швидше, ніж методи першого порядку.[6] Однак, як і інші алгоритми ітераційної оптимізації, LMA знаходить лише локальний мінімум, який не обов'язково є глобальним мінімумом.

Проблема

Основне застосування алгоритму Левенберга–Марквардта полягає в задачі Шаблон:Нп методом найменших квадратів: для заданого набору m емпіричних пар (xi,yi) незалежних і залежних змінних, знайти параметри Шаблон:Tmath модельної кривої f(x,β) так, щоб суму квадратів відхилень S(β) було зведено до мінімуму:

β^argminβS(β)argminβi=1m[yif(xi,β)]2, набір вважається непорожнім.

Рішення

Як і інші алгоритми чисельної мінімізації, алгоритм Левенберга–Марквардта є ітераційною процедурою. Щоб почати мінімізацію, користувач повинен надати початкове припущення для вектора параметрів Шаблон:Tmath. У випадках лише з одним мінімумом, ненавчені стандартні припущення, як βT=(1, 1, , 1) буде працювати нормально; у випадках з кількома мінімумами алгоритм сходить до глобального мінімуму лише в тому випадку, якщо початкове припущення вже дещо близько до остаточного рішення.

На кожному кроці ітерації вектор параметрів Шаблон:Tmath замінюється на нову оцінку Шаблон:Tmath. Щоб визначити Шаблон:Tmath, функція f(xi,β+δ) апроксимується його лінеаризацією:

f(xi,β+δ)f(xi,β)+𝐉iδ,

де

𝐉i=f(xi,β)β

є градієнтом (в даному випадку вектором рядка) Шаблон:Tmath з відношенням до Шаблон:Tmath.

Сума S(β) квадратних відхилень має свій мінімум при нульовому градієнті по відношенню до Шаблон:Tmath. Наведене вище наближення першого порядку f(xi,β+δ) дає

S(β+δ)i=1m[yif(xi,β)𝐉iδ]2,

або у векторному позначенні,

S(β+δ)𝐲𝐟(β)𝐉δ2=[𝐲𝐟(β)𝐉δ]T[𝐲𝐟(β)𝐉δ]=[𝐲𝐟(β)]T[𝐲𝐟(β)][𝐲𝐟(β)]T𝐉δ(𝐉δ)T[𝐲𝐟(β)]+δT𝐉T𝐉δ=[𝐲𝐟(β)]T[𝐲𝐟(β)]2[𝐲𝐟(β)]T𝐉δ+δT𝐉T𝐉δ.

Візьмемо похідну від S(β+δ) з відношенням до Шаблон:Tmath і встановлення результату на нуль, що дає

(𝐉T𝐉)δ=𝐉T[𝐲𝐟(β)],

де 𝐉 є матриця Якобі, у якій Шаблон:Tmath-й ряд дорівнює 𝐉i, і де 𝐟(β) і 𝐲 є векторами з Шаблон:Tmath-ї компоненти f(xi,β) і yi відповідно. Наведений вище вираз отримано для Шаблон:Tmath підпадає під метод Гаусса–Ньютона. Матриця Якобі, як визначено вище, є (загалом) не квадратною матрицею, а прямокутною матрицею розміру m×n, де n — кількість параметрів (розмір вектора β). Матричне множення (𝐉T𝐉) дає необхідну n×n квадратну матрицю і добуток матриці-вектору з правого боку дають вектор розміру n. В результаті виходить набір n лінійних рівнянь, які можна розв'язувати для Шаблон:Tmath

Внесок Левенберга полягає в тому, щоб замінити це рівняння на «згасну версію»:

(𝐉T𝐉+λ𝐈)δ=𝐉T[𝐲𝐟(β)],

де Шаблон:Tmath є одиничною матрицею, що дає приріст Шаблон:Tmath до розрахункового вектора параметрів Шаблон:Tmath.

Коефіцієнт (невід'ємного) демпфування Шаблон:Tmath коригується на кожній ітерації. Якщо зменшення Шаблон:Tmath є швидким, можна використовувати менше значення, наближаючи алгоритм до алгоритму Гаусса–Ньютона, тоді як, якщо ітерація дає недостатнє зменшення залишку, Шаблон:Tmath можна збільшити, наблизивши на крок до напрямку градієнтного спуску. Зверніть увагу, що градієнт Шаблон:Tmath з відношенням до Шаблон:Tmath дорівнює 2(𝐉T[𝐲𝐟(β)])T. Тому для великих значень Шаблон:Tmath, крок буде зроблено приблизно в напрямку, протилежному градієнту. Якщо будь-яка довжина обчисленого кроку Шаблон:Tmath або зменшення суми квадратів з останнього вектора параметрів Шаблон:Tmath падають нижче попередньо визначених меж, ітерація зупиняється та останній вектор параметра Шаблон:Tmath вважається рішенням.

Коли коефіцієнт демпфування Шаблон:Tmath є великим відносно 𝐉T𝐉, інвертувати 𝐉T𝐉+λ𝐈 не потрібно, оскільки оновлення добре апроксимується невеликим кроком градієнта λ1𝐉T[𝐲𝐟(β)].

Щоб зробити масштаб рішення інваріантним, алгоритм Марквардта розв'язав модифіковану задачу з кожним компонентом градієнта, масштабованим відповідно до кривизни. Це забезпечує більший рух уздовж напрямків, де градієнт менший, що дозволяє уникнути повільної збіжності в напрямку малого градієнта. Флетчер у своїй статті 1971 року Модифікована підпрограма Марквардта для нелінійних найменших квадратів спростив форму, замінивши ідентичну матрицю Шаблон:Tmath з діагональною матрицею, що складається з діагональних елементів Шаблон:Tmath :

[𝐉T𝐉+λdiag(𝐉T𝐉)]δ=𝐉T[𝐲𝐟(β)].

Подібний коефіцієнт демпфування з'являється в регуляризації Тихонова, яка використовується для розв'язування лінійних неправильних задач, а також у регресії хребта, методиці оцінки в статистиці.

Вибір параметра демпфування

Для кращого вибору параметра демпфування були висунуті різні більш-менш евристичні аргументи Шаблон:Tmath. Існують теоретичні аргументи, які показують, чому деякі з цих варіантів гарантують локальну збіжність алгоритму; однак ці варіанти можуть призвести до того, що глобальна збіжність алгоритму страждає від небажаних властивостей найкрутішого спуску, зокрема, дуже повільної збіжності, близької до оптимальної.

Абсолютні значення будь-якого вибору залежать від того, наскільки добре масштабована початкова проблема. Марквардт рекомендував починати зі значення Шаблон:Tmath і фактор Шаблон:Tmath. Спочатку налаштування λ=λ0 і обчислення залишкової суми квадратів S(β) через один крок від початкової точки з коефіцієнтом демпфування λ=λ0 а по-друге з Шаблон:Tmath. Якщо обидва ці показники гірші за початкову точку, то згасання збільшується шляхом послідовного множення на Шаблон:Tmath поки не буде знайдено кращу точку з новим коефіцієнтом демпфування Шаблон:Tmath для деяких Шаблон:Tmath.

Якщо використати коефіцієнт демпфування Шаблон:Tmath це призводить до зменшення квадрата залишку, то це приймається за нове значення Шаблон:Tmath (і нове оптимальне розташування приймається як те, що отримано з цим коефіцієнтом демпфування) і процес продовжується; якщо використовувати Шаблон:Tmath це призведе до гіршого залишку, але використання Шаблон:Tmath призведе до кращого залишку, тоді Шаблон:Tmath залишається без змін, а новий оптимум приймається за значення, отримане с Шаблон:Tmath як демпфуючий фактор.

Ефективна стратегія для контролю параметра демпфування, що називається відкладеним задоволенням, полягає у збільшенні параметра на невелику величину для кожного кроку на підйом і зменшення на велику величину для кожного кроку вниз. Ідея цієї стратегії полягає в тому, щоб уникнути занадто швидкого спуску на початку оптимізації, отже, обмежуючи кроки, доступні в майбутніх ітераціях, і, отже, сповільнюючи зближення[7]. Збільшення в 2 рази і зменшення в 3 рази виявилося ефективним у більшості випадків, тоді як для великих проблем більш екстремальні значення можуть працювати краще, зі збільшенням у 1,5 раза та зменшенням у 5 раз.[8]

Геодезичне прискорення

При інтерпретації кроку Левенберга–Марквардта як швидкості 𝒗k вздовж геодезичної траєкторії в просторі параметрів можна покращити метод, додавши член другого порядку, що враховує прискорення 𝒂k вздовж геодезичної

𝒗k+12𝒂k

де 𝒂k є рішенням

𝑱k𝒂k=fvv.

Оскільки цей член геодезичного прискорення залежить лише від похідної за напрямком fvv=μνvμvνμνf(𝒙) вздовж напрямку швидкості 𝒗, він не вимагає обчислення повної похідної матриці другого порядку, вимагаючи лише невеликих накладних обчислювальних витрат.[9] Оскільки похідна другого порядку може бути досить складним виразом, може бути зручно замінити її наближенням скінченної різниці

fvvifi(𝒙+hδ)2fi(𝒙)+fi(𝒙hδ)h2=2h(fi(𝒙+hδ)fi(𝒙)h𝑱iδ)

де f(𝒙) і 𝑱 вже були обчислені за допомогою алгоритму, тому для обчислення потрібна лише одна додаткова оцінка функції f(𝒙+hδ). Вибір скінченного різницевого кроку h може вплинути на стабільність алгоритму, вибір значення близько 0,1 зазвичай є розумним.

Оскільки прискорення може вказувати в напрямку, протилежному швидкості, щоб запобігти зупинці методу, якщо демпфування занадто мале, додається додатковий критерій прискорення, щоб прийняти крок, який вимагає, що

2𝒂k𝒗kα

де α зазвичай фіксується до значення менше ніж 1, з меншими значеннями для складніших задач.[8]

Додавання геодезичного члена прискорення може дозволити суттєво збільшити швидкість збіжності, і це особливо корисно, коли алгоритм рухається через вузькі каньйони в ландшафті цільової функції, де дозволені кроки менші, а точність вища завдяки другому порядку термін дає значні покращення.[8]

Приклад

Погано підходить
Краще підходить
Найкраще підходить

У цьому прикладі ми намагаємося підібрати функції y=acos(bX)+bsin(aX) використовуючи алгоритм Левенберга–Марквардта, реалізований в GNU Octave, як функцію leasqr. Графіки показують, що вони все краще відповідають параметрам a=100, b=102 що використовується на початковій кривій. Лише тоді, коли параметри останнього графіка вибрано найближчими до оригіналу, криві точно підходять. Це рівняння є прикладом дуже чутливих початкових умов для алгоритму Левенберга–Марквардта. Однією з причин такої чутливості є існування кількох мінімумів — функції cos(βx) що має мінімуми при значенні параметра β^ і β^+2nπ.

Див. також

Примітки

Шаблон:Reflist

Література

Шаблон:Refbegin

Шаблон:Refend

Зовнішні посилання

Шаблон:Методи оптимізації