Gradiente descendente

aprendizagem profunda
matemática
descida gradiente
Gradiente descendente cover image

Introdução

Imagine que temos uma função f(x)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)=0f'(x) = 0

O fato é que encontrar a fórmula de ff' 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 ff'.

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 x0x_{0}. O objetivo é mover este ponto e torná-lo cada vez mais próximo de xx* de modo que f(f'(x*)=0) = 0. Portanto o problema pode ser dividido em duas partes:

  • Em que direção devemos mover o ponto xx ? 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 x0x_{0} está à direita do ponto ótimo xx* sua reta tangente sobe.

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

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

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

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

Observe que: \

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

tangent(x0):g(x)=f(x0).(xx0)+f(x0)tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0})

Então, como resposta à pergunta "Para onde devemos mover x0x_{0} ?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} à direita de xx*     \implies Precisamos mover x0x_{0} para a esquerda.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} à esquerda de xx*     \implies Precisamos mover x0x_{0} para a direita.

Os passos

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

Dê uma olhada nos seguintes exemplos:

Graph 4

Graph 5

Nos podemos concluir que:

  • x0x_{0} está próximo de xx* => A inclinação da tangente é pequena => f(x0)f'(x_{0}) é pequena.

  • x0x_{0} está distante de xx* => A inclinação da tangente é grande => f(x0)f'(x_{0}) é grande.

Ao responder a ambas as questões, concluímos que apenas o conhecimento da derivada no ponto x0x_{0} pode nos dar muitos insights sobre a direção e a distância do ponto ótimo x0x_{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 xx* da função a partir de um ponto inicial aleatório x0x_{0}. O algoritmo é declarado da seguinte forma:

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

onde:

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

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

Notar que:

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

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

  • xnx_{n} perto de xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} perto de 00 => Pequena atualização para xnx_{ n}.

Questionário

  • Quando a descida gradiente para de iterar:

  • Quando xnx_{n} é pequeno o suficiente.

  • Quando xnx_{n} está próximo de x0x_{0} .

  • Quando dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Como escolhemos x0x_{0}:

  • Nós escolhemos aleatoriamente. XXX

  • Tomamos isso na vizinhança de xnx{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.


Career Services background pattern

Serviços de carreira

Contact Section background image

Vamos manter-nos em contacto

Code Labs Academy © 2025 Todos os direitos reservados.