Critères d'arrêt pour les solveurs linéaires itératifs appliqués à des systèmes presque singuliers

16

Considérons avec presque singulier, ce qui signifie qu'il existe une valeur propre de qui est très petite. Le critère d'arrêt habituel d'une méthode itérative est basé sur le résiduel et concerne les itérations peuvent s'arrêter lorsque avec n le numéro d'itération. Mais dans le cas que nous considérons, il pourrait y avoir une grande erreur v vivant dans l'espace propre associé à la petite valeur propre \ lambda_0 qui donne une petite valeur résiduelle Av = \ lambda_0v . Supposons que le r_0 résiduel initial soit grand, alors il pourrait arriver que nous nous arrêtions àAx=bUNEλ0UNErn:=bAxnrn/r0<tolnvλ0Av=λ0vr0rn/r0<tol mais l'erreur xnx est toujours importante. Quel est un meilleur indicateur d'erreur dans ce cas? Est xnxn1un bon candidat?

Hui Zhang
la source
3
Vous voudrez peut-être réfléchir à votre définition de «presque singulier». La matrice Iϵ (avec ϵ1 et I la matrice d'identité) a une valeur propre très petite, mais est aussi loin du singulier que n'importe quelle matrice pourrait l'être.
David Ketcheson
1
Aussi, ||rn/r0||semble être la mauvaise notation. ||rn||/||r0||est plus typique, non?
Bill Barth
Oui, tu as raison, Bill! Je vais corriger cette erreur.
Hui Zhang
1
Et? et quel est votre algorithme, exactement? bAx/b
shuhalo
2
Addendum: Je pense que l'article suivant aborde à peu près les systèmes mal conditionnés dont vous vous inquiétez, au moins si vous utilisez CG: Axelson, Kaporin: Estimation de la norme d'erreur et critères d'arrêt dans les itérations de gradient conjugué préconditionnées. DOI: 10.1002 / nla.244
shuhalo

Réponses:

13

Veuillez ne jamais utiliser la différence entre les itérations successives pour définir un critère d'arrêt. Cette erreur diagnostique la stagnation de la convergence. La plupart des itérations matricielles non symétriques ne sont pas monotones, et même GMRES en arithmétique exacte sans redémarrage peut stagner pendant un nombre arbitraire d'itérations (jusqu'à la dimension de la matrice) avant de converger soudainement. Voir des exemples dans Nachtigal, Reddy et Trefethen (1993) .

Une meilleure façon de définir la convergence

Nous nous intéressons généralement à la précision de notre solution plus qu'à la taille du résidu. Plus précisément, nous pourrions garantir que la différence entre une solution approximative et la solution exacte x satisfait | x n - x | < c pour certains c spécifiés par l'utilisateur . Il s'avère que cela peut être réalisé en trouvant un x n tel que | A x n - b | < c ϵϵ est la plus petite valeur singulière de A , en raison dexnx

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

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

où nous avons utilisé que est la plus grande valeur singulière de A - 1 (deuxième ligne) et que x résout exactement A x = b (troisième ligne).1/ϵA1xAx=b

Estimation de la plus petite valeur singulière ϵ

Une estimation précise de la plus petite valeur singulière n'est généralement pas directement disponible à partir du problème, mais elle peut être estimée comme un sous-produit d'un gradient conjugué ou d'une itération GMRES. Notez que bien que les estimations des plus grandes valeurs propres et valeurs singulières soient généralement assez bonnes après seulement quelques itérations, une estimation précise de la plus petite valeur propre / singulière n'est généralement obtenue qu'une fois la convergence atteinte. Avant la convergence, l'estimation sera généralement nettement supérieure à la valeur réelle. Cela suggère que vous devez réellement résoudre les équations avant de pouvoir définir la bonne tolérance c ϵ . Une tolérance de convergence automatique qui prend une précision fournie par l'utilisateur cϵcϵcpour la solution et estime que la plus petite valeur singulière avec l'état actuel de la méthode de Krylov pourrait converger trop tôt car l'estimation de ϵ était beaucoup plus grande que la valeur réelle.ϵϵ

Remarques

  1. La discussion ci-dessus fonctionne également avec remplacé par l'opérateur préconditionné gauche P - 1 A et le résidu préconditionné P - 1 ( A x n - b ) ou avec l'opérateur préconditionné droit A P - 1 et l'erreur P ( x n - x ) . Si P - 1AP1AP1(Axnb)AP1P(xnx)P1est un bon préconditionneur, l'opérateur préconditionné sera bien conditionné. Pour le préconditionnement à gauche, cela signifie que le résidu préconditionné peut être réduit, mais le vrai résidu peut ne pas l'être. Pour un bon préconditionnement, est facilement rendu petit, mais la vraie erreur | x n - x | n'est peut être pas. Cela explique pourquoi le préconditionnement à gauche est préférable pour réduire l'erreur alors que le préconditionnement à droite est préférable pour réduire le résidu (et pour déboguer les préconditionneurs instables).|P(xnx)||xnx|
  2. Voir cette réponse pour plus de discussion sur les normes minimisées par GMRES et CG.
  3. Les estimations des valeurs singulières extrêmes peuvent être contrôlées à l'aide -ksp_monitor_singular_valuede n'importe quel programme PETSc. Voir KSPComputeExtremeSingularValues ​​() pour calculer des valeurs singulières à partir du code.
  4. Lorsque vous utilisez GMRES pour estimer des valeurs singulières, il est crucial de ne pas redémarrer (par exemple -ksp_gmres_restart 1000dans PETSc).
Jed Brown
la source
1
'' fonctionne également avec A remplacé par un opérateur préconditionné '' - Cependant, il ne s'applique alors qu'au résiduel préconditionné si P - 1 A est utilisé, resp. à l'erreur préconditionnée P - 1 δ x si A P - 1 est utilisé. P1rP1AP1δxAP1
Arnold Neumaier
1
Bon point, j'ai édité ma réponse. Notez que le cas préconditionné à droite vous donne le contrôle de , le déroulement du préconditionneur (en appliquant P - 1 ) amplifie généralement les modes à faible énergie dans l'erreur. PδxP1
Jed Brown
6

Une autre façon de voir ce problème est de considérer les outils à partir de problèmes inverses discrets, c'est-à-dire des problèmes qui impliquent la résolution de ou min | | A x - b | | 2A est très mal conditionné (ie le rapport entre la première et la dernière valeur singulière σ 1 / σ n est grand).Ax=bmin||Axb||2Aσ1/σn

Ici, nous avons plusieurs méthodes pour choisir le critère d'arrêt, et pour une méthode itérative, je recommanderais le critère de la courbe en L car il n'implique que des quantités qui sont déjà disponibles il). J'ai utilisé cela avec succès dans une méthode itérative.

L'idée est de surveiller la norme résiduelle et la norme de solution η k = | | x k | | 2 , où x k est le k -ième itération. Au fur et à mesure que vous itérez, cela commence à dessiner la forme d'un L dans un graphique loglog (rho, eta), et le point au coin de ce L est le choix optimal.ρk=||Axkb||2ηk=||xk||2xkk

Cela vous permet d'implémenter un critère où vous gardez un œil lorsque vous avez franchi le coin (c'est-à-dire en regardant le gradient de ), puis choisissez l'itération qui était située au coin.(ρk,ηk)

La façon dont je l'ai fait impliquait de stocker les 20 derniers itérations, et si le gradient était supérieur à un certain seuil pour 20 itérations successives, je savais que j'étais sur la partie verticale de la courbe et que j'avais dépassé le coin. J'ai ensuite pris la première itération de mon tableau (c'est-à-dire celle d'il y a 20 itérations) comme solution.abs(log(ηk)log(ηk1)log(ρk)log(ρk1))

Il existe également des méthodes plus détaillées pour trouver le coin, et elles fonctionnent mieux mais nécessitent de stocker un nombre important d'itérations. Jouez un peu avec. Si vous êtes dans matlab, vous pouvez utiliser la boîte à outils Outils de régularisation, qui implémente une partie de cela (en particulier la fonction "coin" est applicable).

Notez que cette approche est particulièrement adaptée aux problèmes à grande échelle, car le temps de calcul supplémentaire impliqué est minuscule.

OscarB
la source
1
Merci beaucoup! Donc, dans le loglog (rho, eta), nous commençons par la droite de la courbe L et finissons en haut de L, est-ce? Je ne connais tout simplement pas le principe de ce critère. Pouvez-vous expliquer pourquoi il se comporte toujours comme une courbe en L et pourquoi nous choisissons le coin?
Hui Zhang
||Axb||2=||e||2ebexact=b+e. Pour plus d'analyses, voir Hansen, PC et O'Leary, DP (1993). L'utilisation de la courbe en L dans la régularisation de problèmes mal posés discrets. SIAM Journal on Scientific Computing, 14. Notez que je viens de faire une légère mise à jour de l'article.
OscarB
4
@HuiZhang: ce n'est pas toujours un L. Si la régularisation est ambiguë, il peut s'agir d'un double L, conduisant à deux candidats pour la solution, l'un avec une brute brute mieux résolu, l'autre avec certains détails mieux résolu. (Et bien sûr, des formes plus complexes peuvent apparaître.)
Arnold Neumaier
La courbe en L s'applique-t-elle à des problèmes mal conditionnés où il devrait y avoir une solution unique? Autrement dit, je suis intéressé par les problèmes Ax = b où b est connu "exactement" et A est presque singulier mais toujours techniquement inversible. Il me semble que si vous utilisez quelque chose comme GMRES, la norme de votre estimation actuelle de x ne change pas trop au fil du temps, surtout après les premières itérations. Il me semble que la partie verticale de la courbe en L se produit parce qu'il n'y a pas de solution unique / valide dans un problème mal posé; cette caractéristique verticale serait-elle présente dans tous les problèmes mal conditionnés?
nukeguy
À un moment donné, vous atteindrez une telle ligne verticale, généralement parce que les erreurs numériques dans votre méthode de solution entraînent || Ax-b || ne diminue pas. Cependant, vous avez raison de dire que dans ces problèmes sans bruit, la courbe ne ressemble pas toujours à un L, ce qui signifie que vous avez généralement quelques coins à choisir et que choisir l'un plutôt que l'autre peut être difficile. Je pense que le document auquel j'ai fait référence dans mon commentaire ci-dessus traite brièvement de scénarios sans bruit.
OscarB