AI 기본 지식

Normalization : Batch Norm vs Layer Norm

study_love 2025. 11. 25. 21:33

 이 게시물에서는 Batch Norm과 Layer Norm에 대해서 설명하도록 하겠다. 보통 딥러닝에서 Normalization을 한다고 하면 이 두 방법 중 한 방법을 사용한다. 따라서 각각의 Normalization을 사용하기 위한 조건을 잘 파악해두면, 딥러닝 모델을 개발할 때 도움이 될 것이다. 

Batch Normalization 

 먼저 Batch Normalization에 대해서 설명하도록 하겠다. Batch Normalization은 한 batch의 sample들의 feature를 각각 normalization하는 것이다. 각 feature마다 batch안의 sample들의 feature value의 평균과 표준편차를 구해서 normalization을 한다고 생각하면 된다. 이렇게 하면 feature들끼리의 scale이 비슷해지기 때문에 feature들 끼리의 중요도가 비슷해진다는 장점이 있고, 모든 feature에 대해서 feature value를 N(0,1)에 가깝게 해주기 때문에 gradient 안정화에 도움이 된다.  

 batch Norm에서는 같은 batch에 있는 sample들에 비해서 특정 sample의 feature value가 크고 작은게 중요해야 의미가 있다. 즉 예시를 들면 <키,몸무게> 데이터가 있을 때, 같은 batch에 있는 친구들에 비해서 내가 키가 큰게 유의미 해야한다. 이 설명을 기반으로 batch norm을 쓰면 좋은 경우와 좋지 않은 경우에 대해서 알아보자. batch norm을 쓰면 좋은 경우는 CNN이 있는데, CNN의 kernel들은 자신만의 유의미한 feature들을 뽑는다고 알려져 있다.(특정 edge나..) 이러한 CNN의 kernel들이 한 batch 안에 모든 sample에 대해서 똑같이 연산을 하기 때문에, 같은 batch 안에 sample들끼리 feature 값이 크고 작은게 매우 의미가 있다. 따라서 CNN은 batch norm의 기본 철학에 매우 fit한 녀석이다. 하지만 LLM을 예시로 생각해보면, 도대체 batch norm을 어떻게 적용해야할지 아예 감이 오지 않는다. 보통 한 batch 안에서 input끼리 length도 다를 뿐더러, LLM상에서 같은 position에 있다고 해도, 서로 다른 토큰의 embedding끼리 normalization을 시키는 것은 정말 상상할 수가 없다. 왜냐면 토큰의 embedding은 각 feature값이 다른 sample들 보다 크고 작은것이 중요한게 아니라, embedding vector 자체의 벡터의 방향이 훨씬 더 중요하기 때문이다.

 

Layer Norm

 Layer Normalization은 한 sample안의 feature값들끼리 normalization을 하는 것이다. 이렇게 하면 batch norm과 마찬가지로 feature값들이 N(0,1)이 되면서 gradient역시 안정화 된다. 다른 sample들에 비해서 feature value의 크고작음이 중요한 것 보다 한 sample자체의 벡터의 방향같은게 중요할 때 사용하면 된다. 따라서 LLM같은 task에서 사용하는게 좋다. 

 

 batch norm과 layer norm을 표로 정리하면 다음과 같다.

  정규화 단위 공통 효과 사용 조건 배치 사이즈 영향 이용사례
batch norm batch gradient
exploding 막아 학습 안정
한 batch 안의 sample들끼리
각각의 feature에 대해
feature value의
크고 작음이 유의미 할 때
작으면 치명적임 CNN
layer norm sample gradient
exploding 막아 학습 안정
각각의 feature value가
다른 sample에 비해서
크고 작은게 유의미하다기보다
한 sample내에서 벡터의 방향
같은 것이 더 중요할 때
당연히 상관없음 Transformer