Batch Norm, Layer Norm, Instance Norm, Group Norm
Deep Learning/Architecture design

Batch Norm, Layer Norm, Instance Norm, Group Norm

반응형

다양한 Normalization 기법들이 있어서 정리하고자 포스팅한다.

Network layer의 output을 normalize 하는 경우 트레이닝 타임이 크게 감소하고, 학습이 잘 된다.

잘 되는 이유에는 초기에는 Internal Covariate Shift를 제거한다는 쪽으로 설명이 되다가, 사실이 아님이 수학적으로 증명되었고 Loss function의 smoothness를 증가시키는 것이 주된 이유로 설명되고 있다.

Batch Norm이 표준으로 사용되고 있으나, Multi-GPU training 등의 적용과 모델 사이즈가 커짐으로 인해 GPU당 할당되는 Mini-batch의 수가 줄어드는 경우, mini-batch와 original data 사이의 괴리가 커져 모델이 효율적으로 학습되기 어려운 문제가 발생하게 된다.

따라서 미니배치의 수와 관계 없이 독립적으로 사용할 수 있는 다양한 Normalization 테크닉이 나오게 되었는데, 아래의 그림처럼 Layer Norm, Instance Norm, Group Norm은 Normalization 대상이 모두 N (미니배치 사이즈) 와는 관계 없이 데이터 하나에서 나온 Feature의 일부 또는 전체 또는 그룹을 normalize 하는 방식이다.

Group Norm 논문에서 각 Normalization을 이해하기 쉽게 시각화 한 그림

개인적으로 위의 그림보다는 아래의 그림이 조금 더 이해하기 쉬웠는데,  동일한 색깔로 칠해진 것들이 한번에 normalize 하는 대상이다.

조금 더 이해하기 쉽게 표현된 그림- 출처 https://twitter.com/hoshino42_/status/1054634647945015296

 

Batch Norm : 미니배치 전체에 걸쳐 feature의 특정 채널을 모두 합쳐 normalize함. de facto로 사용됨

Layer Norm : 각 인스턴스에서 나온 feature을 모든 channel에 걸쳐 한번에 normalize함
CV에서 오랫동안 표준으로 사용되어온 BN이 있다면,NLP에서는 1)입력 길이의 가변성, 2)NLP task에서 미니배치 분포의 심한 변동성, 3)과거 표준이였던 재귀적 구조인 RNN모델에서 BN 개념의 모호성 때문에 LN을 표준으로 사용해왔다고 함 (출처). 다만, NLP에서는 단어 단위로 feature를 뽑기 때문에 문장이 아닌 단어 단위로 모든 채널에 걸쳐 normalization을 해 주는 것을 LN이라고 명명한다. 최근 떠오르는 Transformer 구조에서도 병렬 처리되는 각 단어별로 normalization을 적용하는 LN이 적용된다. ViT의 경우 word에 상응하는 이미지 패치별로 LN이 적용 (패치 feature의 모든 채널을 한번에 normalize) 된다.

Insatance Norm : 각 인스턴스의 feature channel 들을 각각 normalize함
이미지의 Style을 조작할 때 자주 쓰이며, 미니배치의 모든 피쳐를 한번에 Normalize 시키는 Batch Norm은 이미지 인스턴스 고유의 정보를 많이 손실시켜버림. 따라서 각 인스턴스의 개별 특징을 보존해야 하는 경우 Instance Norm을 사용함. 여기서 AdaIN이 파생되었으며, Normalize 한 피쳐를 특정 Style을 갖도록 Denormalize 하는 방식이다.

Group Norm : LN과 IN의 짬뽕 버전으로, 개별 데이터에서 나온 feature의 채널들을 N개의 그룹으로 묶어 normalize함

Group Norm에서 그룹 수 = 채널 수 이면 Instance Norm이고, 그룹 수 = 1 이면 Layer Norm과 같다.

참고로, GN의 경우 Weight Standardization 기법과 함께 쓰면 더 도움이 된다고 함.

 

각 Normalization 테크닉은 적절히 상황에 맞춰 쓰면 되는데,

Batch Norm의 경우 그냥 기본적인 실험 할때 별 이상 없으면 표준으로 사용하며

Instance Norm의 경우 Image의 Style을 조작할 때 자주 쓰는 것 같다.
(이미지마다 고유의 style이 있는데, 이걸 미니배치 전체의 관점에서 다 합쳐서 Normalize 하면 feature에서 굉장히 많은 정보가 소실된다)

GN+Weight Standardization은 매우 큰 모델을 돌려서 GPU당 미니배치 사이즈가 1~2일때 사용하면 BN급의 성능을 보여준다고 한다.

반응형