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

In mathematics, the conjugate gradient method is an algorithm for the numerical solution of particular systems of linear equations, namely those whose matrix is positive-definite. The conjugate gradient method is often implemented as an iterative algorithm, applicable to sparse systems that are too large to be handled by a direct implementation or other direct methods such as the Cholesky decomposition. Large sparse systems often arise when numerically solving partial differential equations or optimization problems.

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

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

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

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

для вектора , где известная матрица является симметричной (т. е. A T = A ), положительно определенной (т. е. x T Ax > 0 для всех ненулевых векторов в R n ) и действительной , и также известна. Обозначим единственное решение этой системы через .

Деривация как прямой метод [ править ]

The conjugate gradient method can be derived from several different perspectives, including specialization of the conjugate direction method for optimization, and variation of the Arnoldi/Lanczos iteration for eigenvalue problems. Despite differences in their approaches, these derivations share a common topic—proving the orthogonality of the residuals and conjugacy of the search directions. These two properties are crucial to developing the well-known succinct formulation of the method.

We say that two non-zero vectors u and v are conjugate (with respect to ) if

Since is symmetric and positive-definite, the left-hand side defines an inner product

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

представляет собой набор взаимно сопряженных векторов относительно , т . Тогда образует основу для , и мы можем выразить решение о в этом базисе:

Умножение слева на урожайность

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

Как итеративный метод [ править ]

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

Обозначим начальное предположение для x через x 0 (без ограничения общности можно считать, что x 0 = 0 , иначе вместо этого рассмотрим систему Az = b - Ax 0 ). Начиная с x 0, мы ищем решение, и на каждой итерации нам нужна метрика, чтобы сказать нам, ближе ли мы к решению x (которое нам неизвестно). Эта метрика возникает из того факта, что решение x также является единственным минимизатором следующей квадратичной функции

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

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

Это предлагает принять первый базисный вектор p 0 как отрицательное значение градиента f при x = x 0 . Градиент f равен Ax - b . Начиная с первоначального предположения x 0 , это означает, что мы берем p 0 = b - Ax 0 . Другие векторы в базисе будут сопряжены с градиентом, отсюда и название метод сопряженного градиента . Обратите внимание, что p 0 также является невязкой, обеспечиваемой этим начальным шагом алгоритма.

Пусть r k - невязка на k- м шаге:

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

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

с участием

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

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

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

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

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

Перезапускается [ править ]

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

Явный расчет невязки [ править ]

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

Вычисление альфа и бета [ править ]

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

since . The βk is chosen such that is conjugated to pk. Initially, βk is

using

and equivalently

the numerator of βk is rewritten as

because and rk are orthogonal by design. The denominator is rewritten as

using that the search directions pk are conjugated and again that the residuals are orthogonal. This gives the β in the algorithm after cancelling αk.

Example code in MATLAB / GNU Octave[edit]

функция  x = конград ( A, b, x )   г = Ь - А * х ;       р = г ;   rsold = r ' * r ;     для i = 1 : длина ( b )    Ap = A * p ;     альфа = rsold / ( p ' * Ap );       х = х + альфа * р ;       r = r - alpha * Ap; rsnew = r' * r; if sqrt(rsnew) < 1e-10 break end p = r + (rsnew / rsold) * p; rsold = rsnew; endend

Numerical example[edit]

Consider the linear system Ax = b given by

we will perform two steps of the conjugate gradient method beginning with the initial guess

in order to find an approximate solution to the system.

Solution[edit]

For reference, the exact solution is

Our first step is to calculate the residual vector r0 associated with x0. This residual is computed from the formula r0 = b - Ax0, and in our case is equal to

Since this is the first iteration, we will use the residual vector r0 as our initial search direction p0; the method of selecting pk will change in further iterations.

We now compute the scalar α0 using the relationship

We can now compute x1 using the formula

This result completes the first iteration, the result being an "improved" approximate solution to the system, x1. We may now move on and compute the next residual vector r1 using the formula

Our next step in the process is to compute the scalar β0 that will eventually be used to determine the next search direction p1.

Now, using this scalar β0, we can compute the next search direction p1 using the relationship

We now compute the scalar α1 using our newly acquired p1 using the same method as that used for α0.

Finally, we find x2 using the same method as that used to find x1.

The result, x2, is a "better" approximation to the system's solution than x1 and x0. If exact arithmetic were to be used in this example instead of limited-precision, then the exact solution would theoretically have been reached after n = 2 iterations (n being the order of the system).

Convergence properties[edit]

The conjugate gradient method can theoretically be viewed as a direct method, as in the absence of round-off error it produces the exact solution after a finite number of iterations, which is not larger than the size of the matrix. In practice, the exact solution is never obtained since the conjugate gradient method is unstable with respect to even small perturbations, e.g., most directions are not in practice conjugate, due to a degenerative nature of generating the Krylov subspaces.

As an iterative method, the conjugate gradient method monotonically (in the energy norm) improves approximations to the exact solution and may reach the required tolerance after a relatively small (compared to the problem size) number of iterations. The improvement is typically linear and its speed is determined by the condition number of the system matrix : the larger is, the slower the improvement.[7]

If is large, preconditioning is commonly used to replace the original system with such that is smaller than , see below.

Convergence theorem[edit]

Define a subset of polynomials as

where is the set of polynomials of maximal degree .

Let be the iterative approximations of the exact solution , and define the errors as . Now, the rate of convergence can be approximated as [4][8]

where denotes the spectrum, and denotes the condition number.

Note, the important limit when tends to

This limit shows a faster convergence rate compared to the iterative methods of Jacobi or Gauss–Seidel which scale as .

No round-off error is assumed in the convergence theorem, but the convergence bound is commonly valid in practice as theoretically explained[5] by Anne Greenbaum.

Practical convergence[edit]

If initialized randomly, the first stage of iterations is often the fastest, as the error is eliminated within the Krylov subspace that initially reflects a smaller effective condition number. The second stage of convergence is typically well defined by the theoretical convergence bound with , but may be super-linear, depending on a distribution of the spectrum of the matrix and the spectral distribution of the error.[5] In the last stage, the smallest attainable accuracy is reached and the convergence stalls or the method may even start diverging. In typical scientific computing applications in double-precision floating-point format for matrices of large sizes, the conjugate gradient method uses a stopping criteria with a tolerance that terminates the iterations during the first or second stage.

The preconditioned conjugate gradient method[edit]

In most cases, preconditioning is necessary to ensure fast convergence of the conjugate gradient method. The preconditioned conjugate gradient method takes the following form:[9]

repeat
if rk+1 is sufficiently small then exit loop end if
end repeat
The result is xk+1

The above formulation is equivalent to applying the conjugate gradient method without preconditioning to the system[10]

where

The preconditioner matrix M has to be symmetric positive-definite and fixed, i.e., cannot change from iteration to iteration. If any of these assumptions on the preconditioner is violated, the behavior of the preconditioned conjugate gradient method may become unpredictable.

An example of a commonly used preconditioner is the incomplete Cholesky factorization.[11]

The flexible preconditioned conjugate gradient method[edit]

In numerically challenging applications, sophisticated preconditioners are used, which may lead to variable preconditioning, changing between iterations. Even if the preconditioner is symmetric positive-definite on every iteration, the fact that it may change makes the arguments above invalid, and in practical tests leads to a significant slow down of the convergence of the algorithm presented above. Using the Polak–Ribière formula

instead of the Fletcher–Reeves formula

may dramatically improve the convergence in this case.[12] This version of the preconditioned conjugate gradient method can be called[13] flexible, as it allows for variable preconditioning. The flexible version is also shown[14] to be robust even if the preconditioner is not symmetric positive definite (SPD).

The implementation of the flexible version requires storing an extra vector. For a fixed SPD preconditioner, so both formulas for βk are equivalent in exact arithmetic, i.e., without the round-off error.

The mathematical explanation of the better convergence behavior of the method with the Polak–Ribière formula is that the method is locally optimal in this case, in particular, it does not converge slower than the locally optimal steepest descent method.[15]

Vs. the locally optimal steepest descent method[edit]

In both the original and the preconditioned conjugate gradient methods one only needs to set in order to make them locally optimal, using the line search, steepest descent methods. With this substitution, vectors p are always the same as vectors z, so there is no need to store vectors p. Thus, every iteration of these steepest descent methods is a bit cheaper compared to that for the conjugate gradient methods. However, the latter converge faster, unless a (highly) variable and/or non-SPD preconditioner is used, see above.

Conjugate gradient method as optimal feedback controller for double integrator[edit]

The conjugate gradient method can also be derived using optimal control theory.[16] In this approach, the conjugate gradient method falls out as an optimal feedback controller,

for the double integrator system,
The quantities and are variable feedback gains.[16]

Conjugate gradient on the normal equations[edit]

The conjugate gradient method can be applied to an arbitrary n-by-m matrix by applying it to normal equations ATA and right-hand side vector ATb, since ATA is a symmetric positive-semidefinite matrix for any A. The result is conjugate gradient on the normal equations (CGNR).

ATAx = ATb

As an iterative method, it is not necessary to form ATA explicitly in memory but only to perform the matrix-vector and transpose matrix-vector multiplications. Therefore, CGNR is particularly useful when A is a sparse matrix since these operations are usually extremely efficient. However the downside of forming the normal equations is that the condition number κ(ATA) is equal to κ2(A) and so the rate of convergence of CGNR may be slow and the quality of the approximate solution may be sensitive to roundoff errors. Finding a good preconditioner is often an important part of using the CGNR method.

Several algorithms have been proposed (e.g., CGLS, LSQR). The LSQR algorithm purportedly has the best numerical stability when A is ill-conditioned, i.e., A has a large condition number.

Conjugate gradient method for complex Hermitian matrices[edit]

The conjugate gradient method with a trivial modification is extendable to solving, given complex-valued matrix A and vector b, the system of linear equations for the complex-valued vector x, where A is Hermitian (i.e., A' = A) and positive-definite matrix, and the symbol ' denotes the conjugate transpose using the MATLAB/GNU Octave style. The trivial modification is simply substituting the conjugate transpose for the real transpose everywhere. This substitution is backward compatible, since conjugate transpose turns into real transpose on real-valued vectors and matrices. The provided above Example code in MATLAB/GNU Octave thus already works for complex Hermitian matrices needed no modification.

See also[edit]

  • Biconjugate gradient method (BiCG)
  • Conjugate residual method
  • Gaussian belief propagation
  • Iterative method: Linear systems
  • Krylov subspace
  • Nonlinear conjugate gradient method
  • Preconditioning
  • Sparse matrix-vector multiplication

References[edit]

  1. ^ Hestenes, Magnus R.; Stiefel, Eduard (December 1952). "Methods of Conjugate Gradients for Solving Linear Systems" (PDF). Journal of Research of the National Bureau of Standards. 49 (6): 409. doi:10.6028/jres.049.044.
  2. ^ Straeter, T. A. (1971). "On the Extension of the Davidon–Broyden Class of Rank One, Quasi-Newton Minimization Methods to an Infinite Dimensional Hilbert Space with Applications to Optimal Control Problems". NASA Technical Reports Server. NASA. hdl:2060/19710026200.
  3. ^ Speiser, Ambros (2004). "Konrad Zuse und die ERMETH: Ein weltweiter Architektur-Vergleich" [Konrad Zuse and the ERMETH: A worldwide comparison of architectures]. In Hellige, Hans Dieter (ed.). Geschichten der Informatik. Visionen, Paradigmen, Leitmotive (in German). Berlin: Springer. p. 185. ISBN 3-540-00217-0.
  4. ^ a b c d Polyak, Boris (1987). Introduction to Optimization.
  5. ^ a b c Greenbaum, Anne (1997). Iterative Methods for Solving Linear Systems. doi:10.1137/1.9781611970937. ISBN 978-0898713961.
  6. ^ Shewchuk, Jonathan R (1994). An Introduction to the Conjugate Gradient Method Without the Agonizing Pain (PDF).
  7. ^ Saad, Yousef (2003). Iterative methods for sparse linear systems (2nd ed.). Philadelphia, Pa.: Society for Industrial and Applied Mathematics. pp. 195. ISBN 978-0-89871-534-7.
  8. ^ Hackbusch, W. (2016-06-21). Iterative solution of large sparse systems of equations (2nd ed.). Switzerland: Springer. ISBN 9783319284835. OCLC 952572240.
  9. ^ Barrett, Richard; Berry, Michael; Chan, Tony F.; Demmel, James; Donato, June; Dongarra, Jack; Eijkhout, Victor; Pozo, Roldan; Romine, Charles; van der Vorst, Henk. Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods (PDF) (2nd ed.). Philadelphia, PA: SIAM. p. 13. Retrieved 2020-03-31.
  10. ^ Golub, Gene H.; Van Loan, Charles F. (2013). Matrix Computations (4th ed.). Johns Hopkins University Press. sec. 11.5.2. ISBN 978-1-4214-0794-4.
  11. ^ Concus, P.; Golub, G. H.; Meurant, G. (1985). "Block Preconditioning for the Conjugate Gradient Method". SIAM Journal on Scientific and Statistical Computing. 6 (1): 220–252. doi:10.1137/0906018.
  12. ^ Golub, Gene H.; Ye, Qiang (1999). "Inexact Preconditioned Conjugate Gradient Method with Inner-Outer Iteration". SIAM Journal on Scientific Computing. 21 (4): 1305. CiteSeerX 10.1.1.56.1755. doi:10.1137/S1064827597323415.
  13. ^ Notay, Yvan (2000). "Flexible Conjugate Gradients". SIAM Journal on Scientific Computing. 22 (4): 1444–1460. CiteSeerX 10.1.1.35.7473. doi:10.1137/S1064827599362314.
  14. ^ Henricus Bouwmeester, Andrew Dougherty, Andrew V Knyazev. Nonsymmetric Preconditioning for Conjugate Gradient and Steepest Descent Methods. Procedia Computer Science, Volume 51, Pages 276-285, Elsevier, 2015. doi: 10.1016/j.procs.2015.05.241
  15. ^ Knyazev, Andrew V.; Lashuk, Ilya (2008). "Steepest Descent and Conjugate Gradient Methods with Variable Preconditioning". SIAM Journal on Matrix Analysis and Applications. 29 (4): 1267. arXiv:math/0605767. doi:10.1137/060675290. S2CID 17614913.
  16. ^ a b Ross, I. M., "An Optimal Control Theory for Accelerated Optimization," arXiv:1902.09004, 2019.

Further reading[edit]

  • Atkinson, Kendell A. (1988). "Section 8.9". An introduction to numerical analysis (2nd ed.). John Wiley and Sons. ISBN 978-0-471-50023-0.
  • Avriel, Mordecai (2003). Nonlinear Programming: Analysis and Methods. Dover Publishing. ISBN 978-0-486-43227-4.
  • Golub, Gene H.; Van Loan, Charles F. (2013). "Chapter 11". Matrix Computations (4th ed.). Johns Hopkins University Press. ISBN 978-1-4214-0794-4.
  • Saad, Yousef (2003-04-01). "Chapter 6". Iterative methods for sparse linear systems (2nd ed.). SIAM. ISBN 978-0-89871-534-7.

External links[edit]

  • "Conjugate gradients, method of", Encyclopedia of Mathematics, EMS Press, 2001 [1994]