[AI Deep Dive] Normalize Layer

강현구·2024년 4월 23일

AI Deep Dive

목록 보기
1/4

BatchNorm, LayerNorm, InstanceNorm, GroupNorm 작동원리

목적

  • Model 내부에서 특정 차원 기준으로 나머지 차원들의 값들의 평균과 분산을 구하여 표준화함으로써, 내부 공변량을 감소시키게 되어 모델의 안정된 학습과 속도의 개선을 유도.

1. 3D

데이터 차원 설명

  • 단일 채널 시계열 데이터, 텍스트 데이터에서 편의상 (B, S, D)로 표현.
  • B는 Batch 또는 Sample, S는 Sequence 또는 Window, D는 Dimension 또는 Feature를 의미.
  • 시계열 데이터는 원본 단일 채널 시계열 데이터 (B, 1, D) 에서 Window Size만큼 Shift 시킨 데이터를 S차원에 새로 축적한 것을 의미.
  • 텍스트 데이터에서 B는 문장(단어 개수), S는 단어(토큰), D는 단어가 갖고있는 특징 차원을 의미.

작동방법

사용법

BatchNorm

  • 각 D(인자로 선택된 차원)에 대해 전체 B, 전체 S(인자로 선택되지 않은 차원)에 대한 평균과 분산을 구해서 Normalize

LayerNorm

  • 각 인자로 선택되지 않은 차원에 대해 모든 인자로 선택된 차원에 대한 평균과 분산을 구하여 Normalize
  • 인자로 D를 사용하였다면 각 B, 각 S에 대해 전체 D에 대한 평균과 분산으로 Normalize
  • 인자로 S,D를 사용하였다면 각 B에 대해 전체 S, 전체 D에 대한 평균과 분산으로 Normalize

InstanceNorm

  • 각 B에 대해, 각 D(선택된 차원)에 대해 전체 S(B를 제외한 인자로 선택되지 않은 차원)에 대한 평균과 분산을 구하여 Normalize

GroupNorm

  • D차원 기준 Group 개수로 분리 후, 각 B에 대해, 각 Group(선택된 차원)에 대해 전체 S(B를 제외한 인자로 선택되지 않은 차원)에 대한 평균과 분산을 구하여 Normalize

2. 4D

데이터 차원 설명

  • 다채널 시계열 데이터(e.g. EEG), 이미지 데이터에서 편의상 (B, C, H, W)로 표현
  • B는 Batch 또는 Sample, C는 Channel 또는 Sequence, H는 Height 또는 Num_Signal, W는 Width 또는 Dimension을 의미
  • 다채널 시계열 데이터는 원본 다채널 시계열 데이터 (B, H, W) 에서 Window Size만큼 Shift 시킨 데이터를 C차원에 새로 축적한 것을 의미.
  • 이미지 데이터에서 B는 샘플 수, C는 채널 수(3, RGB), H는 이미지 높이, W는 이미지 너비를 의미.

작동방법

사용법

BatchNorm

  • 각 C(인자로 선택된 차원)에 대해 전체 B, 전체 H, 전체 W(인자로 선택되지 않은 차원)에 대한 평균과 분산을 구해서 Normalize

LayerNorm

  • 각 인자로 선택되지 않은 차원에 대해 전체 인자로 선택된 차원에 대한 평균과 분산을 구하여 Normalize
  • 인자로 C,H,W를 사용하였다면 각 B에 대해 전체 C,H,W에 대한 평균과 분산으로 Normalize

InstanceNorm

  • 각 B에 대해, 각 C(선택된 차원)에 대해 전체 H,W(B를 제외한 인자로 선택되지 않은 차원)에 대한 평균과 분산을 구하여 Normalize

GroupNorm

  • C차원 기준 Group 개수로 분리 후, 각 B에 대해, 각 Group(선택된 차원)에 대해 전체 H,W(B를 제외한 인자로 선택되지 않은 차원)에 대한 평균과 분산을 구하여 Normalize

3. 총정리

  • 함수에 넣을 인자는 BatchNorm, InstanceNorm, GroupNorm이 비슷하고, LayerNorm은 반대이다.
  • Batch, Instance, Group Norm은 인자로 선택된 차원을 각 차원으로 분리하여 생각하고, LayerNorm은 인자로 선택되지 않은 차원을 각 차원으로 분리하여 생각하자.
  • Conv Block에서 대개 BatchNorm이 사용되고, Transformer에서 대개 LayerNorm이 사용된다.
profile
고려대학교 인공지능학과 SLP Lab 석사과정생

0개의 댓글