Алгоритм Левенберга — Марквардта — Вікіпедія
Алгоритм Левенберга–Марквардта (англ. Levenberg–Marquardt algorithm, LMA або просто LM), також відомий як метод сгасних найменших квадратів (англ. damped least-squares, DLS) використовується у математиці та обчислювальній техніці для розв'язування нелінійних задач найменших квадратів. Такі задачі мінімізації особливо актуальні при підборі кривої методом найменших квадратів. LMA інтерполює між алгоритмом Гаусса–Ньютона (GNA) та методом градієнтного спуску. LMA є більш надійним, ніж GNA, що означає, що в багатьох випадках він знаходить рішення, навіть якщо воно починається дуже далеко від кінцевого мінімуму. Для нормальної роботи функцій і розумних стартових параметрів LMA, як правило, повільніше, ніж GNA. LMA також можна розглядати як Гаусса–Ньютона, використовуючи підхід довіри до регіону.
Алгоритм був вперше опублікований у 1944 році Кеннетом Левенбергом[en],[1] під час роботи у Франкфордському армійському арсеналі. У 1963 році його знову відкрили Дональд Марквардт[en],[2] який працював статистиком у DuPont, і незалежно Жірард[3], Вінн[4] і Моррісон[5].
LMA використовується в багатьох програмних додатках для розв'язання загальних задач допасовування кривої[en]. Використовуючи алгоритм Гаусса–Ньютона, він часто сходиться швидше, ніж методи першого порядку.[6] Однак, як і інші алгоритми ітераційної оптимізації, LMA знаходить лише локальний мінімум, який не обов'язково є глобальним мінімумом.
Основне застосування алгоритму Левенберга–Марквардта полягає в задачі допасовування кривої[en] методом найменших квадратів: для заданого набору емпіричних пар незалежних і залежних змінних, знайти параметри модельної кривої так, щоб суму квадратів відхилень було зведено до мінімуму:
- набір вважається непорожнім.
Як і інші алгоритми чисельної мінімізації, алгоритм Левенберга–Марквардта є ітераційною процедурою. Щоб почати мінімізацію, користувач повинен надати початкове припущення для вектора параметрів . У випадках лише з одним мінімумом, ненавчені стандартні припущення, як буде працювати нормально; у випадках з кількома мінімумами алгоритм сходить до глобального мінімуму лише в тому випадку, якщо початкове припущення вже дещо близько до остаточного рішення.
На кожному кроці ітерації вектор параметрів замінюється на нову оцінку . Щоб визначити , функція апроксимується його лінеаризацією:
де
є градієнтом (в даному випадку вектором рядка) з відношенням до .
Сума квадратних відхилень має свій мінімум при нульовому градієнті по відношенню до . Наведене вище наближення першого порядку дає
або у векторному позначенні,
Візьмемо похідну від з відношенням до і встановлення результату на нуль, що дає
де є матриця Якобі, у якій -й ряд дорівнює , і де і є векторами з -ї компоненти і відповідно. Наведений вище вираз отримано для підпадає під метод Гаусса–Ньютона. Матриця Якобі, як визначено вище, є (загалом) не квадратною матрицею, а прямокутною матрицею розміру , де — кількість параметрів (розмір вектора ). Матричне множення дає необхідну квадратну матрицю і добуток матриці-вектору з правого боку дають вектор розміру . В результаті виходить набір лінійних рівнянь, які можна розв'язувати для .А
Внесок Левенберга полягає в тому, щоб замінити це рівняння на «згасну версію»:
де є одиничною матрицею, що дає приріст до розрахункового вектора параметрів .
Коефіцієнт (невід'ємного) демпфування коригується на кожній ітерації. Якщо зменшення є швидким, можна використовувати менше значення, наближаючи алгоритм до алгоритму Гаусса–Ньютона, тоді як, якщо ітерація дає недостатнє зменшення залишку, можна збільшити, наблизивши на крок до напрямку градієнтного спуску. Зверніть увагу, що градієнт з відношенням до дорівнює . Тому для великих значень , крок буде зроблено приблизно в напрямку, протилежному градієнту. Якщо будь-яка довжина обчисленого кроку або зменшення суми квадратів з останнього вектора параметрів падають нижче попередньо визначених меж, ітерація зупиняється та останній вектор параметра вважається рішенням.
Коли коефіцієнт демпфування є великим відносно , інвертувати не потрібно, оскільки оновлення добре апроксимується невеликим кроком градієнта .
Щоб зробити масштаб рішення інваріантним, алгоритм Марквардта розв'язав модифіковану задачу з кожним компонентом градієнта, масштабованим відповідно до кривизни. Це забезпечує більший рух уздовж напрямків, де градієнт менший, що дозволяє уникнути повільної збіжності в напрямку малого градієнта. Флетчер у своїй статті 1971 року Модифікована підпрограма Марквардта для нелінійних найменших квадратів спростив форму, замінивши ідентичну матрицю з діагональною матрицею, що складається з діагональних елементів :
Подібний коефіцієнт демпфування з'являється в регуляризації Тихонова, яка використовується для розв'язування лінійних неправильних задач, а також у регресії хребта, методиці оцінки в статистиці.
Для кращого вибору параметра демпфування були висунуті різні більш-менш евристичні аргументи . Існують теоретичні аргументи, які показують, чому деякі з цих варіантів гарантують локальну збіжність алгоритму; однак ці варіанти можуть призвести до того, що глобальна збіжність алгоритму страждає від небажаних властивостей найкрутішого спуску, зокрема, дуже повільної збіжності, близької до оптимальної.
Абсолютні значення будь-якого вибору залежать від того, наскільки добре масштабована початкова проблема. Марквардт рекомендував починати зі значення і фактор . Спочатку налаштування і обчислення залишкової суми квадратів через один крок від початкової точки з коефіцієнтом демпфування а по-друге з . Якщо обидва ці показники гірші за початкову точку, то згасання збільшується шляхом послідовного множення на поки не буде знайдено кращу точку з новим коефіцієнтом демпфування для деяких .
Якщо використати коефіцієнт демпфування це призводить до зменшення квадрата залишку, то це приймається за нове значення (і нове оптимальне розташування приймається як те, що отримано з цим коефіцієнтом демпфування) і процес продовжується; якщо використовувати це призведе до гіршого залишку, але використання призведе до кращого залишку, тоді залишається без змін, а новий оптимум приймається за значення, отримане с як демпфуючий фактор.
Ефективна стратегія для контролю параметра демпфування, що називається відкладеним задоволенням, полягає у збільшенні параметра на невелику величину для кожного кроку на підйом і зменшення на велику величину для кожного кроку вниз. Ідея цієї стратегії полягає в тому, щоб уникнути занадто швидкого спуску на початку оптимізації, отже, обмежуючи кроки, доступні в майбутніх ітераціях, і, отже, сповільнюючи зближення[7]. Збільшення в 2 рази і зменшення в 3 рази виявилося ефективним у більшості випадків, тоді як для великих проблем більш екстремальні значення можуть працювати краще, зі збільшенням у 1,5 раза та зменшенням у 5 раз.[8]
При інтерпретації кроку Левенберга–Марквардта як швидкості вздовж геодезичної траєкторії в просторі параметрів можна покращити метод, додавши член другого порядку, що враховує прискорення вздовж геодезичної
де є рішенням
Оскільки цей член геодезичного прискорення залежить лише від похідної за напрямком вздовж напрямку швидкості , він не вимагає обчислення повної похідної матриці другого порядку, вимагаючи лише невеликих накладних обчислювальних витрат.[9] Оскільки похідна другого порядку може бути досить складним виразом, може бути зручно замінити її наближенням скінченної різниці
де і вже були обчислені за допомогою алгоритму, тому для обчислення потрібна лише одна додаткова оцінка функції . Вибір скінченного різницевого кроку може вплинути на стабільність алгоритму, вибір значення близько 0,1 зазвичай є розумним.
Оскільки прискорення може вказувати в напрямку, протилежному швидкості, щоб запобігти зупинці методу, якщо демпфування занадто мале, додається додатковий критерій прискорення, щоб прийняти крок, який вимагає, що
де зазвичай фіксується до значення менше ніж 1, з меншими значеннями для складніших задач.[8]
Додавання геодезичного члена прискорення може дозволити суттєво збільшити швидкість збіжності, і це особливо корисно, коли алгоритм рухається через вузькі каньйони в ландшафті цільової функції, де дозволені кроки менші, а точність вища завдяки другому порядку термін дає значні покращення.[8]
У цьому прикладі ми намагаємося підібрати функції використовуючи алгоритм Левенберга–Марквардта, реалізований в GNU Octave, як функцію leasqr. Графіки показують, що вони все краще відповідають параметрам , що використовується на початковій кривій. Лише тоді, коли параметри останнього графіка вибрано найближчими до оригіналу, криві точно підходять. Це рівняння є прикладом дуже чутливих початкових умов для алгоритму Левенберга–Марквардта. Однією з причин такої чутливості є існування кількох мінімумів — функції що має мінімуми при значенні параметра і .
- Довірча область[en]
- Метод Нелдера – Міда
- Варіанти алгоритму Левенберга–Марквардта також використовувалися для розв'язування нелінійних систем рівнянь.[10]
- ↑ Кеннет Левенберг[en]A Method for the Solution of Certain Non-Linear Problems in Least Squares. Quarterly of Applied Mathematics. 2 (2): 164—168. 1944. doi:10.1090/qam/10666.
- ↑ Дональд Марквардт[en].An Algorithm for Least-Squares Estimation of Nonlinear Parameters. SIAM Journal on Applied Mathematics. 11 (2): 431—441. doi:10.1137/0111030.
- ↑ Girard, André (1958). Excerpt from Revue d'optique théorique et instrumentale. Rev. Opt. 37: 225—241, 397—424.
- ↑ Wynne, C. G. (1959). Lens Designing by Electronic Digital Computer: I. Proc. Phys. Soc. Lond. 73 (5): 777—787. Bibcode:1959PPS....73..777W. doi:10.1088/0370-1328/73/5/310.
- ↑ Morrison, David D. (1960). Methods for nonlinear least squares problems and convergence proofs. Proceedings of the Jet Propulsion Laboratory Seminar on Tracking Programs and Orbit Determination: 1—9.
- ↑ Wiliamowski, Bogdan; Yu, Hao (June 2010). Improved Computation for Levenberg–Marquardt Training (PDF). IEEE Transactions on Neural Networks and Learning Systems. 21 (6). Архів оригіналу (PDF) за 21 січня 2022. Процитовано 21 травня 2022.
- ↑ Transtrum, Mark K; Machta, Benjamin B; Sethna, James P (2011). Geometry of nonlinear least squares with applications to sloppy models and optimization. Physical Review E. APS. 83 (3): 036701. arXiv:1010.1449. Bibcode:2011PhRvE..83c6701T. doi:10.1103/PhysRevE.83.036701. PMID 21517619. S2CID 15361707.
- ↑ а б в Transtrum, Mark K; Sethna, James P (2012). Improvements to the Levenberg-Marquardt algorithm for nonlinear least-squares minimization. arXiv:1201.5885 [physics.data-an].
- ↑ Nonlinear Least-Squares Fitting. GNU Scientific Library. Архів оригіналу за 14 квітня 2020.
- ↑ Kanzow, Christian; Yamashita, Nobuo; Fukushima, Masao (2004). Levenberg–Marquardt methods with strong local convergence properties for solving nonlinear equations with convex constraints. Journal of Computational and Applied Mathematics. 172 (2): 375—397. Bibcode:2004JCoAM.172..375K. doi:10.1016/j.cam.2004.02.013.
- Moré, Jorge J.; Sorensen, Daniel C. (1983). Computing a Trust-Region Step (PDF). SIAM J. Sci. Stat. Comput. 4 (3): 553—572. doi:10.1137/0904038.
- Gill, Philip E.; Murray, Walter (1978). Algorithms for the solution of the nonlinear least-squares problem. SIAM Journal on Numerical Analysis. 15 (5): 977—992. Bibcode:1978SJNA...15..977G. doi:10.1137/0715063.
- Pujol, Jose (2007). The solution of nonlinear inverse problems and the Levenberg-Marquardt method. Geophysics. SEG. 72 (4): W1—W16. Bibcode:2007Geop...72W...1P. doi:10.1190/1.2732552.[недоступне посилання з 01.02.2020]
- Nocedal, Jorge; Wright, Stephen J. (2006). Numerical Optimization (вид. 2nd). Springer. ISBN 978-0-387-30303-1.
- Numerical Recipes in C, Chapter 15.5: Nonlinear models
- C. T. Kelley, Iterative Methods for Optimization, SIAM Frontiers in Applied Mathematics, no 18, 1999, ISBN 0-89871-433-8. Online copy
- History of the algorithm in SIAM news
- A tutorial by Ananth Ranganathan
- K. Madsen, H. B. Nielsen, O. Tingleff, Methods for Non-Linear Least Squares Problems (nonlinear least-squares tutorial; L-M code: analytic Jacobian secant)
- T. Strutz: Data Fitting and Uncertainty (A practical introduction to weighted least squares and beyond). 2nd edition, Springer Vieweg, 2016, ISBN 978-3-658-11455-8.
- H. P. Gavin, The Levenberg-Marquardt method for nonlinear least-squares curve-fitting problems (MATLAB implementation included)