Método do gradiente

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  x 0 {\displaystyle \mathbf {x} _{0}}   visando alcançar um ponto de mínimo de  F {\displaystyle F} , consideramos a sucessão definida por  x 0 , x 1 , x 2 , {\displaystyle \mathbf {x} _{0},\mathbf {x} _{1},\mathbf {x} _{2},\dots } onde a pesquisa linear é dada pela direção de descida d n {\displaystyle \mathbf {d} _{n}}

x n + 1 = x n + ω n d n {\displaystyle \mathbf {x} _{n+1}=\mathbf {x} _{n}+\omega _{n}\mathbf {d} _{n}} .

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

d n = F ( x n ) {\displaystyle \mathbf {d} _{n}=-\nabla F(\mathbf {x} _{n})}

ficando a iteração definida por

x n + 1 = x n ω n F ( x n ) {\displaystyle \mathbf {x} _{n+1}=\mathbf {x} _{n}-\omega _{n}\nabla F(\mathbf {x} _{n})} .

Pesquisa exata e inexata

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

Há duas abordagens possíveis:

  • Pesquisa exata - onde ω n {\displaystyle \omega _{n}} será o valor otimal numa otimização unidimensional.
  • Pesquisa inexata - onde ω n {\displaystyle \omega _{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 ( x n ω F ( x n ) ) {\displaystyle g(\omega )=F(\mathbf {x} _{n}-\omega \nabla F(\mathbf {x} _{n}))}

notando que x n {\displaystyle \mathbf {x} _{n}} está fixo e apenas ω > 0 {\displaystyle \omega >0} está a variar.

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

ω n = {\displaystyle \omega _{n}=} arg min ω > 0 g ( ω ) {\displaystyle _{\omega >0}\,g(\omega )}

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 x 0 {\displaystyle \mathbf {x} _{0}}
  • Ciclo em n {\displaystyle n}
    • calcula-se a direção de descida d n = F ( x n ) {\displaystyle \mathbf {d} _{n}=-\nabla F(\mathbf {x} _{n})}
    • define-se a função g ( ω ) = F ( x n + ω d n ) {\displaystyle g(\omega )=F(\mathbf {x} _{n}+\omega \mathbf {d} _{n})}
    • determina-se ω n {\displaystyle \omega _{n}} = arg min ω > 0 g ( ω ) {\displaystyle _{\omega >0}\,g(\omega )}
      • (por pesquisa exata ou inexata)
    • define-se x n + 1 = x n + ω n d n {\displaystyle \mathbf {x} _{n+1}=\mathbf {x} _{n}+\omega _{n}\mathbf {d} _{n}}
  • Até que | | F ( x n + 1 ) | | < ϵ {\displaystyle ||\nabla F(\mathbf {x} _{n+1})||<\epsilon }
    • (onde ϵ {\displaystyle \epsilon } , 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 ) {\displaystyle F(x)} , uma função dada, em que x R m {\displaystyle x\in \mathbb {R} ^{m}} e F ( x ) R {\displaystyle F(x)\in \mathbb {R} } .

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

{ v ( t ) = F ( v ( t ) ) v ( 0 ) = x 0 . ( ) {\displaystyle {\begin{cases}v'(t)&=&-\nabla F(v(t))\\v(0)&=&x_{0}\end{cases}}.\qquad \qquad (*)}

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

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


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

g ( x ) = F ( x ) . {\displaystyle g(x)=\nabla F(x).}

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

{ J g ( u ( t ) ) u ( t ) = g ( u ( t ) ) u ( 0 ) = x 0 ( ) {\displaystyle {\begin{cases}Jg(u(t))u'(t)&=&-g(u(t))\\u(0)&=&x_{0}\end{cases}}\qquad \qquad (**)} ,

em que

J g ( x ) = H F ( x ) {\displaystyle Jg(x)=HF(x)} ,

é a matriz Jacobiana de g ( x ) {\displaystyle g(x)} e H F ( x ) {\displaystyle HF(x)} é a matriz Hessiana de F ( x ) {\displaystyle F(x)} .


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

ϕ ( u ( t ) ) = g ( u ( t ) ) 2 2 {\displaystyle \phi (u(t))={\frac {\|g(u(t))\|^{2}}{2}}}

decresce, enquanto F ( u ( t ) ) 0 {\displaystyle \nabla F(u(t))\neq 0} [2].

O uso do método de Euler para determinar uma aproximação para u ( t ) {\displaystyle u(t)} , com tamanho de passo h = 1 {\displaystyle h=1} , é equivalente ao método de Newton para otimização.

Notas e 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. a b Ferreira, José Claudinei (2021). «QUANDO OS MÉTODOS DE EULER E DE NEWTON COINCIDEM» (PDF). Revista Matemática Universitária (1): 34–46. doi:10.21711/26755254/rmu20213. Consultado em 26 de dezembro de 2022