Como o tamanho do lote afeta a convergência do SGD e por quê?

18

Eu já vi conclusões semelhantes em muitas discussões, de que à medida que o tamanho de minibatch aumenta, a convergência do SGD fica realmente mais difícil / pior, por exemplo, este artigo e esta resposta . Também ouvi falar de pessoas que usam truques como pequenas taxas de aprendizado ou tamanhos de lote no estágio inicial para resolver essa dificuldade com tamanhos de lotes grandes.

No entanto, parece contra-intuitivo, pois a perda média de um minibatch pode ser considerada uma aproximação à perda esperada na distribuição de dados, quanto maior o tamanho do lote, mais preciso ele deve ser. Por que na prática não é esse o caso?

1|X|xXeu(x,W)Expdumatuma[eu(x,W)]


Aqui estão alguns dos meus pensamentos (provavelmente errados) que tentam explicar.

Os parâmetros do modelo dependem muito um do outro, quando o lote fica muito grande, ele afeta muitos parâmetros de uma só vez, de modo que é difícil para os parâmetros alcançarem uma dependência inerente estável? (como o problema interno de turno covariável mencionado no documento de normalização do lote )

Ou quando quase todos os parâmetros são responsáveis ​​em todas as iterações, eles tendem a aprender padrões implícitos redundantes, reduzindo a capacidade do modelo? (Quero dizer, por problemas de classificação de dígitos, alguns padrões devem ser responsáveis ​​por pontos, outros por bordas, mas quando isso acontece, todo padrão tenta ser responsável por todas as formas).

Ou porque, quando o tamanho dos lotes se aproxima da escala do conjunto de treinamento, os minibatches não podem mais ser vistos como iid da distribuição de dados, pois haverá uma grande probabilidade de minibatches correlacionados?


Atualização
Como apontado na resposta de Benoit Sanchez, um motivo importante é que minibatches grandes exigem mais computação para concluir uma atualização, e a maioria das análises usa uma quantidade fixa de épocas de treinamento para comparação.

No entanto, este artigo (Wilson e Martinez, 2003) mostra que um tamanho de lote maior ainda é um pouco desvantajoso, mesmo com quantidade suficiente de épocas de treinamento. Geralmente é esse o caso? insira a descrição da imagem aqui

dontloo
fonte

Respostas:

12

N

  • 27N
  • 8343×N200000,47N

Você pode ver que em lotes maiores, você precisa de muito menos atualizações para a mesma precisão.

Mas não pode ser comparado porque não está processando a mesma quantidade de dados. Estou citando o primeiro artigo:

kBj1jkBj

Aqui, trata-se de processar a mesma quantidade de dados e, embora haja uma pequena sobrecarga para vários mini-lotes, isso exige recursos de processamento comparáveis.

Existem várias maneiras de entender por que várias atualizações são melhores (para a mesma quantidade de dados sendo lidos). É a ideia principal da descida estocástica do gradiente versus descida do gradiente. Em vez de ler tudo e se corrigir no final, você se corrige no caminho, tornando as próximas leituras mais úteis, pois você se corrige com um palpite melhor. Geometricamente, várias atualizações são melhores porque você está desenhando vários segmentos, cada um na direção do gradiente (aproximado) no início de cada segmento. enquanto uma única grande atualização é um único segmento desde o início, na direção do gradiente (exato). É melhor mudar de direção várias vezes, mesmo que a direção seja menos precisa.

O tamanho dos mini-lotes é essencialmente a frequência das atualizações: os minibatches menores, mais atualizações. Em um extremo (minibatch = conjunto de dados), você tem descida de gradiente. No outro extremo (minibatch = uma linha), você tem SGD por linha. De qualquer forma, o SGD por linha é melhor, mas minibatches maiores são adequados para uma paralelização mais eficiente.

No final do processo de convergência, o SGD se torna menos preciso que o GD (em lote). Mas, nesse ponto, as coisas se tornam (geralmente) uma espécie de ajuste inutilmente preciso. Enquanto você obtém uma função de perda um pouco menor no conjunto de treinamento, você não obtém poder preditivo real. Você está procurando apenas o melhor preciso, mas isso não ajuda. Se a função de perda estiver corretamente regularizada (o que evita o ajuste excessivo), você não faz exatamente o ajuste "excessivo", apenas o ajuste "inútil". Isso mostra como uma mudança não significativa na precisão no conjunto de testes.

Benoit Sanchez
fonte
1
obrigado, faz muito sentido. Então, basicamente, se você fizer a mesma quantidade de atualizações, um tamanho de lote maior será pelo menos tão bom, certo?
Dontloo
Você conhece algum experimento publicado sobre esse assunto (comparando diferentes tamanhos de lote com um número fixo de atualizações)?
Dontloo
Sim, para o mesmo número de atualizações, lotes maiores são sempre melhores. Não conheço uma publicação, se alguma vez encontrar uma, vou publicá-la.
Benoit Sanchez
Eu li o resto da sua pergunta (a tabela). Curiosamente, mostra resultados em um conjunto de testes, enquanto o objetivo do gradiente decente é otimizar o conjunto de treinamento. É possível que pequenos lotes evitem um certo tipo de sobreajuste menor, randomizando o ideal. É uma coisa sutil sobre a qual não tenho noção.
Benoit Sanchez
Segundo o artigo, a diferença de precisão não é significativa. Eles só querem salientar que a precisão é essencialmente a mesma. O que eles principalmente querem ressaltar é que o SGD com pequenos lotes é muito mais rápido.
Benoit Sanchez
4

Para adicionar à resposta de Curtis White (e adicionar mais algumas referências):

Sim, o SGD funciona como um tipo de regularização. Isso é importante porque, caso contrário, é difícil explicar por que os DNNs nem sempre se ajustam demais, porque podem .

A razão, pelo que entendi, é que o SGD causa 'pulos' no espaço dos parâmetros, portanto, durante o treinamento, os parâmetros não podem permanecer em um mínimo estreito, apenas nos (ou próximos) dos mais amplos. E esses mais amplos aparentemente [1] generalizam melhor (ou seja, menos adaptados).

Mais referências:

  • Aqui está [2] outro artigo que formaliza isso (ou tenta, eu não segui tudo, verifique você mesmo!)
  • Este artigo [3] afirma que há uma fase em "stochastic relaxation, or random diffusion"que a estocástica inerente ao SGD leva a "maximiz[ation of] the conditional entropy of the layer".

Ambos dizem que o SGD corresponde a um termo de regularização da entropia.

Definitivamente, poderia haver outras maneiras pelas quais o tamanho do lote influencia a convergência; é esse que eu conheço.


[1] Exemplo: "Uma perspectiva bayesiana sobre generalização e descida estocástica do gradiente", Smith, Le, 2018. Do resumo: "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2] "A descida do gradiente estocástico realiza inferência variacional, converge para limitar ciclos para redes profundas", Chaudhari, Soatto 2017

[3] "Abrindo a caixa preta das redes neurais profundas via informação" Schwartz-Ziv, Tishby, 2017

[4] "Compreender a aprendizagem profunda requer repensar a generalização", C. Zhang etc. 2016

dasWesen
fonte
(+1) Boas referências. btw, o primeiro autor em [4] é C. Zhang
user20160
Oh, você está certo! Editado, obrigado pela correção.
dasWesen
0

Um tamanho de lote muito grande pode impedir a convergência pelo menos ao usar o SGD e o treinamento de MLP usando Keras. Quanto ao motivo, não tenho 100% de certeza se isso tem a ver com a média dos gradientes ou se as atualizações menores oferecem maior probabilidade de escapar dos mínimos locais.

Veja aqui .

Curtis White
fonte