[논문 리뷰] [Deep Learning] Group Normalization

2025. 1. 21. 18:42· Paper Review(논문 리뷰)/Deep Learning
목차
  1. 0. Reference
  2. 1. Introduction
  3. 2. Group Normalization
  4. 3. Pytorch 구현
  5. 4. Experiment

0. Reference

https://arxiv.org/abs/1803.08494

 

Group Normalization

Batch Normalization (BN) is a milestone technique in the development of deep learning, enabling various networks to train. However, normalizing along the batch dimension introduces problems --- BN's error increases rapidly when the batch size becomes small

arxiv.org

 

1. Introduction

- Batch Normalization은 딥러닝에서 흔히 쓰이는 기법중 하나이다.

- 하지만 이러한 Batch Normalization은 batch size에따라 성능이 좌우되게 된다.

- 다음 그래프는 Batch size가 줄어들면서 성능이 점점 악화되는 모습을 보인다.

- 해당 논문에선 이러한 Batch Normalization의 대안으로 Group Normalization을 제안한다.

- 간단히 다음과 같이 Normalization한다고 생각하면 된다.

- 본 논문에서 Layer Normalinzation이 한계가 존재하고 Group Normalization이 보다 성능이 좋다고 한다.

- Group Normalization에 대해 자세히 알아가보자.

 

2. Group Normalization

- Group Normalization의 Motivation은 다음과 같다.

- 주방에서 다양한 재료(채소, 고기, 양념 등)를 그룹별로 분류한 뒤 각각의 그룹을 따로 준비하는 과정으로 생각해 보자.

- 모든 재료를 한꺼번에 처리하면 효율이 떨어질 수 있지만,

- 비슷한 특성을 가진 재료를 함께 다루면 더 효율적으로 요리를 준비할 수 있는 것처럼, 

- 비슷한 성질의 특징들을 그룹으로 묶어 정규화하면 모델이 더 나은 학습을 할 수 있게 된다.

 

- 수식은 크게 중요하진 않을거 같아서 작성하지 않았지만,

- 간단하게 한 Samples에 대해서 각각 같은 이모티콘에 해당하는 부분을 Normalization한다고 생각하면 된다.

 

3. Pytorch 구현

import torch
import torch.nn as nn

class GroupNorm(nn.Module):
    def __init__(self, num_channels, num_groups, eps=1e-5, affine=True):
        super(GroupNorm, self).__init__()
        self.num_groups = num_groups
        self.eps = eps
        self.affine = affine
        
        # Scale and shift parameters (gamma and beta) if affine=True
        if self.affine:
            self.gamma = nn.Parameter(torch.ones(num_channels))
            self.beta = nn.Parameter(torch.zeros(num_channels))
        else:
            self.gamma = None
            self.beta = None

    def forward(self, x):
        N, C, H, W = x.shape
        
        # Reshape the input to (N, num_groups, C // num_groups, H, W)
        x = x.view(N, self.num_groups, C // self.num_groups, H, W)
        
        # Compute mean and variance for each group
        mean = x.mean(dim=(2, 3, 4), keepdim=True)
        var = x.var(dim=(2, 3, 4), keepdim=True, unbiased=False)
        
        # Normalize the input
        x_normalized = (x - mean) / torch.sqrt(var + self.eps)
        
        # Reshape the normalized tensor back to the original shape
        x_normalized = x_normalized.view(N, C, H, W)
        
        # Apply scale (gamma) and shift (beta)
        if self.affine:
            x_normalized = self.gamma.view(1, C, 1, 1) * x_normalized + self.beta.view(1, C, 1, 1)
        
        return x_normalized

 

4. Experiment

- 해당 그래프는 GN이 BN과 거의 유사한 성능을 보이는 것을 알 수 있다.

- 추가적으로 IN과 LN에 비해 더 성능이 우수하다는 것을 보인다.

 

- 해당 그래프는 에폭당 Hidden layer의 feature distribution을 나타낸 것이다.

- BN과 유사하게 Normalization된 모습을 볼 수 있다.

'Paper Review(논문 리뷰) > Deep Learning' 카테고리의 다른 글

[논문 리뷰] [Deep Learning] Long Short-Term Memory  (1) 2025.02.04
[논문 리뷰] [Deep Learning] Machine Learning Students Overfit to Overfitting  (1) 2025.02.01
[논문 리뷰] [Deep Learning] Layer Normalization  (0) 2025.01.21
[논문 리뷰] [Deep Learning] An introduction to ROC analysis  (0) 2025.01.19
[논문 리뷰] [Deep Learning] Adam : A method for stochastic optimization  (0) 2025.01.10
  1. 0. Reference
  2. 1. Introduction
  3. 2. Group Normalization
  4. 3. Pytorch 구현
  5. 4. Experiment
'Paper Review(논문 리뷰)/Deep Learning' 카테고리의 다른 글
  • [논문 리뷰] [Deep Learning] Long Short-Term Memory
  • [논문 리뷰] [Deep Learning] Machine Learning Students Overfit to Overfitting
  • [논문 리뷰] [Deep Learning] Layer Normalization
  • [논문 리뷰] [Deep Learning] An introduction to ROC analysis
23학번이수현
23학번이수현
23학번이수현
밑바닥부터 시작하는 AI보안전문가
23학번이수현
전체
오늘
어제
  • 분류 전체보기 (243)
    • Statistic Study (47)
      • Mathematical Statistics(수리통.. (47)
    • Mathematics Study (15)
      • Linear Algebra (선형대수학) (15)
    • CS Study (74)
      • CLRS (자료구조 | 알고리즘) (49)
      • Database(DB) (11)
      • C++ (11)
      • 컴퓨터 구조 (2)
      • MongoDB (1)
    • DS Study (56)
      • CS 229(Machine Learning) (19)
      • CS 224n(NLP) (5)
      • Web Scraping (7)
      • R4DS(R언어) (20)
      • 밑바닥부터 시작하는 딥러닝 1 (5)
    • Hacking Study (0)
      • Web Hacking (0)
    • 코딩테스트 (5)
      • 백준-Python (5)
    • Paper Review(논문 리뷰) (43)
      • Deep Learning (16)
      • TCGA 관련 논문 (4)
      • Computer Vision (18)
      • NLP (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • deep learning
  • 논문 리뷰
  • graph
  • AI
  • NLP
  • clrs
  • 수리통계학
  • cs 224n
  • LSTM
  • 백준
  • Algorithms
  • 선형대수학
  • Introduction to Algorithms
  • 데이터분석
  • Data Structure
  • Machine Learning
  • cs229
  • C++
  • web scraping
  • R4DS
  • 정렬
  • 알고리즘
  • 시간복잡도
  • R언어
  • 딥러닝
  • db
  • 자료구조
  • Linear Algebra
  • 파이썬
  • introduction to algoritmhs

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
23학번이수현
[논문 리뷰] [Deep Learning] Group Normalization
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.