새소식

인공지능

선형회귀 Linear Regression

  • -
6.1101,17.592
5.5277,9.1302
8.5186,13.662
7.0032,11.854
5.8598,6.8233
8.3829,11.886
7.4764,4.3483
8.5781,12
6.4862,6.5987
5.0546,3.8166
5.7107,3.2522
14.164,15.505
5.734,3.1551
8.4084,7.2258
5.6407,0.71618
5.3794,3.5129
6.3654,5.3048
5.1301,0.56077
6.4296,3.6518
7.0708,5.3893
6.1891,3.1386
20.27,21.767
5.4901,4.263
6.3261,5.1875
5.5649,3.0825
18.945,22.638
12.828,13.501
10.957,7.0467
13.176,14.692
22.203,24.147
5.2524,-1.22
6.5894,5.9966
9.2482,12.134
5.8918,1.8495
8.2111,6.5426
7.9334,4.5623
8.0959,4.1164
5.6063,3.3928
12.836,10.117
6.3534,5.4974
5.4069,0.55657
6.8825,3.9115
11.708,5.3854
5.7737,2.4406
7.8247,6.7318
7.0931,1.0463
5.0702,5.1337
5.8014,1.844
11.7,8.0043
5.5416,1.0179
7.5402,6.7504
5.3077,1.8396
7.4239,4.2885
7.6031,4.9981
6.3328,1.4233
6.3589,-1.4211
6.2742,2.4756
5.6397,4.6042
9.3102,3.9624
9.4536,5.4141
8.8254,5.1694
5.1793,-0.74279
21.279,17.929
14.908,12.054
18.959,17.054
7.2182,4.8852
8.2951,5.7442
10.236,7.7754
5.4994,1.0173
20.341,20.992
10.136,6.6799
7.3345,4.0259
6.0062,1.2784
7.2259,3.3411
5.0269,-2.6807
6.5479,0.29678
7.5386,3.8845
5.0365,5.7014
10.274,6.7526
5.1077,2.0576
5.7292,0.47953
5.1884,0.20421
6.3557,0.67861
9.7687,7.5435
6.5159,5.3436
8.5172,4.2415
9.1802,6.7981
6.002,0.92695
5.5204,0.152
5.0594,2.8214
5.7077,1.8451
7.6366,4.2959
5.8707,7.2029
5.3054,1.9869
8.2934,0.14454
13.394,9.0551
5.4369,0.61705

  

만약 x와 y가 위와 같이 콤마(,) 로 구분되있다고 가정합시다.. 이를 그래프로 표현하면 그림 1 과 같습니다.

그림 1

 만약 여기서 x값이 25일때는 y값은 무엇일까요? 라는 질문을 했을 때 잘은 모르겠지만 25~30 언저리 될 거에요 라고 답할 것입니다. 무의식적으로 우리는 아래와 같이 그래프에 직선을 그어서 25에 해당하는 y값을 추측한 것입니다. 하지만 컴퓨터는 무의식이나 직감으로 움직이는 녀석이 아니죠. 컴퓨터는 사람이 시킨 일만 할 수 있습니다. 따라서 우리는 컴퓨터에게 다음과 같은 과정을 거치며 값을 예측하라 가르쳐주어야합니다. 

 

1. 직선을 무작위로 긋는다.

2. 직선과 데이터(초록색 점)과 얼마나 다른지 측정한다.

3. 측정한 수치로 직선을 다시 그린다.

 

각 단계별로 자세히 살펴보겠습니다.

 

1. 직선을 무작위로 긋는다.

 

 일단 처음엔 컴퓨터가 무작위로 직선을 한번 그려보게 합시다. 직선은 "직선의 방정식"으로 표현이 가능합니다. 직선의 방정식은 다들 아시다시피 $f(x) = Ax + B$ 혹은 $y = Ax + B$로 표현이 가능하죠. 그리고 $H(x) = Wx + B$으로도 표현이 가능합니다. 여기서 $W$는 Weight(가중치)의 W를, H는 Hypothesis function(가설 함수)의 H를 사용한 것입니다. 현재는 직선을 긋기 위해 기울기($W$)와 y절편, 즉 편향($B$) 이 2가지만 필요하기 때문에 $W$와 $B$를 사용하지만 이 파라미터들이 더욱 많아지면 $W$, $B$로만 표기하기 힘들기 때문에

$\theta$로도 표현이 가능합니다.

 

그림 2

그림 2는 직선을 무작위로 그었을 때를 가정한 것인데 W와 B를 0으로 초기화시킨 모습입니다. 무작위로 그은 선이기 때문에 원래 데이터를 잘 표현하지 못하는 것 같습니다.

 

 

2. 직선을 데이터(초록색 점)과 얼마나 다른지 측정한다.

 

 선을 그었으니 만든 선과 현재 데이터 간의 오차가 많은지 측정을 해야합니다. 그럼 직선과 데이터들과 오차를 어떻게 구할 수 있을까요? 바로 MSE(Mean Squad Error)방법 입니다. 아주 간단합니다. 직선과 데이터의 차이를 제곱하여 모두 더하고 이 값의 평균을 구하면 됩니다. 

 MSE를 식으로 표현하면 $MSE = (y - \widehat{y})^2 / n$ 입니다. $y$는 관측치로 그래프 상에서 초록색 점이고 $\widehat{y}$는 예측치로 빨간색 직선을 의미합니다. 그림 3은 관측치와 예측치의 차이를 검은색 직선으로 표시한 것입니다. MSE는 이런 검은색 직선의 길이를 모두 더한 것의 평균값입니다.

 

그림 3.

 

 이 MSE값이 높으면 Error가 그만큼 많다는 뜻입니다. 따라서 가설함수 즉, 우리가 예측한 모델인 $H(x) = Wx + B$ 는  MSE가 적은 쪽으로 학습되어 바뀔 것 입니다. 

 

 

 

3. 측정한 수치로 직선을 다시 그린다.

 

 이제 얼마큼 잘못되었는지 알게되었죠. 그럼 이제는 처음에 그었던 직선을 수정을 합시다.  직선을 수정한다는 것을 $Wx + B$ 이 식에서 $W$(기울기)와 $B$(y 절편)를 수정하는 것과 같습니다. $W$를 바꾸거나 $B$를 잘 바꾸면 그만큼 오차가 줄어들겠죠. 그럼 $W$ 와 $B$를 오차함수값과 같이 고려하여 생각해봅시다. 예를들어 W변화에 대한 오차값을 나타내면 그림3과 같습니다. 그림3과 같이 아래로 볼록한 그래프라고 단정지을 수 있는 이유는 오차함수인 MSE의 식은 ${(y- \widehat{y})^2} / n$이기 때문에 이는 $A^2$꼴이기 때문입니다. 이 그래프에서 가장 볼록한 부분이 MSE값 즉, 우리가 예측한 값과 정답값의 차이가 가장 작다고 볼 수 있습니다. 그리고 이렇게 밑으로 볼록모양인 이차함수에서 값이 가장 작은 부분은 기울기가 0인 값이죠. 따라서 우리는 현재 $W$가 있는 부분에서의 기울기를 구하고 기울기가 0인 부분으로 $W$를 옮기면 되는거죠. 만약 그림4 처럼 $W$가 기울기가 0인 곳보다 왼쪽에 있으면 $W$값을 오른쪽으로, 그림 5처럼 기울가 0인 곳보다 오른쪽에 있으면 왼쪽으로 $W$를 옮기면 됩니다. 

 

W가 기울기가 0인 곳보다 왼쪽 -> W를 오른쪽으로 이동

W가 기울기가 0인 곳보다 오른쪽 -> W를 왼쪽으로 이동

 

W를 오른쪽으로 이동한다는 것은 W값을 + 방향으로 더한다는 의미이고 W를 왼쪽으로 이동한다는 것은 반대로 - 방향쪽으로 뺀다는 의미입니다. W가 기울기가 0보다 왼쪽이면 W의 현재 기울기가 -를 의미하고 W가 기울기가 0보다 오른쪽이면 W의 현재 기울기가 +라는 것을 알 수 있습니다. 

 

W의 기울기가 음수(-) -> W를 ++

W의 기울기가 양수(+) -> W를 --

 

 

정리해봅시다

 

 정리를 해보면 우리는 과정1 에서 $W$를 랜덤하게 초기화(직선을 무작위로 긋기) 했습니다. 과정 2에서는 MSE를 구했고(직선이 초록색 점과 얼마나 다른지 측정), 이제 과정3 에서는 MSE가 가장 작은 값으로 W와 B를 변경을 하면된다는 것을 알게되었습니다.

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.