Метод коллинеарных градиентов

Материал из testwiki
Перейти к навигации Перейти к поиску

Метод коллинеарных градиентов (МКГ)[1] — итерационный метод направленного поиска локального экстремума гладкой функции многих переменных J(u):ℝn→ℝ с движением к экстремуму вдоль вектора d∈ℝn такого, где градиенты ∇J(u) и ∇J(u+d) коллинеарные. Это метод перового порядка (использует только первые производные ∇J) с квадратичной скоростью сходимости. Может применяться к функциям высокой размерности n с несколькими локальными экстремумами. МКГ можно отнести к семейству методов Truncated Newton method

Коллинеарные векторы ∇J(uk) и ∇J(uk∗) с направлением минимизации dk для выпуклой квадратичной функции, n=2

Идея метода

Для гладкой функции J(u) в относительно большой окрестности точки uk найдётся точка uk∗, где градиенты ∇Jk=def∇J(uk) и ∇Jk∗=def∇J(uk∗) коллинеарные. Направлением на экстремум u∗ из точки uk будет направление dk=(uk∗−uk). Вектор dk указывает на максимум или на минимум в зависимости от положения точки uk∗. Она может быть спереди или сзади от uk относительно направления на u∗ (см. рисунок). Далее будем рассматривать минимизацию.

Очередная Шаблон:Font color:

(1) uk+1=uk+bkdk,k∈{0,1…},

где оптимальное bk∈ℝ находится аналитически из предположения квадратичности одномерной функции J(uk+bdk):

(2) bk=(1−⟨∇J(uk∗,dk⟩⟨∇J(uk),dk⟩)−1,∀uk∗.

Угловые скобки — это скалярное произведение в евклидовом пространстве ℝn. Если J(u) выпуклая функция в окрестности uk, то для передней точки uk∗ получаем число bk>0, для задней bk<0. Делаем шаг (1).

Для строго выпуклой квадратичной функции J(u) Шаблон:Font color

 bkdk=−H−1∇Jk,

т.е. Шаблон:Font color (метод второго порядка с квадратичной скоростью сходимости), где H — матрица Гессе. Такие шаги обеспечивают МКГ квадратичную скорость сходимости.

В общем случае, если J(u) имеет переменную выпуклость и возможны седловые точки, то следует контролировать направление минимизации по углу γ между векторами ∇Jk и dk. Если cos⁡(γ)=⟨∇Jk,dk⟩||∇J(uk)||||dk||≥0, то dk — это направление максимизации и в (1) следует брать bk с обратным знаком.

Поиск коллинеарных градиентов

Шаблон:Font color оценивается невязкой их ортов, которая имеет вид системы n уравнений для поиска корня u=uk∗:

(3) rk(u)=∇J(u)||∇J(u)||s−∇J(uk)||∇J(uk)||=0∈ℝn,

где знак s=sgn⁡⟨∇J(u),∇J(uk)⟩ позволяет одинаково оценивать коллинеарность градиентов по одну или разные стороны от минимума u∗, ||rk(u)||≤2.

Система (3) решается итерационно (подитерации l) методом сопряжённых градиентов в предположении, что она линейна в окрестности uk:

(4) ukl+1=ukl+τlpl,l=1,2…,

где вектор pl=defp(ukl)=−rl+βlpl−1, rl=defr(ukl), βl=||rl||2/||rl−1||2, β1,n,2n...=0, τl=||rl||2/⟨pl,Hlpl⟩, произведение матрицы Гессе Hl на pl находится численным дифференцированием:

(5) Hlpl≈r(ukh)−r(ukl)h/||pl||,

где ukh=ukl+hpl/||pl||, h — малое положительное число такое, что ⟨pl,Hlpl⟩≠0.

Начальное приближение задаётся под 45° ко всем осям координат длинной δk:

(6) uik1=uik+δknsgn⁡ ∇iJk,i=1…n.

Начальный радиус δk-окрестности точки uk корректируется:

(7) δk=max⁡[min⁡(δk−1||∇J(uk)||||∇J(uk−1)||,δ0),δm],k>0.

Необходимо ||ukl−uk||≥δm,l≥1. Здесь малое положительное число δm заметно больше машинного эпсилон.

Подитерации l завершаются при выполнении хотя бы одного из условий:

  1. ||rl||≤c12,0≤c1<1 — достигнута точность;
  2. |||rl||−||rl−1||||rl|||≤c1,l>1 — прекратилась сходимость;
  3. l≤lmax=integer⁡|c2ln⁡c1ln⁡n|,c2≥1 — избыточность подитераций.

Алгоритм выбора направления минимизации

  • Параметры: c1,c2,δ0,δm=10−15δ0,h=10−5.
  • Входные данные: n,k=0,uk,J(uk),∇J(uk),∇Jk.
  1. l=1. Если k>0 задаём δk из (7).
  2. Находим ukl из (6).
  3. Вычисляем ∇Jl,||∇Jl|| и находим rl из (3) при u=ukl.
  4. Если ||rl||≤c12 или l≥lmax, или ||ukl−uk||<δm, или {l>1 и |||rl||−||rl−1||||rl|||≤c1}, то принимаем uk∗=ukl, возвращаем ∇J(uk∗), dk=(uk∗−uk), Шаблон:Font color.
  5. Если l≠1,n,2n,3n…, задаём βl=||rl||2/||rl−1||2, иначе βl=0.
  6. Вычисляем pl=−rl+βlpl−1.
  7. Находим шаговый множитель τl для подитераций:
    1. запоминаем ukl, ∇Jl, ||∇Jl||, rl, ||rl||;
    2. задаём ukh=ukl+hpl/||pl||, вычисляем ∇J(ukh), r(ukh) и находим Hlpl из (5), присваиваем w←⟨pl,Hlpl⟩;
    3. если w=0, тогда h←10h, возвращаемся к шагу 7.2;
    4. восстанавливаем ukl, ∇Jl, ||∇Jl||, rl, ||rl||;
    5. находим τl=||rl||2/w.
  8. Делаем подитерацию ukl+1 из (4).
  9. l←l+1, переходим к шагу 3.

Параметр c2=3÷5. Для функций без седловых точек рекомендуется c1≈10−8, δ≈10−5. Для «обхода» седловых точек рекомендуется c1≈0.1, δ≈0.1.

Описанный алгоритм позволяет приблизительно найти коллинеарные градиенты из системы уравнений (3). Полученное направление bkdk для алгоритма МКГ (1) будет Шаблон:Font color (truncated Newton method).

Демонстрации[2]

Во всех демонстрациях МКГ показывает сходимость не хуже, а иногда и лучше (для функций переменной выпуклости), чем метод Ньютона.

Тестовая функция «повёрнутый эллипсоид»

Строго выпуклая квадратичная функция:

Минимизация МКГ, n=2
J(u)=∑i=1n(∑j=1iuj)2,u∗=(0...0).

На рисунке для n=2 заданы три чёрные стартовые точки u0. Серые точки — подитерации u0l с δ0=0.5 (показано пунктиром, завышено для демонстрации). Параметры c1=10−8, c2=4. Для всех u0 потребовалась одна итерация и подитераций l не более двух.

При n=1000 (параметр δ0=10−5) с начальной точкой u0=(−1...1) МКГ достиг u∗ с точностью 1 % за 3 итерации и 754 вычисления J и ∇J. Другие методы первого порядка: Квазиньютоновский BFGS (работа с матрицами) потребовал 66 итераций и 788 вычислений; сопряжённых градиентов (Fletcher-Reeves) — 274 итерации и 2236 вычислений; конечно-разностный метод Ньютона — 1 итерация и 1001 вычислений. Метод Ньютона второго порядка — 1 итерация.

С ростом размерности n, вычислительные погрешности при реализации условия коллинеарности (3), могут заметно возрастать. Поэтому МКГ, по сравнению с методом Ньютона, в рассматриваемом примере потребовал более одной итерации.

Минимизация МКГ и методом Ньютона: 3 итерации. МКГ сделал 16 вычислений J и ∇J

Тестовая функция Розенброка

J(u)=100(u12−u2)2+(u1−1)2,u∗=(1,1).

Параметры c1=10−8, c2=4, δ0=10−5. Траектория спуска МКГ полностью совпадает с методом Ньютона. На рисунке синяя начальная точка u0=(−0.8;−1.2), красная — u∗. В каждой точке нарисованы орты градиентов.

Тестовая функция Химмельблау

J(u)=(u12+u2−11)2+(u1+u22−7)2.

Параметры c1=0.1, c2=4, δ0=0.05.

Минимизация МКГ: 7 итераций и 22 вычисления J и ∇J. Красные линии — cos⁡γ≥0.
Минимизация методом Ньютона: 9 итераций (bk=1)
Метод сопряжённых градиентов (Fletcher-Reeves): 9 итерации и 62 вычисления J и ∇J
Квазиньютоновский BFGS: 6 итераций и 55 вычислений J и ∇J. Красная линия (нарушение условия кривизны) — метод наискорейшего спуска.

Шаблон:Font color по количеству вычислений J и ∇J. Благодаря формуле (2), он не требует затратных вычислений шагового множителя bk посредством линейного поиска (например, методом золотого сечения и т.п.).

Примечания

Шаблон:Примечания

  1. ↑ Tolstykh V.K. Collinear Gradients Method for Minimizing Smooth Functions // Oper. Res. Forum. — 2023. — Vol. 4. — No. 20. — doi: s43069-023-00193-9
  2. ↑ Tolstykh V.K. Демонстрационное Windows-приложение Optimization (для разархивирования удалите тип .txt)