Quando podemos diferenciar a função de custo e encontrar parâmetros resolvendo equações obtidas por meio de diferenciação parcial com relação a cada parâmetro e descobrir onde a função de custo é mínima. Também acho que é possível encontrar vários locais onde as derivadas são zero, assim podemos verificar todos esses locais e encontrar mínimos globais
por que a descida gradiente é executada?
machine-learning
computational-statistics
Niranjan Kotha
fonte
fonte
Respostas:
Mesmo no caso de, digamos, modelos lineares, nos quais você tem uma solução analítica, ainda pode ser melhor usar um solucionador iterativo.
Como exemplo, se considerarmos a regressão linear, a solução explícita exige a inversão de uma matriz que tenha complexidade . Isso se torna proibitivo no contexto de big data.O(N3)
Além disso, muitos problemas no aprendizado de máquina são convexos; portanto, o uso de gradientes garante que chegaremos ao extremo.
Como já apontado, ainda existem problemas não convexos relevantes, como redes neurais, onde métodos de gradiente (retropropagação) fornecem um solucionador eficiente. Novamente, isso é especialmente relevante para o caso de aprendizado profundo.
fonte
A descida do gradiente não é necessária. Acontece que a descida do gradiente geralmente é um algoritmo de otimização horrivelmente ineficiente! Para métodos iterativos, muitas vezes é possível encontrar uma direção melhor para se mover do que onde o gradiente é mais íngreme.
Isso é um pouco de resposta inversa. Sua pergunta realmente deveria ser: "por que precisamos de métodos iterativos?" Por exemplo. por que não ir direto para a solução se o problema é convexo, a condição de Slater se mantém e as condições de primeira ordem são necessárias e condições suficientes para um ótimo? Ou seja, quando a solução pode ser descrita como a solução para um sistema de equações, por que não simplesmente resolver o sistema? A resposta é que:
fonte
No cálculo 101, aprendemos sobre como otimizar uma função usando o "método analítico": precisamos apenas obter a derivada da função de custo e definir a derivada como 0 e depois resolver a equação. Este é realmente um problema de brinquedo e quase nunca acontecerá no mundo real.
No mundo real, muitas funções de custo não têm derivada em todos os lugares (além disso, a função de custo pode ser discreta e não possui derivada). Além disso, mesmo que você possa calcular a derivada, não pode simplesmente resolver a equação analiticamente (por exemplo, pense em como resolver analiticamente? Posso dizer que a resposta numérica é , mas não sei a solução analítica). Devemos usar alguns métodos numéricos (verifique o porquê aqui nos casos polinomiais Teorema de Abel Ruffin ).x7+x3−52+ex+log(x+x2)+1/x=0 x=1.4786
Métodos iterativos são ótimos de usar e muito intuitivos de entender. Suponha que você queira otimizar uma função, em vez de resolver uma equação e obter a resposta, tente melhorar sua resposta pelo número de iterações / etapas após iteração suficiente, a resposta será próxima de "resposta verdadeira". Digamos que, se você usa cálculo para minimizar , obtém diretamente , mas usando métodos numéricos, pode obter .f(x)=x2 x=0 x=1.1234×10−20
Agora, é importante entender como esses métodos iterativos funcionam. O conceito principal é saber como atualizar seus parâmetros de entrada para obter uma solução melhor. Suponha que você queira minimizar(observe que essa função de custo não é diferenciável em todos os lugares, mas pode ser diferenciada em "na maioria dos lugares", isso é bom o suficiente para nós, pois sabemos como atualizar na "maioria dos lugares".), atualmente você está em , e o custo é , agora você deseja atualizar para diminuir a função objetiva. Como você faria isso? Você pode dizer que quero diminuir os dois , mas por quê? Na verdade, você está implícito usandof(x1,x2)=x21+x22+|x1+x2| (1,1) 4.0 (x1,x2) x1 x2 o conceito de gradiente "mudando pequena quantidade de , o que acontecerá em ". x y . Em , a derivada é , portanto, gradiente negativo vezes uma taxa de aprendizado digamos , é , por isso atualizamos nossa solução de para que possuem melhor custo.(1,1) (3,3) α=0.001 1 , 1 ( 0,997 , 0,997 )(−0.003,−0.003) 1,1 (0.997,0.997)
fonte
A abordagem que você mencionou só pode ser usada para resolver um conjunto de equações lineares, por exemplo, no caso de regressão linear, mas digamos que para resolver um conjunto de equações não lineares, em casos como redes neurais com ativações sigmóides, a descida em gradiente é a abordagem. para ir. Assim, a descida do gradiente é uma abordagem mais genérica.
Mesmo para equações lineares, o tamanho das matrizes dado pelo conjunto de equações lineares é enorme e pode ser difícil restringir o requisito de memória.
fonte