Uma época em descida de gradiente estocástico é definida como uma única passagem pelos dados. Para cada minibatch SGD, amostras são coletadas, o gradiente calculado e os parâmetros atualizados. Na configuração de época, as amostras são coletadas sem substituição.
Mas isso parece desnecessário. Por que não desenhar cada minibatch do SGD como desenha aleatoriamente todo o conjunto de dados a cada iteração? Em um grande número de épocas, os pequenos desvios dos quais as amostras são vistas com mais ou menos frequência pareceriam sem importância.
neural-networks
deep-learning
gradient-descent
Restabelecer Monica
fonte
fonte
Respostas:
Além da resposta de Franck sobre aspectos práticos, e a resposta de David sobre a observação de pequenos subgrupos - os quais são pontos importantes - existem de fato algumas razões teóricas para preferir amostragem sem substituição. O motivo talvez esteja relacionado ao argumento de David (que é essencialmente o problema do colecionador de cupons ).
Em 2009, Léon Bottou comparou o desempenho da convergência em um problema específico de classificação de texto ( ).n = 781 , 265
Ele treinou uma máquina de vetores de suporte via SGD com três abordagens:
Ele examinou empiricamente a convergência , onde é a função de custo, os parâmetros na etapa da otimização, e a expectativa está acima do embaralhamento. de lotes atribuídos.C θ tE [C( θt) - minθC( θ ) ] C θt t
Esta é a sua Figura 1 ilustrando que:
Isso foi posteriormente confirmado teoricamente pelo artigo:
Sua prova se aplica apenas ao caso em que a função de perda é fortemente convexa, ou seja, não a redes neurais. É razoável esperar, no entanto, que raciocínios semelhantes possam se aplicar ao caso da rede neural (que é muito mais difícil de analisar).
fonte
De fato, é desnecessário do ponto de vista de desempenho com um grande conjunto de treinamento, mas o uso de épocas pode ser conveniente, por exemplo:
[1] fornece mais um motivo, que não é tão relevante, dada a configuração atual do computador:
[1] Bengio, Yoshua. " Recomendações práticas para o treinamento baseado em gradiente de arquiteturas profundas. " Redes Neurais: Truques do comércio. Springer Berlin Heidelberg, 2012. 437-478.
fonte
Discordo um pouco que isso claramente não importa. Digamos que haja um milhão de exemplos de treinamento e coletamos dez milhões de amostras.
Em R, podemos ver rapidamente como é a distribuição
plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")
Alguns exemplos serão visitados mais de 20 vezes, enquanto 1% deles será visitado 3 ou menos vezes. Se o conjunto de treinamento foi escolhido com cuidado para representar a distribuição esperada de exemplos em dados reais, isso pode ter um impacto real em algumas áreas do conjunto de dados - especialmente quando você começa a dividir os dados em grupos menores.
Considere o caso recente em que um eleitor de Illinois efetivamente superou a amostra em 30x e mudou dramaticamente as estimativas do modelo para seu grupo demográfico (e, em menor grau, para toda a população dos EUA). Se acidentalmente amostrarmos imagens de "Ruffed Grouse" capturadas em fundos verdes em dias nublados com uma profundidade de campo estreita e subamostrar outros tipos de imagens de galo silvestre, o modelo poderá associar esses recursos irrelevantes ao rótulo da categoria. Quanto mais maneiras houver de dividir os dados, mais desses subgrupos existirão e mais oportunidades para esse tipo de erro haverá.
fonte
samples = sample(1:1E6, size = 1E7, replace = TRUE)
plot(table(table(samples)) / 1E7)