Various Normalizations on CNN
Normalization 기법은 Batch normalization 부터 시작하여 다양하게 분화되고 사용되고 있다.
이러한 normalization 기법들이 CNN에서 어떻게 적용되는지 확인해보도록 하자.
기본적으로 normalization은 feature들에 대해서 scaling을 해주는 것이다.
그리고 각 기법에 따라 어떤 feature를 대상으로 normalization을 할지가 달라지게 된다.
CNN은 convolutional filter를 통해서 이미지로부터 여러 feature map을 얻게된다.
CNN에서의 normalization은 이 feature map의 값에 대해서 적용한다.
feature map에 대해 각각 normalization이 어떻게 적용되는지를 시각화해보면 아래와 같다.
Batch Normalization
batch 내에서 특정 feature map에 대해 normalization을 적용한다.
$$\mu_{c} = \frac{1}{NHW} \sum_{n=1}^{N} \sum_{h=1}^{H} \sum_{w=1}^{W} x_{n,c,h,w} $$
$$\sigma^{2}_{c} = \frac{1}{NHW} \sum_{n=1}^{N} \sum_{h=1}^{H} \sum_{w=1}^{W} (x_{n,c,h,w} - \mu_{c})^{2} $$
Layer Normalization
layer normalization의 경우 batch에 구애받지 않고 normalization을 적용하는 기법으로,
convolutional filter를 통해 나온 특정 layer의 모든 feature map에 대해서 적용한다.
하지만 layer normalization은 CNN을 위한 기법이 아니므로 느낌 정도만 알면 될 것이다
$$ \mu_{n} = \frac{1}{CWH} \sum_{c=1}^{C} \sum_{h=1}^{H} \sum_{w=1}^{W} x_{n,c,h,w} $$
$$ \sigma^{2}_{n} = \frac{1}{CWH} \sum_{c=1}^{C} \sum_{h=1}^{H} \sum_{w=1}^{W} (x_{n,c,h,w} - \mu_{n})^{2} $$
Instance Normalization
instance normalization은 개별 feature map에 대해서 normalization을 적용해주는 기법으로,
style transfer에서 주로 사용된다.
$$\mu_{n,c} = \frac{1}{NC} \sum_{h=1}^{H} \sum_{w=1}^{W} x_{n,c,h,w} $$
$$\sigma^{2}_{n,c} = \frac{1}{NC} \sum_{n=1}^{N} \sum_{h=1}^{H} \sum_{w=1}^{W} (x_{n,c,h,w} - \mu_{n,c})^{2} $$
Group Normalization
layer normalization과 instance normalization의 중간이라고도 볼 수 있는데,
특정 layer의 feature map들을 grouping 해서 normalization을 하는 기법이다.
(수식은 skip하도록 한다)