아래의 블로그를 참고하여 작성한 글입니다 :)
https://medium.com/techspace-usict/normalization-techniques-in-deep-neural-networks-9121bf100d8
1. 데이터 정규화의 필요성
- 학습 데이터에서는 성능이 좋지만 테스트 데이터에서는 영 성능이 별로일 때, 단순히 오버피팅의 문제가 아니라 두 데이터의 분포가 달라서인 경우도 있습니다.
- 또한 학습 할 때에도 데이터간의 분포가 서로 다르다면, 각 분포에 맞춰서 업데이트가 되는 과정에서 학습이 제대로 이루어질 수가 없으며, 그 속도도 상당히 느릴 수 밖에 없습니다. 아래에서 좀 더 구체적으로 이유들을 짚어보도록 하겠습니다.
1) 큰 값을 갖는 변수에 편향되지 않을 수 있다
: 어떤 변수의 데이터의 단위가 다른 변수보다 큰 경우에도 변수(feature)의 영향(contribution)이 크게 잡힐 수 있습니다. : 모델을 학습 시킬 때 어떤 변수는 크게 업데이트하고, 어떤 변수는 작게 업데이트를 해야 빠른 시간안에 손실 최소지점에 도달할 수 있지만, 각 변수의 범위가 다르기 때문에 어떤 변수에 맞추어 학습률을 정하는가에 따라 다른 변수는 최소 지점을 두고 지그재그로 움직이는 현상이 나타날 수 있습니다.
2) 내부 공변량 변화(internal covariate shift)를 줄일 수있다.
: 내부 공변량 변화(internal covariate shift)란 딥러닝 모델 내부에 하나의 은닉층에 서로 다른 범위의 입력이 들어오는 것을 의미합니다.
3) 손실함수의 표면을 매끄럽게 한다.
: 정규화를 통해 기울기의 크기를 제한함으로써, 손실 표면을 더 매끄럽게 만듭니다(논문)
4) 빠른 최적화
: 정규화는 Gradient Vanishing하거나 Gradient Exploding하는 것을 허용하지 않도록, x의 절대값을 특정 범위로 제한하기 때문에 최적화를 더 빠르게 만듭니다.
: 아래와 같이 그린 존으로 범위를 제한하면 활성화함수의 미분값이 0이 아닌 의미있는 값을 지님을 확인할 수 있습니다. 즉, 정규화를 통해서 Gradient의 미분값이 0으로(Saturated) 되지 않도록 하여 최적화를 돕습니다.
2. 정규화 방법
대표적인 방법으로는 표준화(standardization)과 최소극대화(minmax) 정규화가 있습니다.
2.1 표준 정규화(Standarzation)
: 기본적인 전처리로 각 샘플을 평균이 0 분산이 1이되도록 변환한다(데이터 분포의 표준정규분포화)
2.2 Min-max normalization
: 데이터를 0에서 1사이로 압축하거나 늘리는 방법으로, 데이터에서 최소값을 빼고 최대값과 최소값의 차이고 나누어줌
'AI > 딥러닝 기초(Deep learning)' 카테고리의 다른 글
[딥러닝][기초] 학습률(Learning rate)와 스케줄링 (0) | 2021.04.29 |
---|---|
[딥러닝][기초] 앙상블(Ensemble) (0) | 2021.04.29 |
[딥러닝][기초] 손실함수(Loss function) (0) | 2021.04.29 |
[딥러닝][기초] 딥러닝 학습을 위한 Trick들 (0) | 2021.04.29 |
[딥러닝][기초] 활성화 함수(Activation Function) (0) | 2021.04.25 |
댓글