Quais são as diferenças entre 'época', 'lote' e 'minibatch'?

38

Até onde eu sei, ao adotar a descida do gradiente estocástico como algoritmo de aprendizado, alguém usa 'época' para o conjunto de dados completo e 'lote' para dados usados ​​em uma única etapa de atualização, enquanto outro usa 'lote' e 'minibatch' respectivamente, e os outros usam 'época' e 'minibatch'. Isso traz muita confusão ao discutir.

Então, qual é o ditado correto? Ou são apenas dialetos que são aceitáveis?

Tim
fonte

Respostas:

25
  • Época significa uma passagem por todo o conjunto de treinamento
  • Lote significa que você usa todos os seus dados para calcular o gradiente durante uma iteração.
  • Mini-lote significa que você apenas captura um subconjunto de todos os seus dados durante uma iteração.
Isto
fonte
15

Uma época normalmente significa que seu algoritmo vê todas as instâncias de treinamento uma vez. Agora, supondo que você tenha n instâncias de treinamento:

Se você executar a atualização em lote, toda atualização de parâmetro exigirá que seu algoritmo veja cada uma das instâncias de treinamento exatamente uma vez, ou seja, toda época em que seus parâmetros são atualizados uma vez.n

Se você executar a atualização em mini-lote com tamanho de lote = , toda atualização de parâmetro exigirá que seu algoritmo veja b de n instâncias de treinamento, ou seja, toda época em que seus parâmetros são atualizados aproximadamente n / b vezes.bbnn/b

nn

user1036719
fonte
4

"Época" geralmente significa expor um algoritmo de aprendizado a todo o conjunto de dados de treinamento. Isso nem sempre faz sentido, pois às vezes geramos dados.

"Lote" e "Minibatch" podem ser confusos.

Às vezes, os exemplos de treinamento precisam ser "agrupados" porque nem todos os dados podem necessariamente ser expostos ao algoritmo de uma só vez (devido a restrições de memória geralmente).

No contexto do SGD, "Minibatch" significa que o gradiente é calculado em todo o lote antes de atualizar os pesos. Se você não estiver usando um "minibatch", todos os exemplos de treinamento em um "lote" atualizarão os parâmetros do algoritmo de aprendizado de forma independente.

roda ferrosa
fonte
Você tem certeza do último parágrafo? Eu pensei que o SGD "em lote" usa todos os dados em uma época para calcular lentamente um gradiente muito preciso. Seus últimos sons sentença como um mini-lote de tamanho 1.
Matt Krause
Além disso, bem-vindo ao Cross Validated!
Matt Krause
Sim, o SGD original possui um mini-lote de tamanho 1. Acho que depende da interpretação do autor do software. Muitas vezes, lote == mini-lote, sem a documentação mencionar "mini-lote".
ferrouswheel
Err, acho que quis dizer que o GD em lote usa todos os dados. Eu costumo usar o lote e minibatch interchangably, mas "minibatch" quando eu quero salientar que é muito pequeno ...
Matt Krause