이전글(1. Tensorflow와 놀자! : Linear Regression)에서 말했던 것처럼 이번에는 최소제곱법에서 TensorFlow의 알고리즘을 쓰지 않고 직접 편미분을 해보고 그 방식으로 Linear Regression을 해보겠습니다.


이전글에 있던 cost값 함수는 다음과 같습니다.


이 그래프에서 cost 값을 가장 낮추려면, 편미분을 통해 cost 함수의 극소점을 찾아야합니다. 과정은 다음과 같습니다.


1. a, b에 대해서 각각 편미분을 한다.

두 독립변수에 대해 편미분을 하면 다음과 같은 결과가 나오게 됩니다. 이때 우리는 3차원 그래프에서 극소점을 찾아야하기 때문에 두 편도함수의 값은 당연히 0이 되어야 합니다. c = cost(a, b)로 뒀습니다.



2. 연립방정식을 푼다.

간단하게 중2 때 배운 일차연립방정식 풀이처럼 하면 되겠지만, 저는 귀찮으므로(계수 크기가 ㅂㄷㅂㄷ) 공학용 계산기를 사용해서 계산했습니다.



결론적으로 Linear Regression에서 최소제곱법으로 구한 함수는 다음과 같네요.


혹시 몰라서 TensorFlow의 GradientDescentOptimizer로 구한 a, b값을 cost 함수에 넣어봤더니 0.536026232가 나왔고, 직접 편미분해서 구한 값을 cost 함수에 넣었을 땐 0.5360230548이 나왔습니다. 호오, 둘 다 cost값이 비슷하네요.


아래 그림은 TensorFlow에서 구한 Linear Regression과 직접 편미분 계산해서 구한 Linear Regression의 선입니다. TesorFlow것이 파란색, 제가 직접 구한게 빨간색입니다. 데이터들은 초록색 점이고요. 당연히 cost값이 소수점 다섯째자리까지 일치하는 만큼 그래프도 거의 일치하는 걸 볼 수 있습니다.

흠, 나중에는 미적분 알고리즘도 공부해봐서 직접 미적분을 구현해서 Linear Regression을 구현해봐도 재미있을 거 같네요 허헣

+ Recent posts

티스토리 툴바