딥러닝

[Easy! 딥러닝] Chapter 6. 배치 정규화와 레이어 정규화의 의미와 필요성

jun1-cs 2025. 5. 16. 22:15

기울기 소실 문제를 해결하기 위해 활성화함수로 Sigmoid 함수나 Linear 함수 대신 ReLU를 쓸 수 있다. 그러나 기울기소실 문제를 해결하기 위해 ReLU 대신 배치정규화, 레이어정규화 기법도 사용할 수 있다.

 

1. 배치 정규화(Batch Normalization)

: 원하는 층(layer)에 적용하면  이전 층에서 나온 값들에 웨이트(파라미터)를 곱한 후에 이전 층의 batch_size 크기 데이터의 평균 및 표준편차를 구하고 (0,1)의 표준정규분포를 얻는다. 이후 a를 곱하고(a:표준편차역할) b를 더하여(b:평균역할) 두 파라미터가 추가된다. 이렇게 노드에 들어오는 값들을 재배치한 후, 활성화함수를 통과시켜 output 값으로 만든다.  

 이 과정은 활성화함수 통과 직전에 시행하는데, ReLU의 특성상 음수값은 미분값이 0이 되어 정보가 손실될 수 있고 기울기소실이 발생하며, 양수값은 미분값이 1이 되므로 Linear 활성화함수와 같아져 비선형성이 발생한다. 그러므로 활성화함수가 잘 작용할 수 있게 입력값을 미리 정규화하고 평균과 분산을 적절히 학습시켜 놓는다.(a와 b도 파라미터이므로)

 

->배치정규화로 실험 시, epoch가 증가함에 따라 뉴런들마다 a,b 파라미터를 최적화하게 되어 활성화함수의 x에 해당하는 값들의 분포가 음수,양수 골고루 분포하게 되어 비선형성과 기울기소실문제 해결을 효과적으로 학습하게 된다. 

 

->배치 정규화 사용 시 분류문제의 기울기소실 문제를 획기적으로 해결할 수 있다.(기울기 소실 문제 해결 -> 앞쪽 층의 파라미터를 잘 학습)

 

but, 뉴런의 입력으로 들어가는 데이터의 수, batch size가 작으면 배치 정규화 이후 만들어지는 분포가 원래 값을 잘 반영하지 못해 오히려 배치정규화를 안 쓰는 게 나을 수도 있다 => 이를 보완한 것이 레이어 정규화기법

 

2. 레이어 정규화(Layer Normalization)

: 원하는 층(layer)에 적용하면  웨이트(파라미터)를 곱한 후에 그 층의 각 노드들에서, 노드들마다의 입력 값에 대해 평균 및 표준편차를 구하고 (0,1)의 표준정규분포를 얻는다. 이후 a를 곱하고(a:표준편차역할) b를 더하여(b:평균역할) 두 파라미터가 추가된다. 이렇게 노드에 들어오는 값들을 재배치한 후, 활성화함수를 통과시켜 output 값으로 만든다.  

 이 과정은 배치정규화처럼 활성화함수 통과 직전에 시행한다.

->배치정규화와 달리, 이전 층의 데이터크기(batch size)에 영향을 안 받는다는 장점이 있다. 또한 훈련 때 뿐만 아니라 테스트 시에도 그냥 뉴런의 입력값들을 이용해 정규화할 수 있다.