Redução de perda: gradiente descendente

O diagrama de abordagem iterativa (Figura 1) continha uma caixa verde ondulada intitulada "Atualizações de parâmetros do Compute". Vamos substituir o pó de fada algorítmico por algo mais substancial.

Suponha que tivéssemos o tempo e os recursos computacionais para calcular a perda de todos os valores possíveis de \(w_1\). Para os tipos de problemas de regressão que estamos examinando, o gráfico resultante da perda x \(w_1\) será sempre convexo. Em outras palavras, o enredo sempre será em forma de tigela, mais ou menos assim:

Diagrama de uma curva em forma de U, com o eixo vertical rotulado como "perda" e o eixo horizontal rotulado como o valor do peso w i.

Figura 2. Problemas de regressão geram gráficos de perda convexa em comparação com gráficos de peso.

 

Problemas convexos têm apenas um mínimo, ou seja, apenas um lugar em que a inclinação é exatamente 0. Esse mínimo é onde a função de perda converge.

O cálculo da função de perda para cada valor concebível de \(w_1\) em todo o conjunto de dados seria uma maneira ineficiente de encontrar o ponto de convergência. Vamos examinar um mecanismo melhor, muito conhecido em machine learning, chamado gradiente descendente.

O primeiro estágio no gradiente descendente é escolher um valor inicial (um ponto de partida) para \(w_1\). O ponto de partida não é muito importante. Portanto, muitos algoritmos simplesmente definem \(w_1\) como 0 ou escolhem um valor aleatório. A figura a seguir mostra que escolhemos um ponto de partida ligeiramente maior que 0:

Diagrama de uma curva em forma de U. Um ponto mais ou menos na metade do lado esquerdo da curva é rotulado como "Ponto de partida".

Figura 3. Um ponto de partida para o gradiente descendente.

Em seguida, o algoritmo de gradiente descendente calcula o gradiente da curva de perda no ponto inicial. Aqui na Figura 3, o gradiente da perda é igual à derivada (inclinação) da curva e informa qual direção é "mais quente" ou "mais fria". Quando há vários pesos, o gradiente é um vetor de derivadas parciais em relação aos pesos.

O gradiente é um vetor e tem estas duas características:

  • uma direção
  • uma magnitude

O gradiente sempre aponta na direção do aumento mais acentuado na função de perda. O algoritmo do gradiente descendente dá um passo na direção do gradiente negativo para reduzir a perda o mais rápido possível.

Diagrama de uma curva em forma de U. Um ponto no lado esquerdo da curva é rotulado como "Ponto de partida". Uma seta identificada como "gradiente negativo" aponta desse ponto para a direita.

Figura 4. O gradiente descendente depende de gradientes negativos.

Para determinar o próximo ponto ao longo da curva da função de perda, o algoritmo do gradiente descendente adiciona uma fração da magnitude do gradiente ao ponto inicial, conforme mostrado na figura a seguir:

Diagrama de uma curva em forma de U. Um ponto no lado esquerdo da curva é rotulado como "Ponto de partida". Uma seta identificada como "gradiente negativo" aponta desse ponto para a direita. Outra seta aponta da ponta da primeira para baixo em um segundo ponto na curva. O segundo ponto é rotulado como "próximo ponto".

Figura 5. Uma etapa do gradiente nos leva para o próximo ponto na curva de perda.

O gradiente descendente repete esse processo, chegando cada vez mais perto do mínimo.