Batch normalization is a technique for improving the speed, performance, and stability of artificial neural networks. Batch normalization is used to normalize the input layer by adjusting and scaling the activations.

Batch normalization was introduced in a 2015 paper 1 2. While the effect of batch normalization is evident, the reasons behind its effectiveness remain under discussion. It was believed that it can mitigate the problem of internal covariate shift, where parameter initialization and changes in the distribution of the inputs of each layer affects the learning rate of the network.1 Recently, some scholars have shown that batch normalization does not reduce internal covariate shift, but rather smooths the objective function to improve the performance.4 Others prove that batch normalization achieves length-direction decoupling, and thereby accelerates neural networks 5. Wikipedia Reference