Normalization : 데이터 feature들의 분포(scale)를 조절하여 균일하게 만드는 방법입니다. 데이터 자체를 정규화 시키는 것
Regularization : 모델에 테크닉적으로 정규화 시키는 것
Early Stopping
Dropout
data augmentation
둘 다 목적은 같다 → train에서 나온 성능을 test에서도 잘 발현시키고자 함 (generalization 성능)
Normalization을 사용하는 이유?
feature간의 분포(scale)차이가 매우 큰 경우, 큰 scale을 가지는 feature가 작은 scale을 가지는 feature보다 모델에 더 많이 반영되기 때문에 Normalization을 통해 모델에 반영되는 scale을 동일하게 만듭니다. ex) 나이: 두자리의 scale, 월급: 백만 단위의 scale + 노이즈가 작아지므로 overfitting이 억제되는 효과가 있음
경사 하강법이 더 적은 반복으로(빠른 학습) global optima에 도달하기 위해 사용한다.
신경망에서는 input layer에 정규화된 값을 입력하더라도, layer를 통과할 때 마다 weight의 영향을 받아 매번 입력 데이터의 분포가 바뀌게 된다.(Internal Covariance Shfit) (학습의 불안정화)
Batch Normalization
배치의 평균과 분산을 이용해서 정규화 한 뒤에, scale 및 shift 를 감마(γ) 값, 베타(β) 값을 통해 실행한다. 이 때 감마와 베타 값은 Backpropagation을 통해서 학습이 된다.
regularization 효과가 있기 때문에dropout 등의 기법을 사용하지 않아도 된다.