Regressão linear: gradiente descendente

O gradiente descendente é uma técnica matemática que encontra iterativamente os pesos e a tendência que produzem o modelo com a menor perda. O gradiente descendente encontra o melhor peso e viés repetindo o processo abaixo para um número de iterações definidas pelo usuário.

O modelo começa o treinamento com pesos e vieses aleatórios próximos de zero e repete as seguintes etapas:

  1. Calcule a perda com o peso e a viés atuais.

  2. Determine a direção para mover os pesos e a viés que reduzem a perda.

  3. Mova os valores de peso e viés um pouco na direção que reduz a perda.

  4. Volte à etapa 1 e repita o processo até que o modelo não possa reduzir mais a perda.

O diagrama abaixo descreve as etapas iterativas que o gradiente descendente realiza para encontrar as ponderações e tendências que produzem o modelo com a menor perda.

Figura 12. Ilustração do processo de gradiente descendente.

Figura 12. O gradiente descendente é um processo iterativo que encontra as ponderações e tendências que produzem o modelo com a menor perda.

Clique no ícone de adição para saber mais sobre a matemática por trás da descida áspera.

De forma concreta, podemos seguir as etapas de gradiente descendente usando um pequeno conjunto de dados com sete exemplos de peso de um carro em libras e a classificação de milhas por galão:

Libras em 1.000 (recurso) Milhas por litro (rótulo)
3.5 18
3,69 15
3,44 18
3,43 16
4,34 15
4,42 14
2,37 24
  1. O modelo começa o treinamento definindo o peso e o viés como zero:
  2. $$ \small{Weight:\ 0} $$ $$ \small{Bias:\ 0} $$ $$ \small{y = 0 + 0(x_1)} $$
  3. Calcule a perda do EQM com os parâmetros do modelo atual:
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$ $$ \small{Loss= 303.71} $$
  5. Calcule a inclinação da tangente da função de perda em cada peso e a tendência:
  6. $$ \small{Weight\ slope: -119.7} $$ $$ \small{Bias\ slope: -34.3} $$

    Clique no ícone de adição para saber como calcular a inclinação.

    Para descobrir a inclinação das linhas tangentes ao peso e ao viés, tomamos a derivada da função de perda em relação ao peso e à tendência e, em seguida, resolvemos as equações.

    Escreveremos a equação para fazer uma previsão como:
    $ f_{w,b}(x) = (w*x)+b $.

    Vamos escrever o valor real como: $ y $.

    Vamos calcular a MSE usando:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    em que $i$ representa o exemplo de treinamento $ith$ e $M$ representa o número de exemplos.

    Derivada de peso

    A derivada da função de perda em relação ao peso é escrita como:
    $ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    e avalia como:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $

    Primeiro, somamos cada valor previsto menos o valor real. Em seguida, multiplicamos esse valor por duas vezes o valor do atributo. Em seguida, dividimos a soma pelo número de exemplos. O resultado é a inclinação da reta tangente ao valor do peso.

    Se resolvermos essa equação com um peso e viés iguais a zero, teremos -119,7 para a inclinação da linha.

    Derivada de viés

    A derivada da função de perda em relação à inclinação é gravada como:
    $ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    e é avaliado como:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $

    Primeiro, somamos cada valor previsto menos o valor real e depois multiplicamos por dois. Em seguida, dividimos a soma pelo número de exemplos. O resultado é a inclinação da reta tangente ao valor da inclinação.

    Se resolvermos essa equação com um peso e viés iguais a zero, teremos -34,3 para a inclinação da linha.

  7. Mova uma pequena quantidade na direção da inclinação negativa para receber o próximo peso e viés. Por enquanto, vamos definir arbitrariamente o "pequeno valor" como 0,01:
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$ $$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$ $$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$ $$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$ $$ \small{New\ weight = 1.2} $$ $$ \small{New\ bias = 0.34} $$

Use o novo peso e viés para calcular a perda e repetir. Ao concluir o processo por seis iterações, teríamos os seguintes pesos, vieses e perdas:

Iteração Peso Viés Perda (EQM)
1 0 0 303,71
2 1.2 0.34 170,67
3 2,75 0,59 67,3
4 3.17 0,72 50,63
5 3,47 0,82 42,1
6 3,68 0,9 37,74

Você pode ver que a perda diminui com cada peso e viés atualizados. Neste exemplo, paramos após seis iterações. Na prática, um modelo é treinado até convergir. Quando um modelo converge, as iterações extras não reduzem mais a perda porque o gradiente descendente encontrou os pesos e o viés que quase minimizam a perda.

Se o modelo continuar a ser treinado após a convergência, a perda vai começar a flutuar em pequenas quantidades, à medida que o modelo atualiza continuamente os parâmetros em torno dos valores mais baixos. Isso pode dificultar a verificação de que o modelo realmente foi convergido. Para confirmar que o modelo foi convergido, continue o treinamento até que a perda seja estabilizada.

Curvas de convergência e perda do modelo

Ao treinar um modelo, você geralmente analisa uma curva de perda para determinar se o modelo foi convergido. A curva de perda mostra como a perda muda à medida que o modelo é treinado. Confira a seguir como é uma curva de perda típica. A perda está no eixo y e as iterações estão no eixo x:

Figura 13. Gráfico de curva de perda mostrando uma queda acentuada e depois suave.

Figura 13. Curva de perda que mostra o modelo convergindo em torno da marca de mil iterações.

É possível ver que a perda diminui drasticamente durante as primeiras iterações e depois diminui gradualmente antes de se nivelar em torno da marca de mil iterações. Depois de 1.000 iterações, podemos ter certeza de que o modelo convergeu.

Nas figuras a seguir, desenhamos o modelo em três pontos durante o processo de treinamento: início, meio e fim. A visualização do estado do modelo em snapshots durante o processo de treinamento consolida a ligação entre a atualização dos pesos e o viés, reduzindo a perda e a convergência do modelo.

Nas figuras, usamos os pesos e a viés derivados em uma iteração específica para representar o modelo. No gráfico com os pontos de dados e o resumo do modelo, as linhas de perda azuis do modelo para os pontos de dados mostram a quantidade de perda. Quanto maior for a linha, maior será a perda.

Na figura a seguir, podemos ver que, por volta da segunda iteração, o modelo não seria bom para fazer previsões devido à grande quantidade de perdas.

Figura 14. Curva de perda e gráfico correspondente do modelo, que se afasta dos pontos de dados.

Figura 14. Curva de perda e snapshot do modelo no início do processo de treinamento.

Por volta da 400ª iteração, podemos ver que a descida á gradiente encontrou o peso e o viés que produzem um modelo melhor.

Figura 15. Curva de perda e gráfico correspondente do modelo, que corta os pontos de dados, mas não no ângulo ideal.

Figura 15. Curva de perda e instantâneo do modelo no meio do treinamento.

E por volta da 1.000ª iteração, podemos ver que o modelo convergiu, produzindo um modelo com a menor perda possível.

Figura 16. Curva de perda e gráfico correspondente do modelo, que se encaixa bem nos dados.

Figura 16. Curva de perda e instantâneo do modelo perto do final do processo de treinamento.

Exercício: testar seu conhecimento

Qual é o papel do gradiente descendente na regressão linear?
O gradiente descendente é um processo iterativo que encontra as melhores ponderações e tendências que minimizam a perda.
O gradiente descendente ajuda a determinar que tipo de perda usar ao treinar um modelo, por exemplo, L1 ou L2.
A descida do gradiente não está envolvida na seleção de uma função de perda para o treinamento do modelo.
O gradiente descendente remove valores atípicos do conjunto de dados para ajudar o modelo a fazer previsões melhores.
A descida côncava não muda o conjunto de dados.

Convergência e funções convexas

As funções de perda para modelos lineares sempre produzem uma superfície convexa. Como resultado dessa propriedade, quando um modelo de regressão linear converge, sabemos que ele encontrou os pesos e vieses que produzem a perda mais baixa.

Se representarmos a superfície de perda de um modelo com um recurso, vamos notar a forma convexa. A seguir, confira a superfície de perda do conjunto de dados de milhas por galão usado nos exemplos anteriores. O peso está no eixo x, o viés está no eixo y e a perda está no eixo z:

Figura 17. Gráfico 3D da superfície de perda.

Figura 17. Superfície de perda que mostra a forma convexa.

Neste exemplo, um peso de -5,44 e um viés de 35,94 produzem a menor perda em 5,54:

Figura 18. Gráfico 3D da superfície de perda, com (-5,44, 35,94, 5,54) na parte de baixo.

Figura 18. Superfície de perda mostrando os valores de peso e viés que produzem a menor perda.

Um modelo linear converge quando encontra a perda mínima. Portanto, iterações adicionais só fazem com que a descida morra para mover os valores de peso e viés em quantidades muito pequenas ao redor do mínimo. Se fizéssemos um gráfico dos pesos e pontos de viés durante o gradiente descendente, os pontos seriam uma esfera rolando uma colina e, por fim, parando no ponto em que não há mais inclinação para baixo.

Figura 19. Superfície de perda 3D convexa com pontos de gradiente descendente se movendo para o ponto mais baixo.

Figura 19. Gráfico de perda mostrando pontos de decréscimo de gradiente parando no ponto mais baixo no gráfico.

Observe que os pontos de perda pretos criam a forma exata da curva de perda: um aumento íngreme diminui gradualmente até atingir o ponto mais baixo na superfície de perda.

É importante observar que o modelo quase nunca encontra o mínimo exato para cada peso e viés, mas encontra um valor muito próximo dele. Também é importante observar que o mínimo para os pesos e a inclinação não corresponde a uma perda de zero, apenas a um valor que produz a perda mais baixa para esse parâmetro.

Usando os valores de peso e viés que produzem a menor perda, neste caso um peso de -5,44 e um viés de 35,94, podemos representar o modelo em um gráfico para saber como ele se encaixa nos dados:

Figura 20. Gráfico de libras em 1000s x milhas por galão, com o modelo ajustando os dados.

Figura 20. Modelo representado em gráfico usando os valores de peso e viés que produzem a menor perda.

Esse seria o melhor modelo para esse conjunto de dados, porque nenhum outro peso e valor de viés produzem um modelo com perda menor.