Introdução
Imagine que temos uma função e gostaríamos de encontrar o seu mínimo. O que você faria ?
Simples, certo? Precisamos apenas resolver a seguinte equação:
O fato é que encontrar a fórmula de 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 .
Vamos construir alguma intuição
Suponhamos que temos uma função f com o gráfico correspondente:
Vamos começar com um ponto aleatório . O objetivo é mover este ponto e torná-lo cada vez mais próximo de de modo que x*. Portanto o problema pode ser dividido em duas partes:
-
Em que direção devemos mover o ponto ? 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:
Observe que:
-
quando o ponto está à direita do ponto ótimo sua reta tangente sobe.
-
quando o ponto está à direita do ponto ótimo sua reta tangente desce.
A direção de uma linha é determinada pelo sinal de sua inclinação:
-
Uma linha sobe que a inclinação é positiva.
-
Uma linha desce que a inclinação é negativa.
Observe que: \
A inclinação da reta tangente de uma função em um determinado ponto não é maior que a derivada nesse ponto :
Então, como resposta à pergunta "Para onde devemos mover ?":
-
à direita de Precisamos mover para a esquerda.
-
à esquerda de Precisamos mover para a direita.
Os passos
Agora, para a segunda pergunta, Quanto devemos mover ?
Dê uma olhada nos seguintes exemplos:
Nos podemos concluir que:
-
está próximo de => A inclinação da tangente é pequena => é pequena.
-
está distante de => A inclinação da tangente é grande => é grande.
Ao responder a ambas as questões, concluímos que apenas o conhecimento da derivada no ponto pode nos dar muitos insights sobre a direção e a distância do ponto ótimo .
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 da função a partir de um ponto inicial aleatório . O algoritmo é declarado da seguinte forma:
onde:
-
não é mais do que a derivada de no ponto .
-
é uma constante positiva que determina o tamanho dos passos.
Notar que:
-
está à direita de => => => move-se para a esquerda.
-
está à esquerda de => => => move-se para a direita.
-
perto de => perto de => Pequena atualização para .
Questionário
-
Quando a descida gradiente para de iterar:
-
Quando é pequeno o suficiente.
-
Quando está próximo de .
-
Quando . XXX
-
Como escolhemos :
-
Nós escolhemos aleatoriamente. XXX
-
Tomamos isso na vizinhança de .
-
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.