Critérios de parada para solucionadores lineares iterativos aplicados a sistemas quase singulares


16

Considere com quase singular, o que significa que há um autovalor de que é muito pequeno. O critério de parada usual de um método iterativo é baseado no residual e diz respeito às iterações podem parar quando com n o número da iteração. Mas no caso que estamos considerando, pode haver um grande erro v vivendo no espaço próprio associado ao pequeno autovalor \ lambda_0, que fornece um pequeno valor residual Av = \ lambda_0v . Suponha que o r_0 residual inicial seja grande, então pode acontecer que paremos emAx=bAλ0Arn:=bAxnrn/r0<tolnvλ0Av=λ0vr0rn/r0<tol mas o erro xnx ainda é grande. Qual é o melhor indicador de erro neste caso? É xnxn1um bom candidato?


3
Você pode pensar na sua definição de "quase singular". A matriz Iϵ (com ϵ1 e I a matriz de identidade) tem um valor próprio muito pequeno, mas está tão longe de ser singular quanto qualquer matriz poderia estar.
David Ketcheson

11
Além disso, ||rn/r0||parece a notação errada. ||rn||/||r0 0||é mais típico, não?
Bill Barth

Sim, você está certo, Bill! Eu vou corrigir esse erro.
Hui Zhang

11
E quanto a? e qual é o seu algoritmo, exatamente? __b-UMAx__/__b__
shuhalo 6/01/12

2
Adendo: Eu acho que o artigo a seguir aborda praticamente os sistemas mal condicionados com os quais você se preocupa, pelo menos se você estiver usando CG: Axelson, Kaporin: Estimativa da norma de erro e critérios de parada em iterações de gradiente conjugado pré-condicionadas. Você pode usar o seguinte
código

Respostas:


13

Por favor, nunca use a diferença entre iterações sucessivas para definir um critério de parada. Isso diagnostica estagnação por convergência. A maioria das iterações não simétricas da matriz não é monótona e mesmo o GMRES na aritmética exata sem reinicializações pode estagnar por um número arbitrário de iterações (até a dimensão da matriz) antes de convergir repentinamente. Veja exemplos em Nachtigal, Reddy e Trefethen (1993) .

Uma maneira melhor de definir convergência

Geralmente, estamos interessados ​​na precisão da nossa solução mais do que no tamanho do resíduo. Especificamente, gostaríamos de garantir que a diferença entre uma solução aproximada e a solução exata satisfaça para alguns especificados pelo usuário . Acontece que é possível conseguir isso encontrando um tal que que é o menor valor singular de , devido a x | x n - x | < c c x n | A x n - b | < C £ £ Axnx

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

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

onde usamos que é o maior valor singular de (segunda linha) e que resolve exatamente (terceira linha).A -1/ϵ xAx=bA1xAx=b

Estimando o menor valor singularϵ

Uma estimativa precisa do menor valor singular geralmente não está disponível diretamente no problema, mas pode ser estimada como um subproduto de um gradiente conjugado ou iteração GMRES. Observe que, embora as estimativas dos maiores valores próprios e valores singulares sejam geralmente muito boas depois de apenas algumas iterações, uma estimativa precisa do menor valor próprio / próprio / singular geralmente é obtida apenas quando a convergência é alcançada. Antes da convergência, a estimativa geralmente será significativamente maior que o valor real. Isso sugere que você deve realmente resolver as equações antes de definir a tolerância correta . Uma tolerância de convergência automática que requer uma precisão fornecida pelo usuárioc ϵϵcϵϵ ϵcpara a solução e estimativas, o menor valor singular com o estado atual do método de Krylov pode convergir muito cedo, porque a estimativa de era muito maior que o valor real.ϵϵ

Notas

  1. A discussão acima também funciona com substituído pelo operador pré-condicionado à esquerda e pelo residual pré-condicionado ou com o operador pré-condicionado à direita e o erro . Se for um bom pré-condicionador, o operador pré-condicionado estará bem condicionado. Para o pré-condicionamento esquerdo, isso significa que o residual pré-condicionado pode ser reduzido, mas o residual real pode não ser. Para o pré-condicionamento correto,é facilmente reduzido, mas o verdadeiro erroP - 1 A P - 1 ( A x n - b ) A P - 1 P ( x n - x ) P - 1 | P ( x n - x ) | | x n - x |AP1AP1(Axnb)AP1P(xnx)P1|P(xnx)||xnx|talvez não seja. Isso explica por que o pré-condicionamento à esquerda é melhor para reduzir o erro, enquanto o pré-condicionamento à direita é melhor para reduzir o residual (e para depurar pré-condicionadores instáveis).
  2. Veja esta resposta para mais discussões sobre normas minimizadas pelo GMRES e CG.
  3. As estimativas de valores extremos singulares podem ser monitoradas usando-se -ksp_monitor_singular_valuecom qualquer programa PETSc. Consulte KSPComputeExtremeSingularValues ​​() para calcular valores singulares do código.
  4. Ao usar o GMRES para estimar valores singulares, é crucial que as reinicializações não sejam usadas (por exemplo, -ksp_gmres_restart 1000no PETSc).

11
'' também funciona com A substituído por um operador pré-condicionado '' - No entanto, ele se aplica somente ao residual pré-condicionado se P - 1 A for usado, resp. ao erro pré-condicionado P - 1 δ x se A P - 1 for usado. P1rP1AP1δxAP1
Arnold Neumaier

11
Bom ponto, eu editei minha resposta. Observe que a caixa pré-condicionada à direita permite controlar , desenrolando o pré-condicionador (aplicando P - 1 ) normalmente amplifica os modos de baixa energia no erro. PδxP1
precisa

6

Ax=bmin||Axb||2 onde está muito mal condicionado (ou seja, a razão entre o primeiro e o último valor singular σ 1 / σ n é grande).Aσ1/σn

Aqui, temos vários métodos para escolher o critério de parada e, para um método iterativo, eu recomendaria o critério da curva L, uma vez que envolve apenas quantidades que já estão disponíveis (AVISO LEGAL: Meu orientador foi pioneiro neste método, por isso estou definitivamente inclinado a isto). Eu usei isso com sucesso em um método iterativo.

A idéia é monitorar a norma residual e a norma de solução η k = | | x k | | 2 , onde x k é o k 'é iterado. À medida que você itera, isso começa a desenhar a forma de um L em um gráfico de loglog (rho, eta), e o ponto no canto desse L é a escolha ideal.ρk=||Axkb||2ηk=||xk||2xkk

Isso permite que você implemente um critério no qual você fica de olho quando passa pela esquina (ou seja, observa o gradiente de ) e, em seguida, escolhe a iteração que estava localizada na esquina.(ρk,ηk)

A maneira como eu fiz isso envolveu o armazenamento das últimas 20 iterações, e se o gradiente foi maior que um limite para 20 iterações sucessivas, eu sabia que estava na parte vertical da curva e que havia passado a esquina. Então, tomei a primeira iteração da minha matriz (ou seja, a de 20 iterações atrás) como minha solução.abs(log(ηk)log(ηk1)log(ρk)log(ρk1))

Também existem métodos mais detalhados para encontrar a esquina, e eles funcionam melhor, mas exigem o armazenamento de um número significativo de iterações. Brinque um pouco com isso. Se você estiver no matlab, poderá usar a caixa de ferramentas Regularization Tools, que implementa parte disso (especificamente a função "corner" é aplicável).

Observe que essa abordagem é particularmente adequada para problemas de grande escala, pois o tempo de computação extra envolvido é minúsculo.


11
Muito obrigado! Então, no loglog (rho, eta), começamos a partir da direita da curva L e terminamos no topo de L, não é? Eu simplesmente não conheço o princípio por trás desse critério. Você pode explicar por que sempre se comporta como uma curva em L e por que escolhemos o canto?
Hui Zhang

Vocé é bem vindo. Para um método iterativo, começamos da direita e terminamos sempre no topo. Ele se comporta como um L devido ao ruído no problema - a parte vertical acontece em , onde e é o vetor de ruído b e x a c t = b + e||Axb||2=||e||2ebexact=b+e . Para mais análises, ver Hansen, PC, & O'Leary, DP (1993). O uso da curva L na regularização de problemas discretos e mal colocados. Jornal SIAM de Computação Científica, 14. Observe que eu apenas fiz uma pequena atualização no post.
OscarB

4
@HuiZhang: nem sempre é um L. Se a regularização for ambígua, pode ser um L duplo, levando a dois candidatos à solução, um com o desempenho bruto melhor resolvido e o outro com alguns detalhes melhor resolvidos. (E, claro, mor formas ecomplex pode aparecer.)
Arnold Neumaier

A curva L se aplica a problemas mal condicionados, onde deve haver uma solução única? Ou seja, estou interessado nos problemas Ax = b, onde b é conhecido "exatamente" e A é quase singular, mas ainda tecnicamente invertível. Parece-me que, se você usar algo como GMRES, a norma de seu palpite atual de x não mudará muito ao longo do tempo, especialmente após a primeira, no entanto, muitas iterações. Parece-me que a parte vertical da curva L ocorre porque não há solução única / válida em um problema mal colocado; esta característica vertical estaria presente em todos os problemas mal condicionados?
Nkeguy 06/06/19

Em um ponto, você alcançará uma linha vertical, normalmente porque os erros numéricos no método de solução resultam em || Ax-b || não diminuindo. No entanto, você está certo de que, em problemas sem ruído, a curva nem sempre se parece com um L, o que significa que você normalmente tem alguns cantos para escolher e escolher um sobre o outro pode ser difícil. Acredito que o artigo que mencionei no meu comentário acima discuta brevemente os cenários sem ruído.
OscarB 7/06/16
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.