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

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

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

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

Идея метода

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

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

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

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

(2) bk=(1J(uk,dkJ(uk),dk)1,uk.

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

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

 bkdk=H1Jk,

т.е. Шаблон: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)||sJ(uk)||J(uk)||=0n,

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

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

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

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

(5) Hlplr(ukh)r(ukl)h/||pl||,

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

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

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

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

(7) δk=max[min(δk1||J(uk)||||J(uk1)||,δ0),δm],k>0.

Необходимо ||ukluk||δm,l1. Здесь малое положительное число δm заметно больше машинного эпсилон.

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

  1. ||rl||c12,0c1<1 — достигнута точность;
  2. |||rl||||rl1||||rl|||c1,l>1 — прекратилась сходимость;
  3. llmax=integer|c2lnc1lnn|,c21 — избыточность подитераций.

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

  • Параметры: c1,c2,δ0,δm=1015δ0,h=105.
  • Входные данные: 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 или llmax, или ||ukluk||<δm, или {l>1 и |||rl||||rl1||||rl|||c1}, то принимаем uk=ukl, возвращаем J(uk), dk=(ukuk), Шаблон:Font color.
  5. Если l1,n,2n,3n, задаём βl=||rl||2/||rl1||2, иначе βl=0.
  6. Вычисляем pl=rl+βlpl1.
  7. Находим шаговый множитель τl для подитераций:
    1. запоминаем ukl, Jl, ||Jl||, rl, ||rl||;
    2. задаём ukh=ukl+hpl/||pl||, вычисляем J(ukh), r(ukh) и находим Hlpl из (5), присваиваем wpl,Hlpl;
    3. если w=0, тогда h10h, возвращаемся к шагу 7.2;
    4. восстанавливаем ukl, Jl, ||Jl||, rl, ||rl||;
    5. находим τl=||rl||2/w.
  8. Делаем подитерацию ukl+1 из (4).
  9. ll+1, переходим к шагу 3.

Параметр c2=3÷5. Для функций без седловых точек рекомендуется c1108, δ105. Для «обхода» седловых точек рекомендуется c10.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=108, c2=4. Для всех u0 потребовалась одна итерация и подитераций l не более двух.

При n=1000 (параметр δ0=105) с начальной точкой 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(u12u2)2+(u11)2,u=(1,1).

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

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

J(u)=(u12+u211)2+(u1+u227)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)