Метод сопряженных градиентов - Conjugate gradient method

Сравнение сходимости градиентный спуск с оптимальным размером шага (зеленым) и сопряженным вектором (красным) для минимизации квадратичной функции, связанной с данной линейной системой. Сопряженный градиент, предполагающий точную арифметику, сходится не более чем за п шаги, где п - размер матрицы системы (здесь п = 2).

В математика, то метод сопряженных градиентов является алгоритм для численное решение особого системы линейных уравнений, а именно те, матрица которых симметричный и положительно определенный. Метод сопряженных градиентов часто реализуется как итерационный алгоритм, применимый к редкий системы, которые слишком велики, чтобы их можно было обрабатывать с помощью прямой реализации или других прямых методов, таких как Разложение Холецкого. Большие разреженные системы часто возникают при численном решении уравнения в частных производных или проблемы с оптимизацией.

Метод сопряженных градиентов также может использоваться для решения неограниченных оптимизация такие проблемы как минимизация энергии. В основном он был разработан Магнус Хестенес и Эдуард Штифель,[1][2] кто запрограммировал это на Z4.[3]

В метод двусопряженных градиентов обеспечивает обобщение на несимметричные матрицы. Разные нелинейные методы сопряженных градиентов искать минимумы нелинейных уравнений.

Описание проблемы, решаемой сопряженными градиентами

Предположим, мы хотим решить система линейных уравнений

для вектора Икс, где известные п × п матрица А является симметричный (т.е. АТ = А), положительно определенный (т.е. ИксТТопор > 0 для всех ненулевых векторов Икс в рп), и настоящий, и б также известен. Обозначим единственное решение этой системы через .

Как прямой метод

Мы говорим, что два ненулевых вектора ты и v находятся сопрягать (относительно А) если

С А симметрична и положительно определена, левая часть определяет внутренний продукт

Два вектора сопряжены тогда и только тогда, когда они ортогональны относительно этого внутреннего продукта. Сопряжение является симметричным отношением: если ты сопряжен с v, тогда v сопряжен с ты. Предположим, что

это набор п взаимно сопряженные векторы (относительно А). потом п образует основа за , и мы можем выразить решение Икс из в этой основе:

На основе этого расширения мы вычисляем:

Умножение слева на :

замена и :

тогда и используя дает

что подразумевает

Это дает следующий метод решения уравнения Топор = б: найти последовательность п сопряженных направлений, а затем вычислить коэффициенты αk.

Как итерационный метод

Если выбрать сопряженные векторы пk внимательно, тогда нам могут не понадобиться все они для получения хорошего приближения к решению Икс. Итак, мы хотим рассматривать метод сопряженных градиентов как итерационный метод. Это также позволяет нам приближенно решать системы, в которых п настолько велик, что прямой метод занял бы слишком много времени.

Обозначим начальное предположение для Икс к Икс0 (без ограничения общности можно считать, что Икс0 = 0, иначе рассмотрим систему Аз = бТопор0 вместо). Начиная с Икс0 мы ищем решение, и на каждой итерации нам нужна метрика, чтобы сказать нам, ближе ли мы к решению Икс (что нам неизвестно). Эта метрика исходит из того факта, что решение Икс также является уникальным минимизатором следующих квадратичная функция

Существование единственного минимизатора очевидно, поскольку его вторая производная задается симметричной положительно определенной матрицей

и что минимизатор (используйте Dж(Икс) = 0) решает исходную задачу, очевидно из ее первой производной

Это предлагает взять первый базисный вектор п0 быть отрицательным градиентом ж в Икс = Икс0. Градиент ж равно Топорб. Начиная с первоначального предположения Икс0, это означает, что мы берем п0 = бТопор0. Остальные векторы в базисе будут сопряжены с градиентом, отсюда и название метод сопряженных градиентов. Обратите внимание, что п0 также остаточный обеспечивается этим начальным шагом алгоритма.

Позволять рk быть остаточный на kшаг:

Как отмечалось выше, рk отрицательный градиент ж в Икс = Иксk, Итак градиентный спуск метод потребует движения в направлении рk. Однако здесь мы настаиваем на том, чтобы направления пk быть сопряженными друг другу. Практический способ обеспечить это - требовать, чтобы следующее направление поиска строилось из текущего остатка и всех предыдущих направлений поиска.[4] Это дает следующее выражение:

(см. рисунок вверху статьи, чтобы увидеть влияние ограничения сопряженности на сходимость). Следуя этому направлению, следующее оптимальное местоположение задается

с

где последнее равенство следует из определения рk .Выражение для можно получить, если подставить выражение для Иксk+1 в ж и минимизировать его по сравнению с

Результирующий алгоритм

Вышеупомянутый алгоритм дает наиболее прямое объяснение метода сопряженных градиентов. По-видимому, заявленный алгоритм требует хранения всех предыдущих направлений поиска и векторов остатков, а также множества операций умножения матрицы на вектор и, следовательно, может быть дорогостоящим в вычислительном отношении. Однако более внимательный анализ алгоритма показывает, что ря ортогонален рj , т.е. , для i ≠ j. И пя A-ортогонален пj , т.е. , для i ≠ j. Это можно считать, что по мере продвижения алгоритма пя и ря охватить то же самое Крыловское подпространство. Где ря образуют ортогональный базис по отношению к стандартному внутреннему продукту, и пя образуют ортогональный базис относительно внутреннего произведения, индуцированного A. Следовательно, Иксk можно рассматривать как проекцию Икс на подпространстве Крылова.

Алгоритм подробно описан ниже для решения Топор = б куда А - вещественная симметричная положительно определенная матрица. Входной вектор Икс0 может быть приближенным начальным решением или 0. Это другая формулировка точной процедуры, описанной выше.

Это наиболее часто используемый алгоритм. Та же формула для βk также используется в методике Флетчера – Ривза нелинейный метод сопряженных градиентов.

Вычисление альфа и бета

В алгоритме αk выбирается так, что ортогонален рk. Знаменатель упрощен из

поскольку . В βk выбирается так, что сопряжен с пk. Первоначально, βk является

с помощью

и эквивалентно

числитель βk переписывается как

потому что и рk ортогональны по конструкции. Знаменатель переписывается как

используя это направление поиска пk сопряжены, и снова остатки ортогональны. Это дает β в алгоритме после отмены αk.

Пример кода в MATLAB / GNU Octave

функцияИкс =конград(А, б, х)р = б - А * Икс;    п = р;    продано = р' * р;    за i = 1: длина (b)        Ap = А * п;        альфа = продано / (п' * Ap);        Икс = Икс + альфа * п;        р = р - альфа * Ap;        rsnew = р' * р;        если sqrt (rsnew) <1e-10              переменаконец        п = р + (rsnew / продано) * п;        продано = rsnew;    конецконец

Числовой пример

Рассмотрим линейную систему Топор = б данный

мы выполним два шага метода сопряженных градиентов, начиная с первоначального предположения

для того, чтобы найти приблизительное решение системы.

Решение

Для справки, точное решение

Наш первый шаг - вычислить остаточный вектор р0 связана с Икс0. Этот остаток вычисляется по формуле р0 = б - Топор0, а в нашем случае равно

Поскольку это первая итерация, мы будем использовать остаточный вектор р0 как наше начальное направление поиска п0; метод выбора пk изменится в дальнейших итерациях.

Теперь вычислим скаляр α0 используя отношения

Теперь мы можем вычислить Икс1 используя формулу

Этот результат завершает первую итерацию, результатом которой является «улучшенное» приближенное решение системы, Икс1. Теперь мы можем двигаться дальше и вычислить следующий остаточный вектор р1 используя формулу

Наш следующий шаг в этом процессе - вычислить скаляр β0 который в конечном итоге будет использоваться для определения следующего направления поиска п1.

Теперь, используя этот скаляр β0, мы можем вычислить следующее направление поиска п1 используя отношения

Теперь вычислим скаляр α1 используя наши недавно приобретенные п1 используя тот же метод, что и для α0.

Наконец, мы находим Икс2 используя тот же метод, что и для поиска Икс1.

Результат, Икс2, является "лучшим" приближением к решению системы, чем Икс1 и Икс0. Если бы в этом примере использовалась точная арифметика вместо ограниченной точности, то точное решение теоретически было бы достигнуто после п = 2 итерации (п порядок системы).

Свойства сходимости

Теоретически метод сопряженных градиентов можно рассматривать как прямой метод, так как он дает точное решение после конечного числа итераций, которое не превышает размер матрицы, в отсутствие ошибка округления. Однако метод сопряженных градиентов неустойчив по отношению даже к небольшим возмущениям, например, большинство направлений на практике не являются сопряженными, и точное решение никогда не получается. К счастью, метод сопряженных градиентов можно использовать как итерационный метод поскольку он обеспечивает монотонно улучшающиеся приближения к точному решению, которое может достичь требуемого допуска после относительно небольшого (по сравнению с размером задачи) количества итераций. Улучшение обычно линейное, и его скорость определяется номер условия матрицы системы : больший есть, тем медленнее улучшение.[5]

Если большой, предварительная подготовка используется для замены оригинальной системы с такой, что меньше чем , Смотри ниже.

Теорема сходимости

Определим подмножество многочленов как

куда это набор многочлены максимальной степени .

Позволять - итерационные приближения точного решения , и определим ошибки как Теперь скорость сходимости можно аппроксимировать как [6]

куда обозначает спектр, и обозначает номер условия.

Обратите внимание на важный предел, когда как правило

Этот предел показывает более высокую скорость сходимости по сравнению с итерационными методами Якоби или же Гаусс-Зейдель которые масштабируются как .

Предварительно обусловленный метод сопряженных градиентов

В большинстве случаев, предварительная подготовка необходимо для обеспечения быстрой сходимости метода сопряженных градиентов. Предварительно обусловленный метод сопряженных градиентов имеет следующий вид:[7]

повторение
если рk+1 достаточно мал тогда цикл выхода конец, если
конец повторения
Результат Иксk+1

Приведенная выше формулировка эквивалентна применению метода сопряженных градиентов без предварительного кондиционирования системы.[1]

куда

Матрица предобуславливателя M должен быть симметричным положительно определенным и фиксированным, т. е. не может изменяться от итерации к итерации. Если какое-либо из этих предположений о предварительном кондиционере нарушается, поведение метода предварительно обусловленного сопряженного градиента может стать непредсказуемым.

Пример часто используемого предварительный кондиционер это неполная факторизация Холецкого.[8]

Гибкий предварительно обусловленный метод сопряженных градиентов

В сложных числовых приложениях используются сложные предварительные условия, которые могут приводить к предварительному кондиционированию переменных, изменяющемуся между итерациями. Даже если предобуславливатель является симметричным положительно определенным на каждой итерации, тот факт, что он может измениться, делает приведенные выше аргументы недействительными и в практических тестах приводит к значительному замедлению сходимости алгоритма, представленного выше. С использованием Полак – Рибьер формула

вместо Флетчер – Ривз формула

может значительно улучшить сходимость в этом случае.[9] Эту версию метода предобусловленных сопряженных градиентов можно назвать[10] гибкий, поскольку это позволяет предварительное кондиционирование переменных. Также показана гибкая версия[11] быть устойчивым, даже если предобуславливатель не является симметричным положительно определенным (SPD).

Реализация гибкой версии требует хранения дополнительного вектора. Для фиксированного предварительного кондиционера SPD, поэтому обе формулы для βk эквивалентны в точной арифметике, т.е. без ошибка округления.

Математическое объяснение поведения лучшей сходимости метода с Полак – Рибьер формула заключается в том, что метод локально оптимальный в этом случае, в частности, он не сходится медленнее, чем метод локально оптимального наискорейшего спуска.[12]

Пример кода в MATLAB / GNU Octave

функция[x, k] =cgp(x0, A, C, b, мит, stol, bbA, bbC)% Сводка:% x0: начальная точка% A: Матрица A системы Ax = b% C: матрица предварительной подготовки может быть левой или правой% mit: максимальное количество итераций% stol: остаток нормы толерантности% bbA: Черный ящик, который вычисляет произведение матрица-вектор для A * u% bbC: Черный ящик, который вычисляет:% для левого предобуславливателя: ha = C  ra% для правого прекондиционера: ha = C * ra% x: расчетная точка решения% k: количество выполненных итераций %% Пример:% tic; [x, t] = cgp (x0, S, speye (1), b, 3000, 10 ^ -8, @ (Z, o) Z * o, @ (Z, o) o); toc% Истекшее время составляет 0,550190 секунд.%% Ссылка:% Métodos iterativos tipo Krylov para sistema lineales% Б. Молина и М. Райдан - {{ISBN | 908-261-078-X}}        если nargin <8, error ("Недостаточно входных аргументов. Попробуйте помочь."); конец;        если isempty (A), error ('Входная матрица A не должна быть пустой.'); конец;        если isempty (C), error ('Входная матрица предобуславливателя C не должна быть пустой.'); конец;        Икс = x0;        ха = 0;        л.с. = 0;        hpp = 0;        ра = 0;        rp = 0;        rpp = 0;        ты = 0;        k = 0;        ра = б - BBA(А, x0); % <--- ra = b - A * x0;        пока norm (ra, inf)> stol                ха = BBC(C, ра); % <--- ha = C  ra;                k = k + 1;                если (k == мит), предупреждение("GCP: MAXIT", «Достигнуто, конверсии нет».); возвращаться; конец;                hpp = л.с.;                rpp = rp;                л.с. = ха;                rp = ра;                т = rp' * л.с.;                если к == 1                        ты = л.с.;                ещеu = hp + (t / (rpp '* hpp)) * u;                конец;                Au = bbA (A, u); % <--- Au = A * u;                а = t / (u '* Au);                Икс = Икс + а * ты;                ра = rp - а * Au;        конец;

Против. местный оптимальный метод наискорейшего спуска

Как в исходном, так и в предварительно обусловленном методах сопряженного градиента нужно только установить чтобы сделать их локально оптимальными, используя линейный поиск, крутой спуск методы. При такой замене векторы п всегда такие же, как векторы z, поэтому нет необходимости хранить векторы п. Таким образом, каждая итерация этих крутой спуск методы немного дешевле по сравнению с методами сопряженных градиентов. Однако последние сходятся быстрее, если только (сильно) переменная и / или не-SPD предварительный кондиционер используется, см. выше.

Вывод метода

Метод сопряженного градиента может быть получен с нескольких различных точек зрения, включая специализацию метода сопряженного направления для оптимизации и изменение Арнольди /Ланцош итерация для собственное значение проблемы. Несмотря на различия в подходах, эти выводы имеют общую тему - доказательство ортогональности остатков и сопряженности направлений поиска. Эти два свойства имеют решающее значение для разработки хорошо известной лаконичной формулировки метода.

Метод сопряженного градиента также может быть получен с использованием теория оптимального управления.[13] В этом подходе метод сопряженных градиентов выпадает как контроллер оптимальной обратной связи,

для система двойного интегратора,
Количество и - переменные коэффициенты усиления обратной связи.[13]

Сопряженный градиент на нормальных уравнениях

Метод сопряженных градиентов можно применять к произвольным п-к-м матрицу, применив ее к нормальные уравнения АТА и правый вектор АТб, поскольку АТА симметричный положительно-полуопределенный матрица для любых А. Результатом является сопряженный градиент нормальных уравнений (CGNR).

АТТопор = АТб

В качестве итеративного метода необязательно формировать АТА явно в памяти, но только для выполнения умножения матрицы на вектор и транспонирования матрицы на вектор. Следовательно, CGNR особенно полезен, когда А это разреженная матрица поскольку эти операции обычно чрезвычайно эффективны. Однако обратная сторона формирования нормальных уравнений состоит в том, что номер условия κ (АТА) равно κ2(А), поэтому скорость сходимости CGNR может быть низкой, а качество приближенного решения может быть чувствительным к ошибкам округления. В поисках хорошего предварительный кондиционер часто является важной частью использования метода CGNR.

Было предложено несколько алгоритмов (например, CGLS, LSQR). Предполагается, что алгоритм LSQR имеет лучшую численную стабильность, когда А плохо обусловлен, т.е. А имеет большой номер условия.

Смотрите также

Рекомендации

  1. ^ Hestenes, Магнус Р.; Штифель, Эдуард (Декабрь 1952 г.). «Методы сопряженных градиентов для решения линейных систем». Журнал исследований Национального бюро стандартов. 49 (6): 409. Дои:10.6028 / jres.049.044.
  2. ^ Straeter, T.A. (1971). «О расширении класса Дэвидона – Бройдена ранга один, методов квазиньютоновской минимизации на бесконечномерное гильбертово пространство с приложениями к задачам оптимального управления». Сервер технических отчетов НАСА. НАСА. HDL:2060/19710026200.
  3. ^ Шпайзер, Амброс (2004). "Конрад Цузе унд ди ЭРМЕТ: Ein weltweiter Architektur-Vergleich" [Конрад Цузе и ERMETH: всемирное сравнение архитектур]. В Hellige, Ганс Дитер (ред.). Geschichten der Informatik. Visionen, Paradigmen, Leitmotive (на немецком). Берлин: Springer. п. 185. ISBN  3-540-00217-0.
  4. ^ Ограничение сопряжения является ограничением ортонормированного типа, и, следовательно, алгоритм имеет сходство с Ортонормализация Грама-Шмидта.
  5. ^ Саад, Юсеф (2003). Итерационные методы для разреженных линейных систем (2-е изд.). Филадельфия, Пенсильвания: Общество промышленной и прикладной математики. стр.195. ISBN  978-0-89871-534-7.
  6. ^ Hackbusch, W. (21.06.2016). Итерационное решение больших разреженных систем уравнений (2-е изд.). Швейцария: Шпрингер. ISBN  9783319284835. OCLC  952572240.
  7. ^ Барретт, Ричард; Берри, Майкл; Чан, Тони Ф .; Деммель, Джеймс; Донато, июнь; Донгарра, Джек; Эйджхут, Виктор; Посо, Ролдан; Ромайн, Чарльз; ван дер Ворст, Хенк. Шаблоны для решения линейных систем: строительные блоки для итерационных методов (PDF) (2-е изд.). Филадельфия, Пенсильвания: SIAM. п. 13. Получено 2020-03-31.
  8. ^ Concus, P .; Голуб, Г. Х .; Меурант, Г. (1985). «Блок предварительной подготовки для метода сопряженных градиентов». Журнал SIAM по научным и статистическим вычислениям. 6 (1): 220–252. Дои:10.1137/0906018.
  9. ^ Golub, Gene H .; Е, Цян (1999). «Метод неточного предварительно обусловленного сопряженного градиента с внутренней и внешней итерацией». Журнал SIAM по научным вычислениям. 21 (4): 1305. CiteSeerX  10.1.1.56.1755. Дои:10.1137 / S1064827597323415.
  10. ^ Notay, Иван (2000). «Гибкие сопряженные градиенты». Журнал SIAM по научным вычислениям. 22 (4): 1444–1460. CiteSeerX  10.1.1.35.7473. Дои:10.1137 / S1064827599362314.
  11. ^ Хенрикус Боумистер, Эндрю Догерти, Эндрю В. Князев. Несимметричное предварительное кондиционирование для методов сопряженного градиента и наискорейшего спуска. Процедуры информатики, том 51, страницы 276-285, Elsevier, 2015. https://doi.org/10.1016/j.procs.2015.05.241
  12. ^ Князев, Андрей В .; Лашук, Илья (2008). «Наилучший спуск и методы сопряженного градиента с переменной предварительной подготовкой». Журнал SIAM по матричному анализу и приложениям. 29 (4): 1267. arXiv:математика / 0605767. Дои:10.1137/060675290. S2CID  17614913.
  13. ^ а б Росс, И.М., "Теория оптимального управления для ускоренной оптимизации", arXiv:1902.09004, 2019.

дальнейшее чтение

внешняя ссылка