
레이어 정규화와 배치 정규화에 대해서 알아보자!정규화란, 데이터의 피처 또는 데이터 샘플 간 스케일 차이로 인해 발생하는 불안정성을 방지하기 위해 적용하는 방법
일반적으로 신경망을 구성할 때는 배치 정규화와 레이어 정규화를 사용
아래 그림은 두 정규화 방법을 시각적으로 보여준다.
출처: https://medium.com/@zljdanceholic/groupnorm-then-batchnorm-instancenorm-layernorm-e2b2a1d350a0
한 개 데이터 샘플에 대해 정규화를 적용
예를 들어, SBERT 모델을 사용하여 768차원의 문장 임배딩을 얻었다면 768개의 feature를 사용하여 하나의 샘플내에서 정규화를 적용한다.
또한, 하나의 샘플의 모든 피처를 사용하기 때문에 배치 크기에 독립적이다.
내부 공변량 변화를 방지하기 위해 사용한다. 데이터를 배치 단위로 구성하여 학습 시, 이 과정에서 데이터의 분포를 유지하고 안정성 확보, 학습 속도 향상을 위해 사용
Dropout의 대안으로도 사용
보통 활성화 함수 통과하기 이전에 사용
Vanishing gradient 방지LN과 마찬가지로 내부 공변량 변화 방지로 학습 안정성 증가
더 높은 학습률을 적용할 수 있어, 학습 속도 향상 가능
배치 크기에 의존적
시퀀스를 다루는 모델(RNN, Transformer)에서 계산 축(axis)의 영향을 받음
다른 샘플의 영향을 받기 때문에 각 샘플을 독립적으로 다뤄야 하는 생성 모델에서 아티팩트(Artifact) 유발 가능
| 특징 | Batch_Norm | Layer_Norm |
|---|---|---|
| 정규화 단위 | 배치 내 각 피처 | 샘플 내 모든 피처 |
| 배치 크기 | 배치 크기에 의존적 | 배치 크기에 독립적 |
| 적합 모델 | CNN, 큰 배치 | 시계열 모델, 작은 배치, 생성모델 |

BN은 테스트 시 학습 과정의 통계량을 사용(이동 평균/분산)
LN은 테스트 시에도 동일하게 데이터 별 통계량 사용
내부 공변량 변화
배치 크기나 모델 크기로 인한 메모리 제약을 고려해야 한다면 명확하게 어떤 방법이 효율적인지 명확하지만
제약이 없다면 반드시 데이터 특성을 파악한 후 사용해야 데이터 별 통계량이 무시되지 않으니 학습 안정성 or 성능 기준으로 파악해야할 필요가 있다.