Como a normalização em lote calcula as estatísticas da população após o treinamento?

7

Eu estava lendo o documento de normalização em lote (BN) (1) e dizia:

Para isso, uma vez treinada a rede, usamos a normalização

x^=xE[x]Var[x]+ϵ
usando a população , em vez de estatísticas de minilote.

minha pergunta é: como ele calcula as estatísticas dessa população e sobre qual conjunto de treinamento (teste, validação, treinamento)? Eu pensei que sabia o que isso significava, mas depois de algum tempo, percebo que não tenho certeza de como isso é calculado. Suponho que ele tente estimar a verdadeira média e variância, embora não tenha certeza de como isso acontece. O que eu provavelmente faria é calcular a média e a variação de acordo com todo o conjunto de dados e usar esses momentos para inferir.

No entanto, o que me fez suspeitar que estou errado é a discussão deles sobre a estimativa de variância imparcial, mais adiante na mesma seção:

Usamos a estimativa de variância imparcial Var[x]=mm1EB[σB2] onde a expectativa é mais do que treinar mini-lotes de tamanho m e σB2 são suas variações de amostra.

Já que estamos falando de estatísticas populacionais, esse comentário no jornal parece ter saído do nada (para mim) e não tinha certeza do que eles estavam falando. Eles estão apenas esclarecendo (aleatoriamente) que usam estimativas imparciais durante o treinamento ou estão usando uma estimativa imparcial para calcular a estatística da população?


1 : Ioffe S. e Szegedy C. (2015),
"Normalização de lotes: acelerando o treinamento em rede profunda reduzindo a mudança de Covariável Interna",
Anais da 32ª Conferência Internacional sobre Aprendizado de Máquina , Lille, França, 2015.
Journal of Machine Learning Research: Volume W&CP 37

Pinóquio
fonte

Respostas:

6

Normalmente, as estatísticas da população são obtidas do conjunto de treinamento. Se você incluir o conjunto de testes, no momento do teste, você terá informações que tecnicamente não devem ter acesso (informações sobre todo o conjunto de dados). Pelo mesmo motivo, o conjunto de validação não deve ser usado para calcular essas estatísticas.

Lembre-se de que, devido ao fato de a normalização em lote não estar apenas na camada de entrada, as estatísticas da população variam de época para época, à medida que a rede aprende e altera seus parâmetros (e, portanto, suas saídas em cada camada).

Portanto, a maneira comum de calcular essas estatísticas é manter uma média (decadente ou em movimento exponencial) durante o treinamento. Isso suavizará as variações estocásticas devido ao treinamento em mini-lotes e manter-se atualizado com o status atual do aprendizado. Você pode ver um exemplo disso no código da tocha para a norma do lote: https://github.com/torch/nn/blob/master/lib/THNN/generic/BatchNormalization.c#L22

O artigo menciona que eles usam médias móveis em vez de apenas manter as últimas estatísticas computadas:

Usando médias móveis, podemos rastrear a precisão de um modelo enquanto ele treina.

Para sua segunda pergunta, eles estão dizendo que usam essa estimativa imparcial para estimar a variação populacional (para inferência futura).

Jenkar
fonte
0

Inferência, mesmo que o tamanho do seu lote não seja um, a norma do lote também se baseia em todo o conjunto de treinamento (tornando a inferência estável).

Lerner Zhang
fonte