728x90
서론
- Batch Normalization은 아마도 딥러닝 분야에서 정말 기여 높은 내용으로 반드시 알아야할 내용이다.
- 다만 BN 뿐만 아니라 다른 Normalization도 존재하는데 그 부분이 많진 않으나 헷갈릴 부분에 대해서 간략한 설명을 하고자 한다.
본론
- Batch란 학습을 하는 하나의 단위이며, 하나의 배치에는 여러개의 샘플이 들어가 있다. 샘플(Instance)는 모여서 하나의 학습단위로 쓸 수 있다는 것이다.
- 예시를 들자면 GD를 하기 위해 3개의 점을 한번에 학습한다면, 3개의 점(Batch), 하나의 점(객체, Instance)가 된다.
- Batch Normalization
- 하나의 배치에 들어있는 하나의 객체에 대해서 같은 채널은 채널끼리 평균, 분산을 구한다.
- Layer Normalization
- 하나의 샘플에 속한 채널을 무시하고 평균, 분산을 구하는 것이다.
- RNN과 같은 시퀀스 모델에 적합합니다.
- 각 샘플의 특성(feature) 벡터를 독립적으로 정규화합니다.
- Instance Normalization
- 각 배치의 채널 별 * 각 배치 안에 있는 샘플끼리 전부 하는 것
- 쉽게 생각하면 Batch Normalization + Layer Normalization 한번에 한 것이다.
- 스타일 변환 작업에서 효과적입니다.
- 각 샘플을 독립적으로 정규화하므로 배치 크기에 영향을 받지 않습니다.
- Group Normalization
- Instance Normalization에서 채널별로 하지 않고 1개 초과로 늘렸다고 생각하면 Group Normalization이다
- 이와 비슷한 이해가 Group Convolution ↔ Depthwise Convolution과 매우 유사하다
- 작은 배치 크기에서도 안정적인 성능을 보입니다.
- 입력 채널을 그룹으로 나누어 정규화하므로, 채널 간 상호 작용을 고려합니다.
- Group의 크기는 하이퍼파라미터로 설정할 수 있습니다
- Instance Normalization에서 채널별로 하지 않고 1개 초과로 늘렸다고 생각하면 Group Normalization이다
결론
- Batch Normalization → 하나의 배치에서 채널로 묶은 것
- Layer Normalization → 배치 안의 하나의 샘플을 묶은 것
- Instance Normalization → Batch Normalization X Layer Normalization
- Group Normalization → Instance Normalization에서 한 개의 채널을 여러개로 늘려서 묶는 것
- 사실 이해하기 어렵지 않은 내용이지만 충분히 헷갈릴 수 있고 이름만 보고 예측하지 말고 다시 확인하고 공부하는 것으로 그저 넘어가지 않도록 작성한다.
728x90
'Learn' 카테고리의 다른 글
[데이터처리와 분석] K-Mean 실습 및 확인 (0) | 2024.06.13 |
---|---|
[컴퓨터비전] R-CNN (0) | 2024.06.13 |
[머신러닝] Optimizer(SGD+M, AdaGrad, RMSProp, Adam, AdamW) (1) | 2024.06.12 |
[데이터처리와분석] 데이터 준비하기 (0) | 2024.06.12 |
[머신러닝] Momentum & Nesterov (2) | 2024.06.11 |