제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다.
Normalization
Data Normalization 은 데이터의 범위를 사용자가 원하는 범위로 제한하는 것이다. 이미지 데이터의 경우 픽셀 정보를 0~255 사이의 값으로 가지는데, 이를 255로 나누어주면 0~1.0 사이의 값을 가지게 될 것이다.
위의 예를 수식으로 간단하게 쓴다면,
(정규화하고자 하는 값 - 데이터 값들 중 최소값) / (데이터 값들 중 최대값 - 데이터 값들 중 최소값)
이다.
다른 방법으로는
(정규화하고자 하는 값 - 데이터의 평균) / 데이터의 표준편차
가 있다.
두번째 경우는 Standardization 이라고도 한다.
Normalization, 왜 하는데?
학습을 더 빨리하고 Local optimum 에 빠지는 가능성을 줄이는 등의 다양한 실용적 이유가 있다.
직관적 이해를 위해 그림을 첨부한다.
출처[1]
위 그림은 Geoffrey Hinton 교수님의 자료이다. Optimum 이 주어진 Cost function space 의 중심에 있을 때, 형태가 Elongated 된 것 보다 Spherical 한 것이 Gradient descent 방법으로 찾아갈 때 더 빠를 것이라고 이해할 수 있다. 아래 Andrew Ng 교수님의 자료를 보자. data scale 이 동일하지 않은 경우(왼쪽, Unnormalized)와 동일한 경우(오른쪽, Normailzed)의 수렴속도가 어떻게 차이날 수 있는지 직관적으로 이해하는데 도움을 받았다.
출처[2]
더 단순하게 그림으로 표현하자면(그래프를 깔끔하게 그리기 번거로워서 간단하게 파워포인트로 그렸다) 왼쪽이 정규화 하지 않은 경우의 Cost function 이고 오른쪽이 정규화 한 Cost function 일 때, 정규화 한 경우가 Local optimum 에서 더 빨리 빠져나올 수 있다는 것을 직관적으로 이해할 수 있을 것이다.
[1] https://stackoverflow.com/questions/4674623/why-do-we-have-to-normalize-the-input-for-an-artificial-neural-network
[2] https://www.youtube.com/watch?v=UIp2CMI0748