Método do gradiente

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa
Illustração do método do gradiente (as linhas em azul correspondem a curvas de nível, e as setas a vermelho correspondem a 4 iterações do método)

método do gradiente (ou método do máximo declive) é um método numérico usado em otimização. Para encontrar um mínimo (local) de uma função usa-se um esquema iterativo, onde em cada passo se toma a direção (negativa) do gradiente, que corresponde à direção de declive máximo. Pode ser encarado como o método seguido por um curso da água, na sua descida pela força da gravidade.

Descrição

Começando com um vetor inicial 𝐱0  visando alcançar um ponto de mínimo de F, consideramos a sucessão definida por 𝐱0,𝐱1,𝐱2, onde a pesquisa linear é dada pela direção de descida 𝐝n

𝐱n+1=𝐱n+ωn𝐝n.

No caso do método do gradiente a condição de descida verifica-se tomando

𝐝n=F(𝐱n)

ficando a iteração definida por

𝐱n+1=𝐱nωnF(𝐱n).

Pesquisa exata e inexata

Um dos problemas habituais nos métodos de pesquisa linear é determinar o passo ωn a ser considerado na iteração.

Há duas abordagens possíveis:

  • Pesquisa exata - onde ωn será o valor otimal numa otimização unidimensional.
  • Pesquisa inexata - onde ωn será apenas um valor aproximado.

Isto tem que ser feito a cada passo, pelo que a Pesquisa Exata pode ser incomportável em tempo computacional, sendo preferível usar uma Pesquisa Inexata.

No caso da pesquisa exata, procura-se o ponto de mínimo de uma nova função

g(ω)=F(𝐱nωF(𝐱n))

notando que 𝐱n está fixo e apenas ω>0 está a variar.

Se for possível encontrar esse ponto de mínimo, então obtemos:

ωn= arg minω>0g(ω)

por exemplo, calculando os zeros da derivada da função g.

Sendo moroso ou impraticável minimizar g considera-se um valor aproximado, dado por exemplo pelo Critério de Wolfe, que é um dos critérios mais usados na pesquisa inexata.

Algoritmo

Um algoritmo em pseudo-código pode definir-se assim:

  • Define-se o vector inicial 𝐱0
  • Ciclo em n
    • calcula-se a direção de descida 𝐝n=F(𝐱n)
    • define-se a função g(ω)=F(𝐱n+ω𝐝n)
    • determina-se ωn = arg minω>0g(ω)
      • (por pesquisa exata ou inexata)
    • define-se 𝐱n+1=𝐱n+ωn𝐝n
  • Até que ||F(𝐱n+1)||<ϵ
    • (onde ϵ, pequeno, define o critério de paragem)

Solução de um sistema linear

O método do gradiente pode ser usado para resolver sistemas lineares, usando minimização quadrática, i.e. usando o método dos mínimos quadrados.

Fórmulas explícitas para encontrar o passo ótimo podem ser encontradas neste caso.[1]

Equações diferenciais ordinárias

Seja F(x), uma função dada, em que xm e F(x).

Supondo que a função F(x) possua derivada contínua, podemos considerar a equação diferencial ordinária

{v(t)=F(v(t))v(0)=x0.(*)

Pode-se mostrar que a única solução v(t) dessa equação é tal que F(v(t)) é decrescente[2], enquanto F(v(t))0. Na verdade v(t) é a curva na direção de maior decrescimento de F(x), iniciando em x0.

O uso do método de Euler para determinar uma aproximação a solução v(t) (da equação (*)) é equivalente ao método do gradiente (quando o tamanho de passo é variável).


Observamos que o ponto de mínimo de F(x) é um ponto crítico dessa função. Por isso, podemos procurar os pontos de mínimo de F(x) por meio das soluções da equação g(x)=0, em que

g(x)=F(x).

Isso pode ser feito resolvendo a equação diferencial ordinária

{Jg(u(t))u(t)=g(u(t))u(0)=x0(**),

em que

Jg(x)=HF(x),

é a matriz Jacobiana de g(x) e HF(x) é a matriz Hessiana de F(x).


Pode-se mostrar, sob certas condições, que a única solução u(t) dessa equação (**) é tal que que

ϕ(u(t))=g(u(t))22

decresce, enquanto F(u(t))0[2].

O uso do método de Euler para determinar uma aproximação para u(t), com tamanho de passo h=1, é equivalente ao método de Newton para otimização.Predefinição:Referências

  1. David G. Luenberger, Yinyu Ye: Linear and Nonlinear Programming. International Series in Operations Research & Management Science. Volume 116. Springer (2008) [Basic Descent Methods, pág 215] 
  2. 2,0 2,1 Predefinição:Citar periódico