Gradiente descendente

Atualizado em September 24, 2024 4 Minutos Leia

Gradiente descendente cover image

Introdução

Imagine que temos uma função $f(x)$ e gostaríamos de encontrar o seu mínimo. O que você faria ?

Simples, certo? Precisamos apenas resolver a seguinte equação:

$$f’(x) = 0$$

O fato é que encontrar a fórmula de $f’$ nem sempre é fácil, pois elas tendem a ser extremamente complicadas, especialmente em aprendizado profundo, onde lidamos com funções complexas. Portanto, precisamos encontrar outro método que possa nos fornecer o mínimo de uma função sem a necessidade de encontrar a fórmula da derivada $f’$.

Vamos construir alguma intuição

Suponhamos que temos uma função f com o gráfico correspondente:

Graph 1

Vamos começar com um ponto aleatório $x_{0}$. O objetivo é mover este ponto e torná-lo cada vez mais próximo de $x*$ de modo que $f’($x*$) = 0$. Portanto o problema pode ser dividido em duas partes:

  • Em que direção devemos mover o ponto $x$ ? Esquerda ou direita ?

  • Quanto devemos movê-lo?

A direção

Vamos construir alguma intuição para responder à primeira pergunta. Dê uma olhada no seguinte ponto:

Graph 2

Graph 3

Observe que:

  • quando o ponto $x_{0}$ está à direita do ponto ótimo $x*$ sua reta tangente sobe.

  • quando o ponto $x_{0}$ está à direita do ponto ótimo $x*$ sua reta tangente desce.

A direção de uma linha é determinada pelo sinal de sua inclinação:

  • Uma linha sobe $\implica$ que a inclinação $a$ é positiva.

  • Uma linha desce $\implica$ que a inclinação $a$ é negativa.

Observe que: \

A inclinação da reta tangente de uma função em um determinado ponto $x_{0}$ não é maior que a derivada nesse ponto $f’(x_{0})$:

$$ tangent(x*{0}): g(x) = f’(x*{0}).(x-x*{0}) + f(x*{0}) $$

Então, como resposta à pergunta “Para onde devemos mover $x_{0}$ ?”:

  • $f’(x_{0}) < 0$ $\implies$ $x_{0}$ à direita de $x*$ $\implies$ Precisamos mover $x_{0}$ para a esquerda.

  • $f’(x_{0}) > 0$ $\implies$ $x_{0}$ à esquerda de $x*$ $\implies$ Precisamos mover $x_{0}$ para a direita.

Os passos

Agora, para a segunda pergunta, Quanto devemos mover $x_{0}$ ?

Dê uma olhada nos seguintes exemplos:

Graph 4

Graph 5

Nos podemos concluir que:

  • $x_{0}$ está próximo de $x*$ => A inclinação da tangente é pequena => $f’(x_{0})$ é pequena.

  • $x_{0}$ está distante de $x*$ => A inclinação da tangente é grande => $f’(x_{0})$ é grande.

Ao responder a ambas as questões, concluímos que apenas o conhecimento da derivada no ponto $x_{0}$ pode nos dar muitos insights sobre a direção e a distância do ponto ótimo $x_{0}$.

Gradiente descendente

O gradiente descendente é a formulação das respostas das duas questões anteriores. É um algoritmo iterativo de otimização que aproxima o mínimo $x*$ da função a partir de um ponto inicial aleatório $x_{0}$. O algoritmo é declarado da seguinte forma:

$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$

onde:

  • $ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ não é mais do que a derivada de $f$ no ponto $x*{n}$.

  • $lr$ é uma constante positiva que determina o tamanho dos passos.

Notar que:

  • $x_{n}$ está à direita de $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - positivo $ => $x_{n}$ move-se para a esquerda.

  • $x_{n}$ está à esquerda de $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + positivo $ => $x_{n}$ move-se para a direita.

  • $x_{n}$ perto de $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ perto de $0$ => Pequena atualização para $x_{ n}$.

Questionário

  • Quando a descida gradiente para de iterar:

  • Quando $x_{n}$ é pequeno o suficiente.

  • Quando $x_{n}$ está próximo de $x_{0}$ .

  • Quando $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX

  • Como escolhemos $x_{0}$:

  • Nós escolhemos aleatoriamente. XXX

  • Tomamos isso na vizinhança de $x{n}$.

  • Depende do problema.

  • Por que precisamos de descida gradiente:

  • Porque os computadores não são suficientemente poderosos para calcular derivadas.

  • Porque é extremamente difícil encontrar as fórmulas derivadas dos modelos de aprendizagem profunda. XXX

  • Porque as funções possuem mais de um mínimo local.