Estou participando dos cursos de aprendizado de máquina on-line e aprendi sobre a descida do gradiente para calcular os valores ideais da hipótese.
h(x) = B0 + B1X
por que precisamos usar a descida do gradiente se podemos encontrar facilmente os valores com a fórmula abaixo? Isso parece direto e fácil também. mas o GD precisa de várias iterações para obter o valor.
B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)
B0 = Mean(Y) – B1 * Mean(X)
NOTA: Tomada como em https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial
Eu verifiquei as perguntas abaixo e, para mim, não estava claro para entender.
Por que a descida do gradiente é necessária?
Por que a otimização é resolvida com descida gradiente e não com uma solução analítica?
As respostas acima comparam GD x usando derivadas.
Respostas:
A principal razão pela qual a descida do gradiente é usada para regressão linear é a complexidade computacional: é computacionalmente mais barato (mais rápido) encontrar a solução usando a descida do gradiente em alguns casos.
A fórmula que você escreveu parece muito simples, mesmo computacionalmente, porque funciona apenas para casos univariados, ou seja, quando você possui apenas uma variável. No caso multivariado, quando você tem muitas variáveis, as fórmulas são um pouco mais complicadas no papel e exigem muito mais cálculos quando implementadas em software: Aqui, você precisa calcular o matriz X ′ X
Portanto, a descida do gradiente permite economizar muito tempo nos cálculos. Além disso, a maneira como isso é feito permite uma paralelização trivial, ou seja, distribuir os cálculos entre vários processadores ou máquinas. A solução de álgebra linear também pode ser paralelizada, mas é mais complicada e ainda cara.
Além disso, há versões de descida gradiente quando você mantém apenas um pedaço de seus dados na memória, diminuindo os requisitos de memória do computador. No geral, para problemas extra grandes, é mais eficiente que a solução de álgebra linear.
Isso se torna ainda mais importante à medida que a dimensionalidade aumenta, quando você tem milhares de variáveis, como no aprendizado de máquina.
Observação . Fiquei surpreso com quanta atenção é dada à descida gradiente nas palestras de Ng. Ele passa um tempo não trivial falando sobre isso, talvez 20% de todo o curso. Para mim, é apenas um detalhe de implementação, é exatamente como você encontra o melhor. A chave está na formulação do problema de otimização e como exatamente você o acha não essencial. Eu não me preocuparia muito com isso. Deixe isso para as pessoas da ciência da computação e concentre-se no que é importante para você como estatístico.
Dito isto, devo me qualificar dizendo que é realmente importante entender a complexidade computacional e a estabilidade numérica dos algoritmos da solução. Ainda acho que você não deve conhecer os detalhes da implementação e o código dos algoritmos. Geralmente, não é o melhor uso do seu tempo como estatístico.
Nota 1 . Escrevi que você tem que inverter a matriz para fins didáticos e não é como costuma resolver a equação. Na prática, os problemas de álgebra linear são resolvidos usando algum tipo de fatoração, como QR, onde você não inverte diretamente a matriz, mas faz outras manipulações matematicamente equivalentes para obter uma resposta. Você faz isso porque a inversão de matriz é uma operação cara e numericamente instável em muitos casos.
Isso traz outra pequena vantagem do algoritmo de descida de gradiente como efeito colateral: funciona mesmo quando a matriz de design apresenta problemas de colinearidade. O caminho usual da álgebra linear explodiria e a descida do gradiente continuará, mesmo para os preditores colineares.
fonte
Primeiro, eu recomendo fortemente que você leia as duas postagens a seguir (se não estiver duplicada)
Verifique a resposta de JM em
Qual algoritmo é usado na regressão linear?
Verifique a resposta de Mark (do ponto de vista da estabilidade numérica) em
Precisamos de descida gradiente para encontrar os coeficientes de um modelo de regressão linear?
Em alto nível, existem duas maneiras de resolver um sistema linear. Método direto e o método iterativo. Observe que o método direto está resolvendo , e a descida do gradiente (um método iterativo de exemplo) está resolvendo diretamente .UMATA x = ATb minimizar ∥ A x - b ∥ 2
Comparando com métodos diretos (Say Decomposition QR / LU ). Os métodos iterativos têm algumas vantagens quando temos uma grande quantidade de dados ou os dados são muito escassos.
Suponha que nossa matriz de dados seja enorme e não seja possível caber na memória, pode ser usada a descida estocástica do gradiente. Tenho uma resposta para explicar por que: Como a descida estocástica do gradiente pode economizar tempo em comparação com a descida padrão do gradiente?UMA
Para dados esparsos, consulte o ótimo livro Métodos iterativos para sistemas lineares esparsos
Por outro lado, acredito que uma das razões pelas quais Andrew Ng enfatiza isso é o fato de ser um método genérico (método mais usado no aprendizado de máquina) e pode ser usado em outros modelos, como regressão logística ou rede neural.
fonte
O Sycorax está certo de que você não precisa de descida de gradiente ao estimar a regressão linear. Seu curso pode estar usando um exemplo simples para ensinar a descida do gradiente a preceder versões mais complicadas.
Uma coisa interessante que eu quero acrescentar, porém, é que não há atualmente um pequeno nicho de pesquisa envolvendo terminando gradiente descendente cedo para evitar overfitting de um modelo.
fonte
O método que você mencionou, ou seja, usando correlação, é aplicável apenas a um preditor e a uma quantidade de interceptação. Apenas observe o formulário. Então, quando o número de preditores é mais do que um em número, qual é a saída? Então é preciso recorrer aos outros métodos, ou seja, a equação ou otimização normal.
Minha sugestão para você é não apenas resolver um problema. Tente entender a teoria. O Prof Ng é um dos melhores professores deste mundo que gentilmente ensina Machine Learning no MOOC. Portanto, quando ele está instruindo dessa maneira, deve ter algumas intenções latentes. Espero que você não se importe com minhas palavras.
Muito bem sucedida.
fonte
Primeiro, sim, a verdadeira razão é a de Tim Atreides; este é um exercício pedagógico.
No entanto, é possível, embora improvável, que alguém queira fazer uma regressão linear em, digamos, vários trilhões de pontos de dados sendo transmitidos a partir de um soquete de rede. Nesse caso, a avaliação ingênua da solução analítica seria inviável, enquanto algumas variantes de descida estocástica / gradiente adaptável convergiriam para a solução correta com o mínimo de sobrecarga de memória.
(para regressão linear, pode-se reformular a solução analítica como um sistema de recorrência, mas essa não é uma técnica geral.)
fonte
Uma outra razão é que a descida do gradiente é um método mais geral. Para muitos problemas de aprendizado de máquina, a função de custo não é convexa (por exemplo, fatoração de matriz, redes neurais), portanto você não pode usar uma solução de formulário fechado. Nesses casos, a descida em gradiente é usada para encontrar bons pontos ótimos locais. Ou, se você deseja implementar uma versão online, é necessário usar um algoritmo baseado em descida gradiente.
fonte