O método BatchNormalization na conjuntura geral das redes neurais
So, se tem então as preactivations e o método BatchNormalization atua nelas. Consideremos como hpreact. Consideremos o simples caso de uma camada W1 com bias b1. A entrada para essa camada seriam os embeddings, denominemo-os embds.
Pode-se ter então a seguinte declaração para hpreact.
hpreact = embd @ W1 + b1.
O método BatchNormalization ajusta o hpreact do seguinte modo.
hpreact = bngain * (hpreact - bnmean) / bnstd + bnbias.
Normaliza subtraindo os valores das preactivations pela média do batch e dividindo pelo desvio padrão do batch.
Para que haja distinções e diversificações da distribuição para um aprendizado mais adequado, se considera o bngain e o bnbias, que são inicializados e consideramos como parâmetros a serem aprendidos.
Para a inference, como se usa média e desvio padrão, o mais adequado seria considerar a média e o desvio padrão geral do training set. Pode-se calcular isso separado do treino, mas, no paper, foi já discutido um modo de se obter no próprio treino, onde com torch.no_grad() se considera a estimativa da média geral e do desvio padrão geral com o valor original ajustado com pequenos passos com a média e o desvio padrão do batch em cada iteração.
Assim, essa seria a conjuntura geral desse método para redes neurais.
Really great learning.