Qual é a diferença entre a descida de gradiente e a descida de gradiente estocástica?


Respostas:


28

Para uma explicação rápida e simples:

Tanto na descida do gradiente (GD) quanto na descida do gradiente estocástico (SGD), você atualiza um conjunto de parâmetros de maneira iterativa para minimizar uma função de erro.

Enquanto estiver no GD, você precisará executar TODAS as amostras no seu conjunto de treinamento para fazer uma única atualização para um parâmetro em uma iteração específica, no SGD, por outro lado, você usa APENAS UM ou SUBSET da amostra de treinamento do seu conjunto de treinamento para fazer a atualização para um parâmetro em uma iteração específica. Se você usar SUBSET, ele será chamado de descida gradiente estocástico Minibatch.

Portanto, se o número de amostras de treinamento for grande, na verdade muito grande, o uso da descida de gradiente poderá demorar muito, pois em todas as iterações, quando você está atualizando os valores dos parâmetros, está executando o conjunto de treinamento completo. Por outro lado, o uso do SGD será mais rápido, porque você usa apenas uma amostra de treinamento e ela começa a melhorar a partir da primeira amostra.

O SGD geralmente converge muito mais rápido em comparação com o GD, mas a função de erro não é tão minimizada quanto no caso do GD. Geralmente, na maioria dos casos, a aproximação aproximada que você obtém no SGD para os valores dos parâmetros é suficiente porque eles atingem os valores ótimos e continuam oscilando lá.

Se você precisar de um exemplo disso com um caso prático, verifique as anotações de Andrew NG aqui, onde ele mostra claramente as etapas envolvidas nos dois casos. cs229-notes

Fonte: Tópico Quora


obrigado, brevemente assim? Existem três variantes da descida de gradiente: Lote, Estocástico e Minibrilho: O lote atualiza os pesos após todas as amostras de treinamento terem sido avaliadas. Os pesos estocásticos são atualizados após cada amostra de treinamento. O Minibatch combina o melhor dos dois mundos. Não usamos o conjunto de dados completo, mas não usamos o ponto de dados único. Usamos um conjunto de dados selecionado aleatoriamente em nosso conjunto de dados. Dessa forma, reduzimos o custo do cálculo e obtemos uma variação menor que a versão estocástica.
Desenvolvedor

5

A inclusão da palavra estocástico significa simplesmente que as amostras aleatórias dos dados de treinamento são escolhidas em cada execução para atualizar o parâmetro durante a otimização, dentro da estrutura de descida de gradiente .

Fazendo isso, não apenas erros calculados e atualiza pesos em iterações mais rápidas (porque processamos apenas uma pequena seleção de amostras de uma só vez), mas também ajuda a avançar para um ótimo mais rapidamente. Dê uma olhada nas respostas aqui , para obter mais informações sobre por que o uso de minibatches estocásticos para treinamento oferece vantagens.

Uma desvantagem, talvez, é que o caminho para o ótimo (assumindo que sempre seria o mesmo ideal) pode ser muito mais barulhento. Portanto, em vez de uma boa curva de perda suave, mostrando como o erro diminui a cada iteração da descida do gradiente, você pode ver algo assim:

curva de perda barulhenta

Vemos claramente a perda diminuindo ao longo do tempo, no entanto, existem grandes variações de época para época (lote de treinamento para lote de treinamento), portanto a curva é barulhenta.

Isso ocorre simplesmente porque calculamos o erro médio em nosso subconjunto estocástico / aleatoriamente selecionado, de todo o conjunto de dados, em cada iteração. Algumas amostras produzirão alto erro, outras baixas. Portanto, a média pode variar, dependendo de quais amostras foram usadas aleatoriamente para uma iteração de descida de gradiente.


obrigado, brevemente assim? Existem três variantes da descida de gradiente: Lote, Estocástico e Minibrilho: O lote atualiza os pesos após todas as amostras de treinamento terem sido avaliadas. Os pesos estocásticos são atualizados após cada amostra de treinamento. O Minibatch combina o melhor dos dois mundos. Não usamos o conjunto de dados completo, mas não usamos o ponto de dados único. Usamos um conjunto de dados selecionado aleatoriamente em nosso conjunto de dados. Dessa forma, reduzimos o custo do cálculo e obtemos uma variação menor que a versão estocástica.
Desenvolvedor

Nn=1

tks, isso está claro!
datdinhquoc 28/09/19

5

Na descida de gradiente ou na descida de gradiente de lote, usamos todos os dados de treinamento por época, enquanto na descida de gradiente estocástica, usamos apenas um exemplo de treinamento por época e a descida de gradiente de mini-lote fica entre esses dois extremos, nos quais podemos usar um minilote (pequena porção) de dados de treinamento por época, a regra geral para selecionar o tamanho do minilote está no poder de 2 como 32, 64, 128 etc.
Para obter mais detalhes: notas da aula do cs231n


obrigado, brevemente assim? Existem três variantes da descida de gradiente: Lote, Estocástico e Minibrilho: O lote atualiza os pesos após todas as amostras de treinamento terem sido avaliadas. Os pesos estocásticos são atualizados após cada amostra de treinamento. O Minibatch combina o melhor dos dois mundos. Não usamos o conjunto de dados completo, mas não usamos o ponto de dados único. Usamos um conjunto de dados selecionado aleatoriamente em nosso conjunto de dados. Dessa forma, reduzimos o custo do cálculo e obtemos uma variação menor que a versão estocástica.
Desenvolvedor
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.