기울기 소실 문제를 해결하기 위해 활성화함수로 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)에 영향을 안 받는다는 장점이 있다. 또한 훈련 때 뿐만 아니라 테스트 시에도 그냥 뉴런의 입력값들을 이용해 정규화할 수 있다.
'딥러닝' 카테고리의 다른 글
| [Deep Learning] 1. 확률론 (7) | 2025.08.10 |
|---|---|
| [PyTorch practice] RNN 코드 도식화하기 (0) | 2025.06.06 |
| [Easy! 딥러닝] Chapter6 앞부분까지 새롭게 배운 내용 (0) | 2025.05.15 |
| [DL Study] 4. Cost gradient descent (0) | 2025.04.29 |
| [DL Study] 3. DNN forward pass (0) | 2025.04.08 |