Kriteria berhenti untuk pemecah linier berulang diterapkan pada sistem yang hampir tunggal

16

Pertimbangkan Ax=b dengan A hampir singular yang berarti ada nilai eigen λ0 dari A yang sangat kecil. Kriteria berhenti yang biasa dari metode berulang didasarkan pada residual rn:=bAxn dan menganggap iterasi dapat berhenti ketika rn/r0<tol dengan n nomor iterasi. Tetapi dalam kasus yang kami pertimbangkan, mungkin ada kesalahan besar v tinggal di eigenspace yang terkait dengan nilai eigen kecil λ0 yang memberikan residu kecil Av=λ0v . Misalkan residual awal r0 besar, maka mungkin saja kita berhenti di rn/r0<tol tetapi kesalahan xnx masih besar. Apa indikator kesalahan yang lebih baik dalam kasus ini? Apakah xnxn1 kandidat yang baik?

Hui Zhang
sumber
3
Anda mungkin ingin memikirkan definisi Anda tentang "hampir tunggal". Matriks (dengan ϵ 1 dan I matriks identitas) memiliki nilai eigen yang sangat kecil, tetapi jauh dari singular seperti halnya matriks apa pun. Iϵϵ1I
David Ketcheson
1
Juga, Sepertinya notasi yang salah. | | r n | | / | | r 0 | | lebih khas, bukan? ||rn/r0||||rn||/||r0||
Bill Barth
Ya, Anda benar, Bill! Saya akan memperbaiki kesalahan ini.
Hui Zhang
1
Bagaimana dengan ? dan apa algoritma Anda, tepatnya? bAx/b
shuhalo
2
Tambahan: Saya pikir makalah berikut ini cukup banyak menekan sistem yang dikondisikan buruk yang Anda khawatirkan, setidaknya jika Anda menggunakan CG: Axelson, Kaporin: Estimasi norma kesalahan dan kriteria berhenti dalam iterasi gradien konjugat terkondisi sebelumnya. DOI: 10.1002 / nla.244
shuhalo

Jawaban:

13

Harap tidak pernah menggunakan perbedaan antara pengulangan yang berurutan untuk menentukan kriteria berhenti. Ini salah mendiagnosis stagnasi konvergensi. Sebagian besar iterasi matriks nonsimetrik bukanlah monoton, dan bahkan GMRES dalam aritmatika yang tepat tanpa restart dapat mengalami stagnasi untuk sejumlah iterasi yang acak (hingga dimensi matriks) sebelum melakukan konvergensi secara tiba-tiba. Lihat contoh dalam Nachtigal, Reddy, dan Trefethen (1993) .

Cara yang lebih baik untuk mendefinisikan konvergensi

Kami biasanya tertarik pada keakuratan solusi kami lebih dari ukuran residu. Secara khusus, kami mungkin ingin menjamin bahwa perbedaan antara solusi perkiraan dan solusi tepat x memuaskan | x n - x | < c untuk beberapa yang ditentukan pengguna c . Ternyata dapat mencapai ini dengan menemukan x n sedemikian rupa sehingga | A x n - b | < c ϵ di mana ϵ adalah nilai singular terkecil dari A , karenaxnx

|xnx|<c
cxn
|Axnb|<cϵ
ϵA

|xnx|=|A1A(xnx)|1ϵ|AxnAx|=1ϵ|Axnb|<1ϵcϵ=c

di mana kita telah menggunakan bahwa adalah nilai singular terbesar dari A - 1 (baris kedua) dan bahwa x benar-benar memecahkan A x = b1/ϵA1xAx=b (baris ketiga).

Memperkirakan nilai tunggal terkecil ϵ

Perkiraan akurat dari nilai singular terkecil biasanya tidak langsung tersedia dari masalah, tetapi dapat diperkirakan sebagai produk sampingan dari gradien konjugat atau iterasi GMRES. Perhatikan bahwa meskipun estimasi nilai eigen terbesar dan nilai singular biasanya cukup baik setelah hanya beberapa iterasi, estimasi akurat nilai eigen / singular terkecil biasanya hanya diperoleh setelah konvergensi tercapai. Sebelum konvergensi, estimasi umumnya akan secara signifikan lebih besar dari nilai sebenarnya. Ini menunjukkan bahwa Anda harus benar-benar menyelesaikan persamaan sebelum Anda dapat menentukan toleransi yang benar c ϵ . Toleransi konvergensi otomatis yang menghasilkan akurasi yang disediakan pengguna cϵcϵcuntuk solusi dan memperkirakan nilai singular terkecil dengan kondisi saat ini dari metode Krylov mungkin konvergen terlalu dini karena estimasi ϵ jauh lebih besar dari nilai sebenarnya.ϵϵ

Catatan

  1. Diskusi di atas juga bekerja dengan digantikan oleh operator prekondisi kiri P - 1 A dan residu P - 1 yang dikondisikan sebelumnya ( A x n - b ) atau dengan operator prekondisi kanan A P - 1 dan kesalahan P ( x n - x ) . Jika P - 1AP1AP1(Axnb)AP1P(xnx)P1 merupakan prekondisi yang baik, operator prakondisi akan dikondisikan dengan baik. Untuk prakondisi kiri, ini berarti residu prasyarat dapat dibuat kecil, tetapi residu sebenarnya mungkin tidak. Untuk pengkondisian yang benar,mudah dibuat kecil, tetapi kesalahan yang sebenarnya | x n - x | mungkin tidak. Ini menjelaskan mengapa prakondisi kiri lebih baik untuk membuat kesalahan kecil sedangkan prakondisi kanan lebih baik untuk membuat residu kecil (dan untuk debugging prekondisi tidak stabil).|P(xnx)||xnx|
  2. Lihat jawaban ini untuk diskusi lebih lanjut tentang norma-norma yang diperkecil oleh GMRES dan CG.
  3. Estimasi nilai singular ekstrem dapat dipantau menggunakan -ksp_monitor_singular_valuedengan program PETSc. Lihat KSPComputeExtremeSingularValues ​​() untuk menghitung nilai singular dari kode.
  4. Ketika menggunakan GMRES untuk memperkirakan nilai singular, sangat penting bahwa restart tidak digunakan (misalnya -ksp_gmres_restart 1000dalam PETSc).
Jed Brown
sumber
1
P1rP1AP1δxAP1
1
Poin bagus, saya mengedit jawaban saya. Perhatikan bahwa case dengan prasyarat kanan memberi Anda kendaliPδx, membuka prekondisi (melamar P-1) typically amplifies low-energy modes in the error.
Jed Brown
6

Another way of looking at this problem is to consider the tools from discrete inverse problems, that is, problems which involve solving Ax=b or min||Axb||2 where A is very ill-conditioned (i.e. the ratio between the first and last singular value σ1/σn is large).

Here, we have several methods for choosing the stopping criterion, and for an iterative method, I would recommend the L-curve criterion since it only involves quantities that are available already (DISCLAIMER: My advisor pioneered this method, so I am definitely biased towards it). I have used this with success in an iterative method.

The idea is to monitor the residual norm ρk=||Axkb||2 and the solution norm ηk=||xk||2, where xk is the k'th iterate. As you iterate, this begins to draw the shape of an L in a loglog(rho,eta) plot, and the point at the corner of that L is the optimal choice.

This allows you to implement a criterion where you keep an eye on when you have passed the corner (i.e. looking at the gradient of (ρk,ηk)), and then choose the iterate that was located at the corner.

The way I did it involved storing the last 20 iterates, and if the gradient abs(log(ηk)log(ηk1)log(ρk)log(ρk1)) was larger than some threshold for 20 successive iterations, I knew that I was on the vertical part of the curve and that I had passed the corner. I then took the first iterate in my array (i.e. the one 20 iterations ago) as my solution.

There are also more detailed methods for finding the corner, and these work better but require storing a significant number of iterates. Play around with it a bit. If you are in matlab, you can use the toolbox Regularization Tools, which implements some of this (specifically the "corner" function is applicable).

Note that this approach is particularly suitable for large-scale problems, since the extra computing time involved is minuscule.

OscarB
sumber
1
Thanks a lot! So in loglog(rho,eta) plot we begin from the right of the L curve and end at the top of L, is it? I just do not know the principle behind this criterion. Can you explain why it always behave like an L curve and why we choose the corner?
Hui Zhang
You're welcome :-D. For an iterative method, we begin from right and end at top always. It behaves as an L due to the noise in the problem - the vertical part happens at ||Axb||2=||e||2, where e is the noise vector bexact=b+e. For more analysis see Hansen, P. C., & O'Leary, D. P. (1993). The use of the L-curve in the regularization of discrete ill-posed problems. SIAM Journal on Scientific Computing, 14. Note that I just made a slight update to the post.
OscarB
4
@HuiZhang: it isn't always an L. If the regularization is ambiguous it may be a double L, leading to two candidates for the solution, one with gross featurse better resolved, the other with certain details better resolved. (And of course, mor ecomplex shapes may appear.)
Arnold Neumaier
Does the L-curve apply to ill-conditioned problems where there should be a unique solution? That is, I'm interested in problems Ax = b where b is known "exactly" and A is nearly singular but still technically invertible. It would seem to me that if you use something like GMRES the norm of your current guess of x doesn't change too much over time, especially after the first however many iterations. It seems to me that the vertical part of the L-curve occurs because there is no unique/valid solution in an ill-posed problem; would this vertical feature be present in all ill-conditioned problems?
nukeguy
At one point, you will reach such a vertical line, typically because the numerical errors in your solution method result in ||Ax-b|| not decreasing. However, you are right that in such noise-free problems the curve does not always look like an L, meaning that you typically have a few corners to choose from and choosing one over the other can be hard. I believe that the paper I referenced in my comment above discusses noise-free scenarios briefly.
OscarB