# Tensorflow : Minimize Linear Regression cost - Gradient Descent
이번 포스팅에서는 Tensorflow를 이용하여 Gradient Descent를 구하고, 이를 통하여 Linear Regression의 cost를 Minimize 하는 법을 알아본다.
1. Simplified hypothesis
우선 기존에 사용하던 hypothesis인 W*x+b를 다음과 같이 '단순하게' 만들어보자.
실제 Gradient Descent가 어떻게 만들어지는지 알아보기 위한 작업으로, 실제 Linear Regression에서는 이런 방식으로 '단순화'하지는 않는다. 정확하게 말하자면, '어차피 미분하면 b는 사라진다'. 미분을 갑자기 왜 이야기하는지는 지금 살펴보자.
다음과 같은 그래프가 존재한다고 하자. 여기서 X축은 W값을, Y축은 Cost를 나타낸다.
우리가 알고싶은 것은 '가장 최소의 Cost 값'이고, 이는 W(X값)가 1일 때임을 확인할 수 있다.
우리는 그래프를 통해 Cost가 최소가 되는, 즉 W가 1이 되는 시점에서의 그래프의 '기울기'가 0이 되는 것을 알 수 있다.
즉, 전체 그래프에서 기울기가 0이되는 시점이 바로 'Cost의 최소값'을 나타내는 곳임을 알 수 있게 된다. 그리고 우리는 '미분'을 이용하여 이러한 기울기를 구할 수 있다.
위의 값은 Cost(W) 식을 미분한 식을 나타내고 있다. 여기서 제곱근을 미분했을 때의 2는 이전에 포스팅에서 언급한 것과 같이 2m으로 Cost 값을 나눠줌으로써 자연스럽게 사라지도록 하였다.
(실제로 값이 무한정 커질수록, m으로 나눠주나 2m으로 나눠주나 차이는 없기 때문)
하지만 우리는 미분으로 원하는 결과를 얻을 수 있는 것이 아니다. 미분을 하는 이유는 단순히 'Cost를 Minimize하기 위함'이고, 즉 최소값을 찾는 과정에 미분을 사용하는 것이다.
그래서 우리는 위의 식을 사용한다. W 값을 이동시키면서 최소값을 찾겠다는 의미인데, 여기서 a는 learning rate, 즉 '얼만큼 이동할지'에 대한 값이다.
미분값이 +라면 값을 줄이기 위해 왼쪽으로 이동할 것(미분 결과가 +)이고, 미분 값이 -라면 값을 증가하기 위해 오른쪽으로 이동할 것이다. 이런식으로 '어찌되었든 언젠가는' Cost 최소값을 갖는 W 값으로 값이 이동하게 될 것이다.
여기서 learning rate가 매우 중요한데, 결국 적합한(적절한) learning rate로 이동한다면 좀더 빠르게 최소값에 도달할 수 있을 것이다.
위의 식은 Tensorflow에서 Gradient Descent를 구하기 위한 식이다.
learning rate는 0.1로 구성하였고(이는 변할 수 있다), gradient 변수에 미분 식을 대입한다.
그리고 W에서 learning rate와 미분 값을 곱한 결과를 대입하고, 이를 W에 새롭게 할당한다.
2. Code for Gradient Descent
위의 코드는 Tensorflow를 이용한 Gradient Descent를 구하는 과정을 나타낸다. 이를 통해 나오는 결과는 다음과 같다.
결국 값이 1로 점점 맞춰져가는 것을 확인할 수 있다.
(왼쪽은 기울기의 값, 오른쪽은 W의 값을 나타낸다)
댓글
댓글 쓰기