본문 바로가기

카테고리 없음

머신 러닝 알고리즘 - Learning Rate(학습률)과 Overshooting

출처 : http://it.plusblog.co.kr/221239772515


이번 포스트에서는 Gradient Descent 알고리즘의 수식을 자세히 살펴보겠다.

Cost Function에서 α값에 대해서 설명이 부족했다. 아 값은 Learning Rate라고 하는 특별한 값으로 너무 크지도, 너무 작지도 않은 값을 가져야 한다. 특정 가중치값 W가 주어졌을 때 기울기에 Learning Rate를 곱해서 그 다음 가중치 값을 결정하게 된다. 

Cost 함수를 보자.

임의의 가중치 W에서 시작해서 Gradient Descent 알고리즘을 이용해 최저값을 찾아나가는 과정은 다음과 같다.

이상적인 Gradient Descent 알고리즘의 추적 순서다. 하지만 Learning Rate가 적절한 값보다 큰 경우 어떻게 될까? 다음과 같이 오류가 발생한다. 

1번점에서 시작했다고 하자. 기울기가 음수라서 Gradient Descent 알고리즘에 의해서 W를 증가시켜야 한다. 원래는 0.3만큼 증가해야하는데, 기울기에 곱해주는 Learning Rate가 너무 커서 3만큼 증가했다. 3만큼 증가해서보니 기울기가 양수라서 W를 감소시켜야한다. 마찬가지로 지나치게 큰 Learning Rate 값 때문에 3번자리까지 옮겨졌다.

Learning Rate가 큰 경우 이런식으로 W 값이 발산해버린다. W값이 최적이 아니라 계속 부정확하게 되어버리므로 망한 학습이 된다. 이 경우를 Overshooting이라고 한다. 학습이 제대로 안되고 오류가 많이 발생할 경우 Gradient Descent를 진행하며 Cost가 특정 값에 수렴하는지 여부를 관찰하고 발산한다면 Learning Rate를 줄여서 수렴하게 만들어 줘야한다.

반대로 Learning Rate가 작은 경우엔 어떻게 될까?

수렴하기는 하나 최종 값으로 찾아갈때까지 너무 많은 반복(Iteration)을 수행해야한다. 즉, 학습 속도가 지나치게 느려진다.

적당한 Learning Rate 값을 찾는 것은 어려운 작업이다. 따라서 하나 이상의 값을 이용해서 학습을 해보고 적당한 값을 선택하는 것이 일반적이다.