Eu estava tentando aprender aprendizado de máquina usando o material Coursera . Nesta palestra, Andrew Ng usa o algoritmo de descida de gradiente para encontrar os coeficientes do modelo de regressão linear que minimizarão a função de erro (função de custo).
Para regressão linear, precisamos de descida de gradiente? Parece que eu posso diferenciar analiticamente a função de erro e defini-la como zero para resolver os coeficientes; isso esta certo?
Respostas:
Os mínimos quadrados lineares podem ser resolvidos por
0) Usando o solucionador de mínimos quadrados lineares de alta qualidade, com base em SVD ou QR, conforme descrito abaixo, para mínimos quadrados lineares sem restrições ou com base em uma versão de Programação Quadrática ou Otimização Cônica para mínimos quadrados limitados ou com restrição linear, conforme descrito abaixo. Esse solucionador é pré-enlatado, fortemente testado e pronto para uso - use-o.
1) SVD, que é o método mais confiável e numericamente preciso, mas também exige mais computação do que alternativas. No MATLAB, a solução SVD do problema de mínimos quadrados lineares sem restrições A * X = b é pinv (A) * b, que é muito precisa e confiável.
2) QR, que é razoavelmente confiável e numericamente preciso, mas não tanto quanto SVD, e é mais rápido que SVD. No MATLAB, a solução QR do problema de mínimos quadrados lineares sem restrições A * X = b é A \ b, que é razoavelmente preciso e confiável, exceto quando A está mal condicionado, ou seja, possui um grande número de condições. A \ b é mais rápido em calcular que pinv (A) * b, mas não é tão confiável ou preciso.
3) Formação das equações normais (TERRÍVEL do ponto de vista da confiabilidade e precisão numérica, porque quadratura o número da condição, o que é uma coisa muito ruim de se fazer) e
3a) resolver pela fatoração de Cholesky (não é bom)
3b) matriz explicitamente invertida (HORRÍVEL)
4) Solucionando problemas de programação quadrática ou de cone de segunda ordem
4a) Resolva usando o software de programação quadrática de alta qualidade. Isso é confiável e numericamente preciso, mas leva mais tempo que SVD ou QR. No entanto, é fácil adicionar restrições lineares vinculadas ou gerais, ou termos de penalidade ou regularização linear ou quadrática (duas normas) à função objetivo, e ainda resolver o problema usando o software de programação quadrática.
4b) Resolva como um problema de cone de segunda ordem usando o software de otimização cônica de alta qualidade. As observações são iguais às do software de programação quadrática, mas você também pode adicionar restrições lineares vinculadas ou gerais e outras restrições cônicas ou termos objetivos de função, como termos de penalização ou regularização em várias normas.
5) Resolva usando um software de otimização não linear de uso geral de alta qualidade. Isso ainda pode funcionar bem, mas em geral será mais lento que o software de Programação Quadrática ou Otimização Cônica, e talvez não seja tão confiável. No entanto, pode ser possível incluir não apenas restrições lineares vinculadas e gerais, mas também restrições não lineares na otimização de mínimos quadrados. Além disso, pode ser usado para mínimos quadrados não lineares e se outros termos não lineares forem adicionados à função objetivo.
6) Resolva usando algoritmos de otimização não linear de uso geral péssimo -> NUNCA FAÇA ISSO.
7) Resolva usando o pior algoritmo de otimização não linear de propósito geral possível, ou seja, descida de gradiente. Use isso apenas se desejar ver o quão ruim e não confiável um método de solução pode ser. Se alguém lhe disser para usar a descida de gradiente para resolver problemas lineares de mínimos quadrados
7 i) Aprenda sobre computação estatística com alguém que sabe algo sobre ela
7 ii) Aprenda a otimização de alguém que sabe algo sobre isso.
fonte
Encontrar coeficientes de um modelo linear é tecnicamente o processo de encontrar soluções para um conjunto de Equações Lineares .
Para computar essas soluções, muitas
optimization techniques
foram desenvolvidas eGradient Descent
são uma delas.Assim, a descida do gradiente não é a única maneira de fazer isso.
Andrew Ng o usa no curso porque é simples de entender, sem lidar com álgebra linear avançada e computação numérica.
fonte
GD
-gradient decent- é usado como exemplo para introduzir métodos mais avançados (por exemplo,SGD
- estocásticoGD
).SGD
. Como a maioria das pessoas não possui matrizes muito grandes, a decomposição do QR é melhor. Em geral, a decomposição do QR moldou o mundo numérico; O SIAM o selecionou como um dos 10 principais algoritmos do século XX.