Квазі-ньютонів метод

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

Квазі-Ньютонівські методи — це методи, що використовуються для пошуку нулів або локальних максимумів та мінімумів функцій, як альтернатива методу Ньютона. Їх можливо використовувати, якщо якобіан або гессіан недоступні або обчислення на кожній ітерації займає забагато ресурсів. «Повний» метод Ньютона вимагає наявності якобіана для пошуку нулів або гессіана для знаходження екстремумів. Деякі ітераційні методи[en], що зводяться до методу Ньютона, такі як SLSQP, можуть вважатися квазі-Ньютонівськими.

Пошук нулів: знаходження коренів[ред. | ред. код]

Метод Ньютона для визначення нулів функції кількох змінних визначається як , де  — лівий обернений якобіан матриці для у точці .

Загалом, будь-який метод, який замість точного якобіану використовує наближене значення, є квазі-Ньютонівським методом.[1] Простим прикладом є метод хорд, в якому на всіх ітераціях замінюється на . Наведені нижче методи оптимізації вказують на важливий підклас квазі-Ньютонівських методів, які засновані на методі хорд.[2]

Використання методів, які розроблено для пошуку екстремумів з метою визначення нулів, не завжди є конструктивною стратегією, оскільки більшість таких методів вимагають, щоб матриця була симетричною. У контексті пошуку екстремумів це має місце, проте це малоймовірно у випадку визначення нулів. Методи Бройдена — «добрий» і «поганий» — це два методи, які часто використовуються для пошуку екстремумів і також можуть бути застосовані для визначення нулів. Інші методи, які можуть бути використані, — це метод оновлення стовпця, метод оберненого оновлення стовпця, квазі-Ньютонівський метод найменших квадратів і квазі-Ньютонівський метод обернених найменших квадратів.

Нещодавно квазі-Ньютонівські методи були застосовані для знаходження розв'язку множини зв'язаних систем рівнянь (наприклад, проблеми взаємодії рідини та структури або проблеми взаємодії у фізиці). Вони дозволяють знаходити розв'язок шляхом окремого розв'язання кожної складової системи (що є простішим, ніж пошук розв'язку для глобальної системи) у циклічному ітеративному порядку, поки не буде знайдено розв'язок глобальної системи.[2][3]

Пошук екстремуму: оптимізація[ред. | ред. код]

Пошук мінімуму або максимуму скалярної функції представляє собою визначення нулів градієнта цієї функції. Таким чином, квазі-Ньютонівські методи можна легко використовувати для пошуку екстремумів функції. Іншими словами, якщо  — це градієнт , то визначення нулів векторної функції еквівалентне пошуку екстремумів скалярної функції ; якобіан тепер стає гессіаном . Основна відмінність полягає в тому, що матриця Гессе є симетричною, на відміну від якобіана при визначенні нулів. Більшість використовуваних в оптимізації квазі-Ньютонівських методів користуються цією властивістю.

В оптимізації квазі-Ньютонівські методи (особливий випадок методів змінної метрики) — це алгоритми пошуку локальних максимумів і мінімумів функцій. Квазі-Ньютонівські методи базуються на методі Ньютона для пошуку стаціонарної точки функції, де градієнт дорівнює 0. Метод Ньютона передбачає, що функцію можна локально апроксимувати квадратичною функцією у деякому околі оптимуму, та використовує перші i другі похідні для знаходження точок стаціонарності. У багатовимірних просторах метод Ньютона використовує градієнт та матрицю Гессе других похідних функції, яку потрібно мінімізувати.

У квазі-Ньютонівських методах немає потреби в обчисленні матриці гессіана. Оновлення гессіана здійснюється за допомогою аналізу послідовних векторів градієнта. Квазі-Ньютонівські методи представляють собою узагальнення методу хорд для пошуку кореня першої похідної в багатовимірних задачах. У випадку багатовимірних задач рівняння хорд є недовизначеним[en], і квазі-Ньютонівські методи відрізняються тим, як вони обмежують рішення, зазвичай додаванням простого низькорангового оновлення до поточної оцінки гессіана.

Перший квазі-Ньютонівський алгоритм був запропонований Вільямом К. Давідоном[en], фізиком, який працював в Аргоннській національній лабораторії. Він розробив перший квазі-Ньютонівський алгоритм у 1959 році: формулу оновлення DFP[en], яка пізніше стала популярною завдяки Флетчеру і Пауеллу в 1963 році, але сьогодні рідко використовується. Серед найпоширеніших квазі-Ньютонівських алгоритмів в наш час варто відзначити формулу SR1[en] («симетричний ранг-один»), метод BHHH[en], широко поширений метод BFGS (запропонований незалежно Бройденом, Флетчером, Голдфарбом і Шанно в 1970 році) та його розширення з обмеженим використанням пам'яті L-BFGS[en]. Клас Бройдена представляє собою лінійною комбінацією методів DFP і BFGS.

Формула SR1 не гарантує, що оновлена матриця буде залишатися додатньо-визначеною[en] і може бути використана для невизначених задач. Метод Бройдена не вимагає, щоб оновлена матриця була симетричною і використовується для пошуку кореня загальної системи рівнянь (а не градієнта), оновлюючи якобіан (замість Гессе).

Однією з головних переваг квазі-Ньютонівські методів над методом Ньютона є те, що немає необхідності знаходити обернену матрицю Гессе (або, у випадку квазі-Ньютонівських методів, її наближення) . Метод Ньютона та його похідні, такі як методи внутрішньої точки, вимагають оберненої матриці Гессе, що, зазвичай реалізується шляхом розв'язання системи лінійних рівнянь, і є витратним процесом. На відміну від цього, квазі-Ньютонівські методи зазвичай генерують безпосередню оцінку матриці .

Як і в методі Ньютона, використовується апроксимація другого порядку для пошуку мінімуму функції . Ряд Тейлора в околі ітеративної точки виглядає наступним чином:

де () — градієнт, а наближення матриці Гессе.[4] Градієнт цієї апроксимації (відносно ) виглядає наступним чином:

і встановлення цього градієнту рівним нулю (що є метою оптимізації) дає крок Ньютона:

Наближення матриці Гессе обирається так, щоб задовольнити умовний вираз:

який називається рівнянням хорд (ряд Тейлора градієнта). У багатовимірному випадку матриця недостатньо визначена[en]. В одновимірному випадку розв'язання для та застосування кроку Ньютона з оновленою величиною еквівалентне методу хорд. Квазі-Ньютонові методи відрізняються своїм вибором розв'язку рівняння хорди (у одновимірному випадку всі варіанти еквівалентні). Більшість методів (але є винятки, такі як метод Бройдена) шукають симетричний розв'язок (); крім того, варіанти, що перелічено нижче, можуть бути обгрунтовані пошуком оновлення яке якомога ближче до за якоюсь нормою; тобто, , де  — це деяка додатньо-визначена матриця[en], яка визначає норму. Приблизне початкове значення часто є достатнім для швидкої збіжності, хоча немає загальної стратегії вибору .[5] Зверніть увагу, що повинна бути додатньо-визначеною. Невідомий оновлюється застосуванням кроку Ньютона, розрахованого за допомогою поточної приблизної матриці Гессе :

  • , де , обрано так, щоб задовольняти умовам Вольфе;
  • ;
  • Градієнт, обчислений у новій точці , та

використовується для оновлення наближення матриці Гессе , або безпосередньо її оберненої матриці за допомогою формули Шермана-Морісона[en].

  • Ключовою властивістю оновлень BFGS і DFP є те, що якщо є додатньо-визначеною, і обрано так, щоб задовольняти умовам Вольфе також є додатньо-визначеною.

Найпопулярніші формули оновлення:

Метод
BFGS
Бройден
Сімейство Бройдена
DFP[en]
SR1[en]

Інші методи включають метод Пірсона, метод Маккорміка, симетричний метод Бройдена Пауелла (PSB) та метод Грінштадта.[2]

Зв'язок з оберненою матрицею[ред. | ред. код]

Коли функція є опуклою квадратичною функцією з додатно-визначеною матрицею Гессе , можна очікувати, що матриці створені квазі-Ньютоновським методом, будуть збігатися до оберненої матриці Гессе . Це дійсно так для класу квазі-Ньютоновських методів, які ґрунтуються на оновленнях з мінімальними змінами.[6]

Відомі реалізації[ред. | ред. код]

Реалізації квазі-Ньютоновських методів доступні в багатьох мовах програмування.

Серед реалізації з відкритим кодом найбільше відомі такі:

  • GNU Octave використовую модифікацію BFGS у своїй функції fsolve з додаванням областей довіри[en].
  • GNU Scientific Library реалізує алгоритм Бройдена-Флетчера-Голдфарба-Шанно (BFGS).
  • ALGLIB[en] реалізує (L)BFGS мовами програмування C++ та C#
  • у R загальнозначущий оптимізатор, реалізований в функції optim, використовує метод BFGS з параметром method="BFGS".[7]
  • Scipy.optimize містить функцію fmin_bfgs. У бібліотеці SciPy для мови програмування Python, функція scipy.optimize.minimize включає, серед інших методів, реалізацію BFGS.[8]

Серед реалізацій з власницьким кодом найбільш відомі такі:

  • Mathematica включає рішення з використанням квазі-Ньютонівських методів.[9]
  • Бібліотека NAG[en] містить кілька процедур[10] для мінімізації або максимізації функції[11], які використовують квазі-Ньютонівські алгоритми.
  • У MATLAB Optimization Toolbox[en], функція fminunc використовує (поміж інших методів) квазі-Ньютонівський метод BFGS.[12] Багато з обмежених методів також використовують BFGS та його варіант L-BFGS[en].[13]

Див. також[ред. | ред. код]

Список літератури[ред. | ред. код]

  1. Broyden, C. G. (1972). Quasi-Newton Methods. У Murray, W. (ред.). Numerical Methods for Unconstrained Optimization. London: Academic Press. с. 87—106. ISBN 0-12-512250-0.
  2. а б в Haelterman, Rob (2009). Analytical study of the Least Squares Quasi-Newton method for interaction problems. PhD Thesis, Ghent University. Процитовано 14 серпня 2014.
  3. Rob Haelterman; Dirk Van Eester; Daan Verleyen (2015). Accelerating the solution of a physics model inside a tokamak using the (Inverse) Column Updating Method. Journal of Computational and Applied Mathematics. 279: 133—144. doi:10.1016/j.cam.2014.11.005.
  4. Introduction to Taylor's theorem for multivariable functions - Math Insight. mathinsight.org. Процитовано 11 листопада 2021.
  5. Nocedal, Jorge; Wright, Stephen J. (2006). Numerical Optimization. New York: Springer. с. 142. ISBN 0-387-98793-2.
  6. Robert Mansel Gower; Peter Richtarik (2015). «Randomized Quasi-Newton Updates are Linearly Convergent Matrix Inversion Algorithms». arXiv:1602.01768 [math.NA]. 
  7. optim function - RDocumentation. www.rdocumentation.org (англ.). Процитовано 21 лютого 2022.
  8. Scipy.optimize.minimize — SciPy v1.7.1 Manual.
  9. Unconstrained Optimization: Methods for Local Minimization—Wolfram Language Documentation. reference.wolfram.com. Процитовано 21 лютого 2022.
  10. The Numerical Algorithms Group. Keyword Index: Quasi-Newton. NAG Library Manual, Mark 23. Процитовано 9 лютого 2012.
  11. The Numerical Algorithms Group. E04 – Minimizing or Maximizing a Function (PDF). NAG Library Manual, Mark 23. Процитовано 9 лютого 2012.
  12. Find minimum of unconstrained multivariable function - MATLAB fminunc.
  13. Constrained Nonlinear Optimization Algorithms - MATLAB & Simulink. www.mathworks.com. Процитовано 21 лютого 2022.

Додаткові матеріали[ред. | ред. код]