피처 정규화는 필수인가

2021-01-18

.

[학습자료]

페이스북 텐서플로우 코리아 게시글을 읽고 정리한 내용입니다.

(2020년 12월 20일 임소현님 게시글)

[학습내용]

  • 수치형 데이터에 대해 경사하강법을 사용해 해를 구하는 모델들은 ‘피처 정규화’가 중요한데 피처 정규화 없이도 최적해를 찾을 수 있는지? 즉, min-max scaling, z-score normalization 없이도 epoch를 늘리는 등 반복 과정을 더 거치면 궁극적으로 최적해를 찾을 수 있는건지, 아니면 피처 정규화 없이는 local minimum에 빠질 위험이 있는건지

1) 로스가 잘 줄어들지 않는 현상이 있다. 즉, 학습이 잘 안된다.

2) 선형회귀나 로지스틱 회귀같은 convex objective는 learning rate를 많이 낮춰야 해서 오래 걸리겠지만 numerical underflow 나지 않는다면 언젠가 수렴은 한다. 딥러닝의 경우에는 정규화를 하지 않으면 learning rate를 낮춰야 하는 만큼 local optimum에 빠질 가능성이 높다.

learning rate 자체는 adagrad/adam같은 learning rate adaptation을 쓰는 이상 큰 문제는 없다. 그리고 depth가 implicit하게 preconditioning 해준다는 연구도 있다. https://arxiv.org/abs/1802.06509 그보다 중요한 문제는 initialization일 것이다. 디폴트 initialization을 사용하면 ill conditioned data의 경우 initial parameter가 너무 안좋은 값일 것이고, 이를 바로잡는건 결국에는 정규화와 비슷한 프로세싱이 필요하기 때문에 결론적으로 정규화를 하는게 좋다.

요약하면 convex model에서는 learning rate를 많이 낮춰야 해서 오래 걸리지만 numerical underflow 나지 않으면 수렴은 하기는 한다. 그러나 non-convex model의 경우 정규화 하지 않으면 learning rate를 많이 낮춰야 해 시간 오래 걸릴 뿐만 아니라 local optimum에 빠질 가능성 높다.

3) 이론적으론 피처정규화를 했을때와 안했을때 학습을 하면 같은결과가 나와야 하지만 구현과정에서 정규화를 가정하여 구현된 함수들이 있을 경우 다를수밖에 없다. 예를들어서 정규화 데이터 + 선형회귀 without bias = 데이터 +선형화귀 +bias 가 된다.

4) 데이터정규화 해야하냐 안하냐 이전에 Representative 데이터를 눈으로 직접 확인해보면서 정규화가 필요한지에 대한 데이터기반 rationale가지고 있거나 또는 모아진 데이터의 속성(가정)을 가지고 정규화에 대한 데이터기반 rationale을 갖고 접근한다면 좀더 설득력 있을것이다.

5) 출력값이 정규화되지 않는다면 학습중에 delta weight값이 커지면서 발산(diverge) 가능성이 높아진다. Diverge 가 발생하지 않더라도 local optimal 에 빠지거나 fluctuation의 가능성도 높아진다.