13
Gradientes Conjugados Problema: como minimizar uma função de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema equivalente: sistemas de equações lineares A matriz A é simétrica e positiva-definida: , qualquer x Referência: “An Introduction to the Conjugate Gradient Method Without the Agonizing Pain”, J. R. Shewchuk (Google)

Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Embed Size (px)

Citation preview

Page 1: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Gradientes Conjugados

Problema: como minimizar uma função de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto?

Problema equivalente: sistemas de equações lineares

A matriz A é simétrica e positiva-definida: , qualquer x

Referência: “An Introduction to the Conjugate Gradient Method Without the Agonizing Pain”, J. R. Shewchuk (Google)

Page 2: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Forma quadrática

A função f (x) é minimizada pela solução do sistema

Exemplo:

Solução:

2

2 Solução:

2

2

Page 3: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Gradiente da forma quadrática

Solução:

2

2

Se e se A é simétrica,

Minimizar f é o mesmo que tornar seu gradiente nulo, ou seja, resolver

Page 4: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Iniciar em um ponto x(0) e executar vários passos para x(1), x(2), sempre nas direções contrárias aos gradientes (descida mais íngreme):

Definições importantes:

Erro: indica o quão longe estamos da solução

Resíduo:

O método de “steepest descent”

Primeiro passo:

Qual o tamanho do passo? Minimizar f ao longo de uma linha: novo gradiente deve ser ortogonal ao anterior

x(0)

x(1)

Page 5: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Calculando α:

Em resumo, o método de “steepest descent”:

Page 6: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Em “steepest descent”, temos que dar vários passos na mesma direção. O ideal seria se, em cada passo, eliminássemos completamente a componente do erro naquela direção.

Infelizmente isso é impossível, pois não sabemos o erro. Se soubéssemos o erro, já teríamos a solução, e o problema estaria resolvido.

Em vez disso, podemos fazer como na linha verde: minimizar ao longo de uma linha e depois tomar a direção que nos leva até o mínimo. Esta é a direção conjugada

Page 7: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Direções conjugadas Dois vetores d(i) e d(j) são conjugados (ou A-ortogonais) se

Vamos ver o que acontece quando impomos que o erro e(i+1) deve ser conjugado (e não mais ortogonal) à direção de busca anterior d(i)

Page 8: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Inicialmente, veremos que isto equivale a uma minimização na direção d(i)

Vamos agora encontrar o coeficiente α, impondo a condição

Onde usamos que

)1()1()1()1()1( )()( iiiii rxfbAxxxAAe

)()(

)()(

)()(

)()()(

)()()()( 0

iTi

iTi

iTi

iTi

i

iiiTi

Add

rd

Add

Aed

deAd

Page 9: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Veremos agora que, se tivermos um conjunto de n direções conjugadas, onde n é a dimensão dos espaço, veremos que esse procedimento minimza a função em apenas n passos.

Para isto, expressamos o erro inicial em uma combinação linear das direções:

)()( ii

Ou seja, em cada passo eliminamos a componente do erro na direção correspondente, e esta componente nunca mais aparece nos passos seguintes

Page 10: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema
Page 11: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Conjugação de Gram-Schmidt Precisamos então encontrar um conjunto de n direções conjugadas.

Isto pode ser feito pelo método de conjugação de Gram Schmidt: Dado um conjunto de n vetores L.I. u(i):

Page 12: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Gradientes Conjugados Usar como u(i) o conjunto dos resíduos (gradientes) para obter, por Gram-Schmidt, as direções de busca.

Usando a identidade:

Obtemos:

Gradientes são ortogonais

Page 13: Gradientes Conjugados Problema: como minimizar uma funç ão de muitas variáveis, conhecendo o valor da função e de seu gradiente em cada ponto? Problema

Definindo β(i) = βi,i-1 e a expressão para αi:

Finalmente, o algoritmo de gradientes conjugados:

Primeira direção é o resíduo inicial

Minimizar ao longo de d(i):

Calcular o novo gradiente (resíduo) r(i+1) e obter

Com isso, obter a nova direção

)()(

)1()1()1(

iTi

iTi

i rd

rr