Normalization (machine learning)

Rescaling inputs to improve model training

Part of a series on

Machine learning
and data mining

Paradigms

* Supervised learning
* Unsupervised learning
* Semi-supervised learning
* Self-supervised learning
* Reinforcement learning
* Meta-learning
* Online learning
* Batch learning
* Curriculum learning
* Rule-based learning
* Neuro-symbolic AI
* Neuromorphic engineering
* Quantum machine learning

Problems

* Classification
* Generative modeling
* Regression
* Clustering
* Dimensionality reduction
* Density estimation
* Anomaly detection
* Data cleaning
* AutoML
* Association rules
* Semantic analysis
* Structured prediction
* Feature engineering
* Feature learning
* Learning to rank
* Grammar induction
* Ontology learning
* Multimodal learning

Supervised learning
(classification • regression)

* Apprenticeship learning
* Decision trees
* Ensembles
* Bagging
* Boosting
* Random forest
* k-NN
* Linear regression
* Naive Bayes
* Artificial neural networks
* Logistic regression
* Perceptron
* Relevance vector machine (RVM)
* Support vector machine (SVM)

Clustering

* BIRCH
* CURE
* Hierarchical
* k-means
* Fuzzy
* Expectation–maximization (EM)

DBSCAN
* OPTICS
* Mean shift

Dimensionality reduction

* Factor analysis
* CCA
* ICA
* LDA
* NMF
* PCA
* PGD
* t-SNE
* SDL

Structured prediction

* Graphical models
* Bayes net
* Conditional random field
* Hidden Markov

Anomaly detection

* RANSAC
* k-NN
* Local outlier factor
* Isolation forest

Artificial neural network

* Autoencoder
* Deep learning
* Feedforward neural network
* Recurrent neural network
* LSTM
* GRU
* ESN
* reservoir computing
* Boltzmann machine
* Restricted
* GAN
* Diffusion model
* SOM
* Convolutional neural network
* U-Net
* LeNet
* AlexNet
* DeepDream
* Neural radiance field
* Transformer
* Vision
* Mamba
* Spiking neural network
* Memtransistor
* Electrochemical RAM (ECRAM)

Reinforcement learning

* Q-learning
* SARSA
* Temporal difference (TD)
* Multi-agent
* Self-play

Learning with humans

* Active learning
* Crowdsourcing
* Human-in-the-loop
* RLHF

Model diagnostics

* Coefficient of determination
* Confusion matrix
* Learning curve
* ROC curve

Mathematical foundations

* Kernel machines
* Bias–variance tradeoff
* Computational learning theory
* Empirical risk minimization
* Occam learning
* PAC learning
* Statistical learning
* VC theory

Journals and conferences

* ECML PKDD
* NeurIPS
* ICML
* ICLR
* IJCAI
* ML
* JMLR

Related articles

* Glossary of artificial intelligence
* List of datasets for machine-learning research
* List of datasets in computer vision and image processing
* Outline of machine learning

* v
* t
* e

In machine learning, normalization is a statistical technique with various applications. There are mainly two forms of normalization, data normalization and activation normalization. Data normalization, or feature scaling, is a general technique in statistics, and it includes methods that rescale input data so that they have well-behaved range, mean, variance, and other statistical properties. Activation normalization is specific to deep learning, and it includes methods that rescale the activation of hidden neurons inside a neural network.

Normalization is often used for faster training convergence, less sensitivity to variations in input data, less overfitting, and better generalization to unseen data. They are often theoretically justified as reducing covariance shift, smoother optimization landscapes, increasing regularization, though they are mainly justified by empirical success.[1]

## Batch normalization

[edit]

Main article: Batch normalization

Batch normalization (BatchNorm)[2] operates on the activations of a layer for each mini-batch.

Consider a simple feedforward network, defined by chaining together modules: x ( 0 ) ↦ x ( 1 ) ↦ x ( 2 ) ↦ ⋯ {\displaystyle x^{(0)}\mapsto x^{(1)}\mapsto x^{(2)}\mapsto \cdots } where each network module can be a linear transform, a nonlinear activation function, a convolution, etc.  x ( 0 ) {\displaystyle x^{(0)}} is the input vector,  x ( 1 ) {\displaystyle x^{(1)}} is the output vector from the first module, etc.

BatchNorm is a module that can be inserted at any point in the feedforward network. For example, suppose it is inserted just after  x ( l ) {\displaystyle x^{(l)}} , then the network would operate accordingly: ⋯ ↦ x ( l ) ↦ B N ( x ( l ) ) ↦ x ( l + 1 ) ↦ ⋯ {\displaystyle \cdots \mapsto x^{(l)}\mapsto \mathrm {BN} (x^{(l)})\mapsto x^{(l+1)}\mapsto \cdots } The BatchNorm module does not operate over individual inputs. Instead, it must operate over one batch of inputs at a time.

Concretely, suppose we have a batch of inputs  x ( 1 ) ( 0 ) , x ( 2 ) ( 0 ) , … , x ( B ) ( 0 ) {\displaystyle x_{(1)}^{(0)},x_{(2)}^{(0)},\dots ,x_{(B)}^{(0)}} , fed all at once into the network. We would obtain in the middle of the network some vectors x ( 1 ) ( l ) , x ( 2 ) ( l ) , … , x ( B ) ( l ) {\displaystyle x_{(1)}^{(l)},x_{(2)}^{(l)},\dots ,x_{(B)}^{(l)}} The BatchNorm module computes the coordinate-wise mean and variance of these vectors: μ i ( l ) = 1 B ∑ b = 1 B x ( b ) , i ( l ) ( σ i ( l ) ) 2 = 1 B ∑ b = 1 B ( x ( b ) , i ( l ) − μ i ( l ) ) 2 {\displaystyle {\begin{aligned}\mu _{i}^{(l)}&={\frac {1}{B}}\sum _{b=1}^{B}x_{(b),i}^{(l)}\\\\(\sigma _{i}^{(l)})^{2}&={\frac {1}{B}}\sum _{b=1}^{B}(x_{(b),i}^{(l)}-\mu _{i}^{(l)})^{2}\end{aligned}}} where  i {\displaystyle i} indexes the coordinates of the vectors, and  b {\displaystyle b} indexes the elements of the batch. In other words, we are considering the  i {\displaystyle i} -th coordinate of each vector in the batch, and computing the mean and variance of this collection of numbers.

It then normalizes each coordinate to have zero mean and unit variance:  x ^ ( b ) , i ( l ) = x ( b ) , i ( l ) − μ i ( l ) ( σ i ( l ) ) 2 + ϵ {\displaystyle {\hat {x}}_{(b),i}^{(l)}={\frac {x_{(b),i}^{(l)}-\mu _{i}^{(l)}}{\sqrt {(\sigma _{i}^{(l)})^{2}+\epsilon }}}} The  ϵ {\displaystyle \epsilon } is a small positive constant such as  10 − 8 {\displaystyle 10^{-8}} added to the variance for numerical stability, to avoid division by zero.

Finally, it applies a linear transform: y ( b ) , i ( l ) = γ i x ^ ( b ) , i ( l ) + β i {\displaystyle y_{(b),i}^{(l)}=\gamma _{i}{\hat {x}}_{(b),i}^{(l)}+\beta _{i}} Here,  γ {\displaystyle \gamma } and  β {\displaystyle \beta } are parameters inside the BatchNorm module. They are learnable parameters, typically trained by gradient descent.

The following code illustrates BatchNorm.

import numpy as np

def batchnorm(x, gamma, beta, epsilon=1e-8):
# Mean and variance of each feature
mu = np.mean(x, axis=0)  # shape (N,)
var = np.var(x, axis=0)  # shape (N,)

# Normalize the activations
x_hat = (x - mu) / np.sqrt(var + epsilon)  # shape (B, N)

# Apply the linear transform
y = gamma * x_hat + beta  # shape (B, N)

return y

### Interpretation

[edit]

γ {\displaystyle \gamma } and  β {\displaystyle \beta } allow the network to learn to undo the normalization if that is beneficial.[3] Because a neural network can always be topped with a linear transform layer on top, BatchNorm can be interpreted as removing the purely linear transformations, so that its layers focus purely on modelling the nonlinear aspects of data.[4][3]

It is claimed in the original publication that BatchNorm works by reducing "internal covariance shift", though the claim has both supporters[5][6] and detractors.[7][8]

### Special cases

[edit]

The original paper[2] recommended to only use BatchNorms after a linear transform, not after a nonlinear activation. That is,  ϕ ( B N ( W x + b ) ) {\displaystyle \phi (\mathrm {BN} (Wx+b))} , not  B N ( ϕ ( W x + b ) ) {\displaystyle \mathrm {BN} (\phi (Wx+b))} . Also, the bias  b {\displaystyle b} does not matter, since will be canceled by the subsequent mean subtraction, so it is of form  B N ( W x ) {\displaystyle \mathrm {BN} (Wx)} . That is, if a BatchNorm is preceded by a linear transform, then that linear transform's bias term is set to constant zero.[2]

For convolutional neural networks (CNN), BatchNorm must preserve the translation-invariance of CNN, which means that it must treat all outputs of the same kernel as if they are different data points within a batch.[2] This is sometimes called Spatial BatchNorm, or BatchNorm2D, or per-channel BatchNorm.[9][10]

Concretely, suppose we have a 2-dimensional convolutional layer defined by x h , w , c ( l ) = ∑ h ′ , w ′ , c ′ K h ′ − h , w ′ − w , c , c ′ ( l ) x h ′ , w ′ , c ′ ( l − 1 ) + b c ( l ) {\displaystyle x_{h,w,c}^{(l)}=\sum _{h',w',c'}K_{h'-h,w'-w,c,c'}^{(l)}x_{h',w',c'}^{(l-1)}+b_{c}^{(l)}} where

* x h , w , c ( l ) {\displaystyle x_{h,w,c}^{(l)}} is the activation of the neuron at position  ( h , w ) {\displaystyle (h,w)} in the  c {\displaystyle c} -th channel of the  l {\displaystyle l} -th layer.
* K Δ h , Δ w , c , c ′ ( l ) {\displaystyle K_{\Delta h,\Delta w,c,c'}^{(l)}} is a kernel tensor. Each channel  c {\displaystyle c} corresponds to a kernel  K h ′ − h , w ′ − w , c , c ′ ( l ) {\displaystyle K_{h'-h,w'-w,c,c'}^{(l)}} , with indices  Δ h , Δ w , c ′ {\displaystyle \Delta h,\Delta w,c'} .
* b c ( l ) {\displaystyle b_{c}^{(l)}} is the bias term for the  c {\displaystyle c} -th channel of the  l {\displaystyle l} -th layer.

In order to preserve the translational invariance, BatchNorm treats all outputs from the same kernel in the same batch as more data in a batch. That is, it is applied once per kernel c {\displaystyle c} (equivalently, once per channel  c {\displaystyle c} ), not per activation x h , w , c ( l + 1 ) {\displaystyle x_{h,w,c}^{(l+1)}} : μ c ( l ) = 1 B H W ∑ b = 1 B ∑ h = 1 H ∑ w = 1 W x ( b ) , h , w , c ( l ) ( σ c ( l ) ) 2 = 1 B H W ∑ b = 1 B ∑ h = 1 H ∑ w = 1 W ( x ( b ) , h , w , c ( l ) − μ c ( l ) ) 2 {\displaystyle {\begin{aligned}\mu _{c}^{(l)}&={\frac {1}{BHW}}\sum _{b=1}^{B}\sum _{h=1}^{H}\sum _{w=1}^{W}x_{(b),h,w,c}^{(l)}\\\\(\sigma _{c}^{(l)})^{2}&={\frac {1}{BHW}}\sum _{b=1}^{B}\sum _{h=1}^{H}\sum _{w=1}^{W}(x_{(b),h,w,c}^{(l)}-\mu _{c}^{(l)})^{2}\end{aligned}}} where  B {\displaystyle B} is the batch size,  H {\displaystyle H} is the height of the feature map, and  W {\displaystyle W} is the width of the feature map.

That is, even though there are only  B {\displaystyle B} data points in a batch, all  B H W {\displaystyle BHW} outputs from the kernel in this batch are treated equally.[2]

Subsequently, normalization and the linear transform is also done per kernel: x ^ ( b ) , h , w , c ( l ) = x ( b ) , h , w , c ( l ) − μ c ( l ) ( σ c ( l ) ) 2 + ϵ y ( b ) , h , w , c ( l ) = γ c x ^ ( b ) , h , w , c ( l ) + β c {\displaystyle {\begin{aligned}{\hat {x}}_{(b),h,w,c}^{(l)}&={\frac {x_{(b),h,w,c}^{(l)}-\mu _{c}^{(l)}}{\sqrt {(\sigma _{c}^{(l)})^{2}+\epsilon }}}\\\y_{(b),h,w,c}^{(l)}&=\gamma _{c}{\hat {x}}_{(b),h,w,c}^{(l)}+\beta _{c}\end{aligned}}} Similar considerations apply for BatchNorm for n-dimensional convolutions.

The following code illustrates BatchNorm for 2D convolutions:

import numpy as np

def batchnorm_cnn(x, gamma, beta, epsilon=1e-8):
# Calculate the mean and variance for each channel.
mean = np.mean(x, axis=(0, 1, 2), keepdims=True)
var = np.var(x, axis=(0, 1, 2), keepdims=True)

# Normalize the input tensor.
x_hat = (x - mean) / np.sqrt(var + epsilon)

# Scale and shift the normalized tensor.
y = gamma * x_hat + beta

return y

## Layer normalization

[edit]

Layer normalization (LayerNorm)[11] is a common competitor to BatchNorm. Unlike BatchNorm, which normalizes activations across the batch dimension for a given feature, LayerNorm normalizes across all the features within a single data sample. Compared to BatchNorm, LayerNorm's performance is not affected by batch size. It is a key component of Transformers.

For a given data input and layer, LayerNorm computes the mean ( μ {\displaystyle \mu } ) and variance ( σ 2 {\displaystyle \sigma ^{2}} ) over all the neurons in the layer. Similar to BatchNorm, learnable parameters  γ {\displaystyle \gamma } (scale) and  β {\displaystyle \beta } (shift) are applied. It is defined by: x i ^ = x i − μ σ 2 + ϵ , y i = γ i x i ^ + β i {\displaystyle {\hat {x_{i}}}={\frac {x_{i}-\mu }{\sqrt {\sigma ^{2}+\epsilon }}},\quad y_{i}=\gamma _{i}{\hat {x_{i}}}+\beta _{i}} where  μ = 1 D ∑ i = 1 D x i {\displaystyle \mu ={\frac {1}{D}}\sum _{i=1}^{D}x_{i}} and  σ 2 = 1 D ∑ i = 1 D ( x i − μ ) 2 {\displaystyle \sigma ^{2}={\frac {1}{D}}\sum _{i=1}^{D}(x_{i}-\mu )^{2}} , and  i {\displaystyle i} ranges over the neurons in that layer.

### Examples

[edit]

For example, in CNN, a LayerNorm applies to all activations in a layer. In the previous notation, we have μ ( l ) = 1 H W C ∑ h = 1 H ∑ w = 1 W ∑ c = 1 C x h , w , c ( l ) ( σ ( l ) ) 2 = 1 H W C ∑ h = 1 H ∑ w = 1 W ∑ c = 1 C ( x h , w , c ( l ) − μ ( l ) ) 2 x ^ h , w , c ( l ) = x ^ h , w , c ( l ) − μ ( l ) ( σ ( l ) ) 2 + ϵ y h , w , c ( l ) = γ ( l ) x ^ h , w , c ( l ) + β ( l ) {\displaystyle {\begin{aligned}\mu ^{(l)}&={\frac {1}{HWC}}\sum _{h=1}^{H}\sum _{w=1}^{W}\sum _{c=1}^{C}x_{h,w,c}^{(l)}\\\\(\sigma ^{(l)})^{2}&={\frac {1}{HWC}}\sum _{h=1}^{H}\sum _{w=1}^{W}\sum _{c=1}^{C}(x_{h,w,c}^{(l)}-\mu ^{(l)})^{2}\\\\{\hat {x}}_{h,w,c}^{(l)}&={\frac {{\hat {x}}_{h,w,c}^{(l)}-\mu ^{(l)}}{\sqrt {(\sigma ^{(l)})^{2}+\epsilon }}}\\\y_{h,w,c}^{(l)}&=\gamma ^{(l)}{\hat {x}}_{h,w,c}^{(l)}+\beta ^{(l)}\end{aligned}}} notice that the batch index  b {\displaystyle b} is removed, while the channel index  c {\displaystyle c} is added.

In recurrent neural networks[11] and Transformers,[12] LayerNorm is applied individually to each timestep.

For example, if the hidden vector in an RNN at timestep  t {\displaystyle t} is  x ( t ) ∈ R D {\displaystyle x^{(t)}\in \mathbb {R} ^{D}} where  D {\displaystyle D} is the dimension of the hidden vector, then LayerNorm will be applied with x i ^ ( t ) = x i ( t ) − μ ( t ) ( σ ( t ) ) 2 + ϵ , y i ( t ) = γ i x i ^ ( t ) + β i {\displaystyle {\hat {x_{i}}}^{(t)}={\frac {x_{i}^{(t)}-\mu ^{(t)}}{\sqrt {(\sigma ^{(t)})^{2}+\epsilon }}},\quad y_{i}^{(t)}=\gamma _{i}{\hat {x_{i}}}^{(t)}+\beta _{i}} where  μ ( t ) = 1 D ∑ i = 1 D x i ( t ) {\displaystyle \mu ^{(t)}={\frac {1}{D}}\sum _{i=1}^{D}x_{i}^{(t)}} and  ( σ ( t ) ) 2 = 1 D ∑ i = 1 D ( x i ( t ) − μ ( t ) ) 2 {\displaystyle (\sigma ^{(t)})^{2}={\frac {1}{D}}\sum _{i=1}^{D}(x_{i}^{(t)}-\mu ^{(t)})^{2}} .

### Root mean square layer normalization

[edit]

Root mean square layer normalization (RMSNorm)[13] changes LayerNorm by x i ^ = x i 1 D ∑ i = 1 D x i 2 , y i = γ x i ^ + β {\displaystyle {\hat {x_{i}}}={\frac {x_{i}}{\sqrt {{\frac {1}{D}}\sum _{i=1}^{D}x_{i}^{2}}}},\quad y_{i}=\gamma {\hat {x_{i}}}+\beta } Essentially it is LayerNorm where we enforce  μ , ϵ = 0 {\displaystyle \mu ,\epsilon =0} .

## Other normalizations

[edit]

Weight normalization (WeightNorm)[14] is a technique inspired by BatchNorm. It normalizes weight matrices in a neural network, rather than its neural activations.

Gradient normalization (GradNorm)[15] normalizes gradient vectors during backpropagation.

Adaptive layer norm (adaLN)[16] computes the  γ , β {\displaystyle \gamma ,\beta } in a LayerNorm not from the layer activation itself, but from other data.

## CNN-specific normalization

[edit]

There are some activation normalization techniques that are only used for CNNs.

### Local response normalization

[edit]

Local response normalization[17] was used in AlexNet. It was applied in a convolutional layer, just after a nonlinear activation function. It was defined by b x , y i = a x , y i ( k + α ∑ j = max ( 0 , i − n / 2 ) min ( N − 1 , i + n / 2 ) ( a x , y j ) 2 ) β {\displaystyle b_{x,y}^{i}={\frac {a_{x,y}^{i}}{\left(k+\alpha \sum _{j=\max(0,i-n/2)}^{\min(N-1,i+n/2)}\left(a_{x,y}^{j}\right)^{2}\right)^{\beta }}}} where  a x , y i {\displaystyle a_{x,y}^{i}} is the activation of the neuron at location  ( x , y ) {\displaystyle (x,y)} and channel  i {\displaystyle i} . In words, each pixel in a channel is suppressed by the activations of the same pixel in its adjacent channels.

The numbers  k , n , α , β {\displaystyle k,n,\alpha ,\beta } are hyperparameters picked by using a validation set.

It was a variant of the earlier local contrast normalization.[18] b x , y i = a x , y i ( k + α ∑ j = max ( 0 , i − n / 2 ) min ( N − 1 , i + n / 2 ) ( a x , y j − a ¯ x , y j ) 2 ) β {\displaystyle b_{x,y}^{i}={\frac {a_{x,y}^{i}}{\left(k+\alpha \sum _{j=\max(0,i-n/2)}^{\min(N-1,i+n/2)}\left(a_{x,y}^{j}-{\bar {a}}_{x,y}^{j}\right)^{2}\right)^{\beta }}}} where  a ¯ x , y j {\displaystyle {\bar {a}}_{x,y}^{j}} is the average activation in a small window centered on location  ( x , y ) {\displaystyle (x,y)} and channel  i {\displaystyle i} . The numbers  k , n , α , β {\displaystyle k,n,\alpha ,\beta } , and the size of the small window, are hyperparameters picked by using a validation set.

Similar methods were called divisive normalization, as they divide activations by a number depending on the activations. They were originally inspired by biology, where it was used to explain nonlinear responses of cortical neurons and nonlinear masking in visual perception.[19]

Both kinds of local normalization were obsoleted by batch normalization, which is a more global form of normalization.[20]

### Group normalization

[edit]

Group normalization (GroupNorm)[21] is a technique only used for CNNs. It can be understood as the LayerNorm for CNN applied once per channel-group.

Suppose at a layer  l {\displaystyle l} , there are channels  1 , 2 , … , C {\displaystyle 1,2,\dots ,C} , then we partition it into groups  g 1 , … , g G {\displaystyle g_{1},\dots ,g_{G}} . Then, we apply LayerNorm to each group.

### Instance normalization

[edit]

Instance normalization (InstanceNorm), or contrast normalization, is a technique first developed for neural style transfer, and is only used for CNNs.[22] It can be understood as the LayerNorm for CNN applied once per channel, or equivalently, as group normalization where each group consists of a single channel: μ c ( l ) = 1 H W ∑ h = 1 H ∑ w = 1 W x h , w , c ( l ) ( σ c ( l ) ) 2 = 1 H W ∑ h = 1 H ∑ w = 1 W ( x h , w , c ( l ) − μ c ( l ) ) 2 x ^ h , w , c ( l ) = x ^ h , w , c ( l ) − μ c ( l ) ( σ c ( l ) ) 2 + ϵ y h , w , c ( l ) = γ c ( l ) x ^ h , w , c ( l ) + β c ( l ) {\displaystyle {\begin{aligned}\mu _{c}^{(l)}&={\frac {1}{HW}}\sum _{h=1}^{H}\sum _{w=1}^{W}x_{h,w,c}^{(l)}\\\\(\sigma _{c}^{(l)})^{2}&={\frac {1}{HW}}\sum _{h=1}^{H}\sum _{w=1}^{W}(x_{h,w,c}^{(l)}-\mu _{c}^{(l)})^{2}\\\\{\hat {x}}_{h,w,c}^{(l)}&={\frac {{\hat {x}}_{h,w,c}^{(l)}-\mu _{c}^{(l)}}{\sqrt {(\sigma _{c}^{(l)})^{2}+\epsilon }}}\\\y_{h,w,c}^{(l)}&=\gamma _{c}^{(l)}{\hat {x}}_{h,w,c}^{(l)}+\beta _{c}^{(l)}\end{aligned}}}

### Adaptive instance normalization

[edit]

Adaptive instance normalization (AdaIN) is a variant of instance normalization, designed specifically for neural style transfer with CNN, not for CNN in general.[23]

In the AdaIN method of style transfer, we take a CNN, and two input images, one content and one style. Each image is processed through the same CNN, and at a certain layer  l {\displaystyle l} , the AdaIn is applied.

Let  x ( l ) , content {\displaystyle x^{(l),{\text{ content}}}} be the activation in the content image, and  x ( l ) , style {\displaystyle x^{(l),{\text{ style}}}} be the activation in the style image. Then, AdaIn first computes the mean and variance of the activations of the content image  x ′ ( l ) {\displaystyle x'^{(l)}} , then use those as the  γ , β {\displaystyle \gamma ,\beta } for InstanceNorm on  x ( l ) , content {\displaystyle x^{(l),{\text{ content}}}} . Note that  x ( l ) , style {\displaystyle x^{(l),{\text{ style}}}} itself remains unchanged. Explicitly, we have y h , w , c ( l ) , content = σ c ( l ) , style ( x h , w , c ( l ) , content − μ c ( l ) , content ( σ c ( l ) , content ) 2 + ϵ ) + μ c ( l ) , style . {\displaystyle {\begin{aligned}y_{h,w,c}^{(l),{\text{ content}}}&=\sigma _{c}^{(l),{\text{ style}}}\left({\frac {x_{h,w,c}^{(l),{\text{ content}}}-\mu _{c}^{(l),{\text{ content}}}}{\sqrt {(\sigma _{c}^{(l),{\text{ content}}})^{2}+\epsilon }}}\right)+\mu _{c}^{(l),{\text{ style}}}.\end{aligned}}}

## See also

[edit]

* Data preprocessing
* Feature scaling

## Further reading

[edit]

* "Normalization Layers". labml.ai Deep Learning Paper Implementations. Retrieved 2024-08-07.

## References

[edit]

1. ^ Huang, Lei (2022). Normalization Techniques in Deep Learning. Synthesis Lectures on Computer Vision. Cham: Springer International Publishing. doi:10.1007/978-3-031-14595-7. ISBN 978-3-031-14594-0.
2. ^ a b c d e Ioffe, Sergey; Szegedy, Christian (2015-06-01). "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift". Proceedings of the 32nd International Conference on Machine Learning. PMLR: 448–456. arXiv:1502.03167.
3. ^ a b Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). "8.7.1. Batch Normalization". Deep learning. Adaptive computation and machine learning. Cambridge, Massachusetts: The MIT Press. ISBN 978-0-262-03561-3.
4. ^ Desjardins, Guillaume; Simonyan, Karen; Pascanu, Razvan; kavukcuoglu, koray (2015). "Natural Neural Networks". Advances in Neural Information Processing Systems. 28. Curran Associates, Inc.
5. ^ Xu, Jingjing; Sun, Xu; Zhang, Zhiyuan; Zhao, Guangxiang; Lin, Junyang (2019). "Understanding and Improving Layer Normalization". Advances in Neural Information Processing Systems. 32. Curran Associates, Inc. arXiv:1911.07013.
6. ^ Awais, Muhammad; Bin Iqbal, Md. Tauhid; Bae, Sung-Ho (November 2021). "Revisiting Internal Covariate Shift for Batch Normalization". IEEE Transactions on Neural Networks and Learning Systems. 32 (11): 5082–5092. doi:10.1109/TNNLS.2020.3026784. ISSN 2162-237X. PMID 33095717.
7. ^ Bjorck, Nils; Gomes, Carla P; Selman, Bart; Weinberger, Kilian Q (2018). "Understanding Batch Normalization". Advances in Neural Information Processing Systems. 31. Curran Associates, Inc. arXiv:1806.02375.
8. ^ Santurkar, Shibani; Tsipras, Dimitris; Ilyas, Andrew; Madry, Aleksander (2018). "How Does Batch Normalization Help Optimization?". Advances in Neural Information Processing Systems. 31. Curran Associates, Inc.
9. ^ "BatchNorm2d — PyTorch 2.4 documentation". pytorch.org. Retrieved 2024-09-26.
10. ^ Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). "8.5. Batch Normalization". Dive into deep learning. Cambridge New York Port Melbourne New Delhi Singapore: Cambridge University Press. ISBN 978-1-009-38943-3.
11. ^ a b Ba, Jimmy Lei; Kiros, Jamie Ryan; Hinton, Geoffrey E. (2016). "Layer Normalization". arXiv:1607.06450 [stat.ML].
12. ^ Phuong, Mary; Hutter, Marcus (2022-07-19). "Formal Algorithms for Transformers". arXiv:2207.09238 [cs.LG].
13. ^ Zhang, Biao; Sennrich, Rico (2019-10-16). "Root Mean Square Layer Normalization". arXiv:1910.07467 [cs.LG].
14. ^ Salimans, Tim; Kingma, Diederik P. (2016-06-03). "Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks". arXiv:1602.07868 [cs.LG].
15. ^ Chen, Zhao; Badrinarayanan, Vijay; Lee, Chen-Yu; Rabinovich, Andrew (2018-07-03). "GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks". Proceedings of the 35th International Conference on Machine Learning. PMLR: 794–803. arXiv:1711.02257.
16. ^ Peebles, William; Xie, Saining (2023). "Scalable Diffusion Models with Transformers": 4195–4205. arXiv:2212.09748. `{{cite journal}}`: Cite journal requires `|journal=` (help)
17. ^ Krizhevsky, Alex; Sutskever, Ilya; Hinton, Geoffrey E (2012). "ImageNet Classification with Deep Convolutional Neural Networks". Advances in Neural Information Processing Systems. 25. Curran Associates, Inc.
18. ^ Jarrett, Kevin; Kavukcuoglu, Koray; Ranzato, Marc' Aurelio; LeCun, Yann (September 2009). "What is the best multi-stage architecture for object recognition?". 2009 IEEE 12th International Conference on Computer Vision. IEEE. pp. 2146–2153. doi:10.1109/iccv.2009.5459469. ISBN 978-1-4244-4420-5.
19. ^ Lyu, Siwei; Simoncelli, Eero P. (2008). "Nonlinear image representation using divisive normalization". 2008 IEEE Conference on Computer Vision and Pattern Recognition. Vol. 2008\. pp. 1–8. doi:10.1109/CVPR.2008.4587821. ISBN 978-1-4244-2242-5. ISSN 1063-6919. PMC 4207373. PMID 25346590.
20. ^ Ortiz, Anthony; Robinson, Caleb; Morris, Dan; Fuentes, Olac; Kiekintveld, Christopher; Hassan, Md Mahmudulla; Jojic, Nebojsa (2020). "Local Context Normalization: Revisiting Local Normalization": 11276–11285. arXiv:1912.05845. `{{cite journal}}`: Cite journal requires `|journal=` (help)
21. ^ Wu, Yuxin; He, Kaiming (2018). "Group Normalization": 3–19. `{{cite journal}}`: Cite journal requires `|journal=` (help)
22. ^ Ulyanov, Dmitry; Vedaldi, Andrea; Lempitsky, Victor (2017-11-06). "Instance Normalization: The Missing Ingredient for Fast Stylization". arXiv:1607.08022 [cs.CV].
23. ^ Huang, Xun; Belongie, Serge (2017). "Arbitrary Style Transfer in Real-Time With Adaptive Instance Normalization": 1501–1510. arXiv:1703.06868. `{{cite journal}}`: Cite journal requires `|journal=` (help)

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template