Regressão linear: gradiente descendente

O gradiente descendente é uma técnica matemática que encontra, de maneira iterativa, os pesos e o viés que produzem o modelo com a menor perda. O gradiente descendente encontra o melhor peso e viés repetindo o processo a seguir para diversas iterações definidas pelo usuário.

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

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

  2. Determine a direção do movimento dos pesos e do viés que reduzem a perda.

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

  4. Retorne à primeira etapa e repita o processo até que o modelo não possa reduzir o prejuízos adicionais.

O diagrama abaixo descreve os passos iterativos do gradiente descendente para encontrar os pesos e o viés que produzem o modelo com a menor perda.

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

Figura 12. O gradiente descendente é um processo iterativo que encontra os pesos e o viés que produzem o modelo com a menor perda.

Clique no ícone de adição para saber mais sobre a matemática por trás do gradiente descendente.

Em um nível concreto, podemos percorrer os degraus do gradiente descendente usando um pequeno conjunto de dados com sete exemplos para o peso de um carro em libras e a classificação de milhas por litro:

Libras em milhares (feature) 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. Calcular a inclinação da tangente da função de perda em cada peso e o viés:
  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 obter a inclinação das linhas tangentes ao peso e nós tomamos a derivada da função de perda com em relação ao peso e ao viés e, em seguida, resolver equações.

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

    Escreveremos o valor real como: $ y $.

    Calcularemos o EQM 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 e depois multiplicá-lo pelo dobro do valor do atributo. Em seguida, dividimos a soma pelo número de exemplos. O resultado é a inclinação da linha tangente ao valor do peso.

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

    Derivado de viés

    A derivada da função de perda em relação ao o viés é escrito da seguinte forma:
    $ \frac{\partial }{\partial b} \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)}) * 2 $

    Primeiro, somamos cada valor previsto menos o valor real e, em seguida, multiplicá-lo por dois. Depois, dividimos a soma pelo diversos exemplos. O resultado é a inclinação da linha tangente ao valor do viés.

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

  7. Mova um pequeno valor na direção da inclinação negativa para chegar o próximo peso e viés. Por enquanto, vamos definir arbitrariamente o "pequena quantidade" 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. Conclusão processo de 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

A perda diminui a cada atualização de peso e viés. Neste exemplo, paramos após seis iterações. Na prática, um modelo até converge. Quando um modelo converge, as iterações adicionais não reduzem mais a perda porque o gradiente descendente descobriu os pesos e o viés que quase para minimizar a perda.

Se o modelo continuar treinando a convergência passada, a perda vai começar flutuam em pequenas quantidades, já que o modelo atualiza continuamente em torno dos valores mais baixos. Isso pode dificultar e verificar se o modelo realmente convergiu. Para confirmar o modelo convergir, você vai querer continuar treinando até que a perda tenha se estabilizaram.

Curvas de perda e convergência do modelo

Ao treinar um modelo, muitas vezes você vai observar uma perda curva para determinar se o modelo tem convergente. A curva de perda mostra como a perda muda durante o treinamento do modelo. Veja a seguir o que uma perda típica de uma curva. A perda está no eixo y e as iterações estão no eixo x:

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

Figura 13. Curva de perda mostrando o modelo convergindo em torno do Marca de mil iterações.

Observe que a perda diminui drasticamente durante as primeiras iterações, depois diminui gradualmente antes de se estabilizar em torno da milésima iteração marca Após mil iterações, podemos ter certeza de que o modelo tem convergiram.

Nas figuras a seguir, desenhamos o modelo em três pontos durante o treinamento processo: o começo, o meio e o fim. Visualizar o estado do modelo nos snapshots durante o processo de treinamento os pesos e o viés, reduzindo a perda e a convergência do modelo.

Nas figuras, usamos os pesos e o viés derivados em uma iteração específica para representam o modelo. No gráfico com os pontos de dados e o snapshot do modelo, linhas de perda azuis do modelo para os pontos de dados mostram a quantidade de perda. O quanto mais longas as linhas, maior a perda.

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

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

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

Perto da 400a iteração, podemos ver que o gradiente descendente encontrou o o peso e o viés que produzem um modelo melhor.

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

Figura 15. Curva de perda e snapshot do modelo mais ou menos no meio do treinamento.

Por volta da 1.000a iteração, podemos ver que o modelo convergiu, para produzir um modelo com a menor perda possível.

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

Figura 16. Curva de perda e snapshot do modelo perto do final do treinamento de desenvolvimento de software.

Exercício: testar seu conhecimento

Qual é o papel do gradiente descendente na regressão linear?
O gradiente descendente é um processo iterativo que encontra o melhor pesos e vieses que minimizam a perda.
O gradiente descendente ajuda a determinar que tipo de perda usar quando treinar um modelo, por exemplo, L1 ou L2.
O gradiente descendente não está envolvido na seleção de uma perda. para o treinamento de modelo.
O gradiente descendente remove os outliers do conjunto de dados para ajudar o modelo. fazer previsões melhores.
O gradiente descendente não muda o conjunto de dados.

Convergência e funções convexas

As funções de perda para modelos lineares sempre produzem uma convexa. Como resultado de essa propriedade, quando um modelo de regressão linear converge, sabemos que o modelo encontramos os pesos e o viés que produzem a menor perda.

Se fizermos um gráfico da superfície de perda de um modelo com um atributo, veremos forma convexa. Veja a seguir a superfície de perda do conjunto de dados de milhas por galão usadas nos exemplos anteriores. O peso está no eixo X, a polarização 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 o formato convexo.

Neste exemplo, um peso de -5,44 e um viés de 35,94 produzem a menor perda. às 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, as iterações apenas causam o gradiente descendente para mover os valores de peso e viés para com valores muito pequenos em torno do mínimo. Se fizéssemos um gráfico dos pesos e dos pontos de viés durante o gradiente descendente, os pontos se parecem com uma bola rolando descendo um morro, e finalmente para 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 perdas mostrando pontos do gradiente descendente parando no ponto mais baixo ponto no gráfico.

Observe que os pontos de perda pretos criam a forma exata da curva de perda: uma declínio acentuado antes de se inclinar gradualmente até atingirem o ponto mais baixo ponto na superfície de perda.

É importante observar que o modelo quase nunca encontra mínimo para cada peso e viés, mas encontra um valor muito próximo dele. Também é importante notar que o mínimo para os pesos e o viés não correspondem a perda zero, apenas o valor que produz a menor perda .

Usar 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 graficamente o modelo para ver como e que ele se ajuste aos dados:

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

Figura 20. Gráfico de modelo gerado 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 viés de rede produzem um modelo com menos perda.