머신러닝

1-5 라즈베리 초보자를 위한 “머신러닝의 Linear Regression 예제에서 최소 3개 점 데이터를 사용하는 이유는? 수학 문제인듯한데 왜 방정식이 없는

coding art 2017. 12. 20. 15:26
728x90

                                       





Linear Regression 연습문제에서 최소 3개의 점 데이터를 사용하는 이유는 무엇인가? 점 데이터 2개는 안 되는 것일까?

(x,y) 평면에서 직선의 방정식 y=w*x+b 를 생각해보자. 이 방정식의 모양을 제대로 결정하기 위해서는 직선의 기울기 값 a 와 직선이 y축과 만나는 점 즉 절편의 값 b를 알아야 한다. 즉 2개의 파라메타가 결정되어야 하므로 2개의 조건식이 필요하게 된다. 점 데이터를 사용하여 조건을 부여하는 경우 2개의 점 데이터면 충분하다. 2점의 조건을 적용하면 아래와 같이 미지의 상수 w, b 에 관한 연립 방정식이 얻어지며 이로부터 w 와 b의 값을 결정할 수 있다.

    y1 = w*x1 + b
    y2 = w*x2 + b


하지만 점 데이터가 3개면 어떻게 될까?  결정해야 할 미지수는 2개인데 조건식이 3개라면 이는 한마디로 과잉 조건에 해당하며 연립 방정식을 풀 수 없다는 것은 자명하다.

그렇다면 과연 Linear Regression이 하는 역할은 무엇일까? 직선의 기울기와 절편의 값을 결정한다는 점에서는 목적이 동일하지만 Linear Regression 방법은 3개의 점 데이터의 각 x 좌표에 대응하는 y 데이터 값과 이 결정해야 할 직선의 y 값 (여가서부터는 앞으로 hypothesis 라고 하자)과의 차이 즉 y 방향의 거리 차이를 구해 3개를 각각 제곱 평균하여 cost 함수를 구성한 다음 이 cost 함수를 최소화할 수 있는 기울기 w 값과 절편 b 값을 수치계산법에 의해 찾아내는 것이다.

보다 구체적으로 수치 예제를 들어 보자. 3개의 점 데이터 (x1,y1),(x2,y2),(x3,y3)를 각각 (1.0,1.0), (2.0,2.0),(3.0,3.0)으로 둔 다음 cost 함수를 구해보자. 이 문제의 해답은 풀지 않아도 알 수 있는 바 y =  x  가 될 것이다. 하지만 머신 러닝의 가장 간단한 방법인 Linear Regression의 역할을 이해하기 위해서 단계별로 해답을 유도해 보기로 한다.

각 점에 대한 hypothesis 값과 y 값과의 차이를 계산할 수 있으며 이들 3개의 값을 제곱하여 더하고 샘플 데이터 점 수 3으로 나누면 아래와 같이 cost 함수가 w와 b 항으로 얻어진다.



실제로 이 cost 함수의 최소 값을 구하는 방법은 파이선 TensorFlow 모듈에서 지원하는 Gradient Decent  즉 경사하강법이라는 최적화 수치 해석 기법을 사용한다. 하지만 여기에서는 최소화하기 위한 개념을 파악하기 위해서 라즈베리에 기본으로 깔려 있는 매쓰매티카 소프트웨어의 그래픽 기능을 사용해 보기로 한다.

메쓰매티카의 cell에서 PLOT3D[⚫⚫⚫]함수를 입력하고 Evaluation 탭에서 Evaluate Cells를 누르면 된다.
빨간색으로 cost 함수의 곡면이 얻어졌다. 대략 w 값 1∼2 b 값 0 근방에 해당하는 범위가 이 곡면의 최저 바닥으로 보인다. 하지만 그래프의 해상도가 좀 약해 정확한 판정은 어려우므로 함수 값이 상수 값인 면을 그려서 겹쳐 보도록 한다.

이 문제의 해답은 w =1, b =0 즉 1점이므로 cost(1,0) =0 되는 상수면을 그려서 겹치면 1점이 보여야 하지만 해상도 문제가 있을 수 있다. 그래서 약간 큰 값인 0.1 로 그려서 겹치면 cost 함수의 가장 움푹 팬인 곳을 쉽게 찾을 수 있다.



그림에서 2개의 면이 겹쳐지는 부분에 초록색 조각을 볼 수 있으며 이 영역이 cost 함수가 최소가 되는 곳이다.

머신 러닝의 Linear Regression  문제가 스키를 타는 것은 아니지만 곡면의 어느 출발점이 설정되면 부드럽게 골짜기 바닥 쪽으로 이동해 내려갈 수 있으며 그 수학적 기법이 Gradient Decent 임을 지적한다. 이 방법을 Tensor Flow에서 적용하기 위해서는 출발점을 난수 설정에 의해서 지정한다. 사실 곡면이 부드러운 형상으로 움푹패여 있다면 어느 지점에서 스키를 타고 활강을 해도 바닥에 도달할 수 있을 것이다. 만약 곡면이 울퉁불퉁하다면 예를 들자면 비션형성이 강한 Sigmoid 함수나 Softmax 함수를 사용할 경우에는 경사하강법 사용에 문제가 생길 수도 있으며 이때는 learning rate 즉 학습율을 잘 조정하여야 한다.

이러한 과정을 통해서 hypothesis = 1.0*x +0.0 으로 직선이 결정 된다. 따라서 Linear Regression 에 의해 직선으 방정식이 결정 되었으면 테스트용 x 좌표 값이 주어지면 hypothesis 예측 값을 쉽게 계산할 수 있게 된다.

이 Linear Regression 기법은 점 데이터 3개에만 국한되는 것은 아니며 통계적으로 상당히 많은 수의 데이터에 대해서도 적용이 되고 있다.