노는게 제일 좋습니다.

tensorflow 10 : learning rate, normalization, overfitting 본문

Python/통계 및 데이터관련

tensorflow 10 : learning rate, normalization, overfitting

노는게 제일 좋습니다. 2017. 1. 27. 14:49

sung kim 교수님의 강의를 보고 정리한 것이다.
강의내용을 보고 따라그린 그림도 있고, 가져온 그림도 있다.

1.

경사하강법(Gradient Descent Algorithm)을 사용할 때, learning rate란 것을 사용했었다.

tf.train.GradientDescentOptimizer() 함수에 인자로 넣어주던 바로 그것이다.

학습을 잘 시키기 위해서는 이 러닝 레이트의 값을 잘 조절해야 한다.



러닝 레이트가 너무 큰 경우 정처없이 왔다 갔다 거리거나, 발산을 해서 최소점을 못찾을 수 있다.


반대로 너무 작은 경우에는.. 한참을 찔끔찔끔가다 시간이 너무 오래걸려서 최소점까지 못가고 학습을 끝낼 수도있다.


2.

피쳐(feature)가 두 개 있다고 하자.(x1, x2) 그리고 이 두 개의 피쳐를 각각 한 축으로 잡아 그래프를 그려보자



여기서.. 화면에서 튀어나오는 쪽으로 y축이 튀어나온다고 생각하자. 그럼 바깥쪽이 높은 부분, 안쪽이 낮은 부분이다.

만약 학습 데이터에서 x1,x2의 차이가 별로 크지 않다면 예쁜 동그라미 등고선으로 그래프가 그려질 수 있다.



하지만 x1,x2의 차이가 크다면 찌그러진, 타원의 그래프가 그려질 수도 있다. 또 다른 모양으로 그려질 수도 있다.

이런 경우 그래프 간격이 너무 좁아서 코스트 함수(cost)값이 발산을 하거나 하는 문제가 발생 할 수 있으므로, 노멀리제이션(normalization)이라는 과정을 거치는 것이 좋다.



원본 데이터를 일단 원점에 잘 맞추고, 그 다음 노멀리제이션을 해줄 수 있다.


강의에서는 노멀리제이션 중에서도 스탠다디제이션(standardization)이라는 것을 소개해준다.

(원래 x값-평균)/분산 을 새로운 x값으로 사용하면 된다.


3.

overfitting이란 모델을 너무, 너무 지나치게 학습데이터에 맞추어 만드는 것을 말한다.

예를 들어, 위와 같은 학습데이터가 있다고 하자. O, X가 있는 데이터이다.


바이너리 클래시피케이션을 통해 이런 식으로 선을 그어줄 수 있다.



그런데 너무 정확하게 학습데이터를 갈라주다 보면 이런식으로 선이 그어질 수도 있다. 이 경우를 오버피팅되었다고 한다.

학습데이터를 모델에 주었을 때는 잘 대답할지언정, 실제로 사용할 때는 부정확한 결과를 낼 수도 있다.

그래서 이런 현상을 해결하려는 노력이 필요하다.


그 방법은 세 가지이다.

1. 학습 데이터를 많이 준다.

2. 중복되는 것들을 삭제하는 등, 피쳐를 줄인다.

3. 일반화(Regularization)을 한다.


그 중 세 번째, 일반화를 보도록 하자. 오버피팅을 방지하기 위해서는 과도히 구부러진 선을 펴주는 작업이 필요하다.

위에 선이 그어진 그래프에서 전자는 W값이 작고, 후자는 W값이 크다고 할 수 있다.

즉, 구부러진 선을 편다는 것은 W값을 줄여 적절한 값을 갖게 한다고 말할 수 있다.



이를 위해서는 여러 방법이 있는데, 그 중 하나는 코스트 함수에 위와 같은 항을 하나 더해주는 것이다.

W행렬의 각각 원소를 제곱해서 모두 더하고, 상수 람다를 곱해주는 식이다

상수 람다는 regularization strength라고 한다. 이 값이 0이면, 이 항을 사용하지 않는다는 의미가 되겠다.


좀더 친절하고 자세한 설명은 여기에 나와있다.

https://www.quora.com/What-is-regularization-in-machine-learning#cite-PtHwi

https://en.wikipedia.org/wiki/Regularization_(mathematics)


다만, 코스트 함수에 W를 제곱한 것을 더하는데 어떻게 W가 줄어든다는 것인지 이해할 수 없었다.

좀 더 고민이 필요할 듯하다.


Comments