Descida do gradiente com passos grandes, metodos quadráticos e sem gradiente

Jacques Wainer

15/4/20

GD com passo grande

GD com passo pequeno:

\[w_{i+1} = w_i - \epsilon \nabla f(w_{i})\]

Passo pequeno é o \(\epsilon\).

Para o passo grande, uma vez que eu sei que vou andar na direção \(- \nabla f(w_{i})\), porque eu não ando bastante (passo grande) nessa direção até achar um mínimo.

Esse vai ser o meu novo \(w_{i+1}\).

Assim: \[w_{i+1} = w_i - \alpha \nabla f(w_{i})\]

onde \(\alpha\) minimiza \(f(w_{i}- \alpha \nabla f(w_{i}))\)

Minimo em um problema 1D

sem usar a derivada. mas é preciso definir o intervalo onde o algoritmo procurará o minimo (bracket)

usando a derivada

Na pratica, não se deve gastar muita computação para achar o minimo, uma aproximação já é o suficiente.

Conjugado gradiente

Métodos quadráticos

Metodos quadraticos assumem que a função \(f\) localmente pode ser aproximada como uma função quadrática. Para isso precisamos do gradiente (como na descida do gradiente) e da matriz Hessiana que é a versão multidimensional da segunda derivada.

\(H\) é o Hessiano da função e a entrada \(i\) \(j\) da matriz é \(\frac{\partial f}{\partial w_i \partial w_j}\).

A matriz H é simétrica.

Se voce tem o H então o passo ótimo a ser dado na GD é

\[w_{i+1} = w_i - H^{-1}(w_i) \nabla f (w_i)\]

Como no conjugado gradiente a direção do passo nao é \(\nabla f (w_i)\) mas sim \(H^{-1}(w_i) \nabla f (w_i)\) (lembre-se \(H\) é uma matriz que pode mudar a direção de \(\nabla f\)).

Métodos de quasi-Newton não usam uma função explicita para o \(H\) (e portanto o \(H^{-1}\)) mas aproximam o \(H^{-1}\) com uma computação interativa baseada nos \(w_i\) e nos \(\nabla f (w_i)\)

Há vários algoritmos de aproximações para o \(H^{-1}\), mas o mais usado é o BFGS que são as iniciais dos 4 autores. Em particular usa-se a versão L-BFGS (que usa menos memória).

Metodos least square

Métodos least square são métodos quadráticos (como os quasi Newton) mas que só funcionam para problemas onde a função \(f\) a ser minimizada é uma soma de erros quadrados, ou seja:

\[f(w) = \sum_k (y_k - g(x_k,w))^2\]

onde \(x_k\) é um dado de entrada, e \(y_k\) a sua saida correspondente. O erro tem que ser quadratico (e nao modulo ou outros).

Exemplos de metodos least square são

Em particular o Levemberg-Marquardt era usado (de vez em quando) nos anos 90 para redes neurais (dos anos 90). Eu não tenho ouvido mais falar no Levenberg-Marquardt recentemente.

Métodos sem gradiente

Metodos que não usam o gradiente (ou o Hessiano). Dois exemplos:

O Nelder-Mead usa o equivalente a triângulos no espaço n-dimensional (chamados de simplex) e gera um novo ponto para substituir o vertice do “triangulo” que tem o maior valor para \(f\). Se \(w\) é o vertice com maior valor de \(f\), o novo ponto \(w^*\) estará entre o \(w\) e o centro geométrico do triangulo (contração - o triangulo diminui). Também pode estar nessa mesma direção mas além do ponto \(w\) (expansão - o triangulo cresce). Uma animação

O NEWUOA gera de \(2n\) a \(n^2/2\) pontos aleatórios e aproxima uma função quadrática usando os valores do \(f\) nesses pontos. Ele vai para o mínimo dessa função quadrática (aproximada) e usa esse novo ponto para gerar outra aproximação.