[ML]정규화(normalization)와 표준화(standardization)하는 이유
머신러닝 관점
정규화&표준화가 필요한 이유는 기준을 설정하고 그 기준내에서 각 데이터들을 평가하기 때문에 비교가 편하다는 것
머신러닝을 하다보면 기본적으로 많은 양의 데이터를 처리하게 된다. 그리고 그 데이터안에 target과 관련있는 특성(feature)을 뽑아낸다.
예를 들어, 오늘 입을 옷을 결정할 때 그날의 온도, 습도, 날씨, 약속의 유무 등을 따지는 것과 같다.
그럼 온도, 습도, 날씨는 ℃, F 등 특성의 단위도 다르고 그 범위도 달라 직접적으로 비교할 수 없다.
내가 토익(990만점) 400점이고, 넌 영어(100점만점) 90점이니까 내가 더 공부를 잘하네? 라고 할 수 없는 듯이 말이다.
그래서 각 특성들의 단위를 무시하고 값으로 단순 비교할 수 있게 만들어 줄 필요가 있다. 그것이 우리가 정규화/표준화를 진행하는 이유다. 정규화/표준화가 해주는 것을 특성 스케일링(feature scaling) 또는 데이터 스케일링(data scaling)이라고 한다.
또한 가장 중요한 이유는 scale의 범위가 너무 크면 노이즈 데이터가 생성되거나 overfitting이 될 가능성이 높아지기 때문이다.
딥러닝 관점 직관적 이해
아래와 같이 Unnormalized
된 상태에서는 Learning Rate
을 매우 작게 설정해야 정상적을 학습이 된다.
이유는 cost 그래프가 elongated
하기 때문이다. 따라서 elongated contour
의 모습을 가진다.
아래와 같이 Input
의 Range가 서로 다르다면 Gradient Descent Algorithm
을 적용하는것이 매우 까다로워지는 상황이 발생 한다.
하지만 normalization
을 적용하면 좀 더 spherical contour
를 가지게 된다.
이렇게 하면 좀 더 Gradient Descent Algorithm
으로 쉽게
그리고 빠르게
최적화 지점을 찾게 된다.
출처: https://goodtogreate.tistory.com/entry/Neural-Network-적용-전에-Input-data를-Normalize-해야-하는-이유 [GOOD to GREAT:티스토리]