본문 바로가기
인공지능

[인공지능개론] Regression①

by 반달링 2024. 5. 6.
더보기

 

  

A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E. 
- Tom Mitchell -   

머신러닝이 수행하는 Task는 크게 Regression과 Classification로 나눌 수 있다. 그 중 Regression에 대해 알아보자.

Regression은 하나의 종속변수(dependent variable)와 다른 독립변수들과의 관계를 나타내는 task이다. 

Linear Regression

Hypothesis(가설모델)을 선형으로 나타내자.

H(x) = wx + b라 할 때, w와 b는 각각 weight와 bias로 trainable parameter이다.

이때, 우리가 세운 가설모델과 train data가 얼마나 잘 맞는지를 나타내는 것이 cost function이다. 이는 가설모델과 train data 사이의 거리로 나타낼 수 있는데 우리가 가장 쉽게 생각해낼 수 있는 거리를 계산하는 방법은 Mean Square Error(MSE)일 것이다. MSE의 장점은 전체구간에서 미분 가능하다는 점과 error가 큰 곳의 값이 더욱 커진다는 점이다.

$$cost = \frac{1}{m}\sum ^m_{i=1}(H(x^{(i)})-y^{(i)})^2 $$

이 공식에 우리가 세운 가설모델을 대입해보자.

$$cost = \frac{1}{m}\sum ^m_{i=1}((wx^{(i)}+b)-y^{(i)})^2$$

우리는 이 cost function, 즉 가설모델과 train data의 차이를 최소화하는 parameter w,b를 찾아야한다. 단순화하기 위해 일단 bias는 제거해두자.

$$cost = \frac{1}{m}\sum ^m_{i=1}(wx^{(i)}-y^{(i)})^2$$

예를 들어 확인해보자. (x,y)가 (1,1), (2,2), (3,3)인 data를 잘 설명하기 위한 hypothesis를 찾는 과정이다.

만약 w=0이라면, $cost = \frac{1}{3}((0\times1-1)^2+(0\times2-2)^2+(0\times3-3)^2) =4.67$

만약 w=1이라면, $cost = \frac{1}{3}((1\times1-1)^2+(1\times2-2)^2+(1\times3-3)^2) =0$

만약 w=2라면, $cost = \frac{1}{3}((2\times1-1)^2+(2\times2-2)^2+(2\times3-3)^2) =4.67$

w=1일 때가 최소이므로, 가장 data를 잘 나타냈다고 할 수 있다.

하지만 항상 w값을 하나씩 대입해볼 수 없다. 이를 위해 나타난 방법이 Gradient Descent Algorithm이다.

Gradient Descent

1. 초기값을 설정한다. 

2. timestep마다 가능한한 cost를 줄이기 위해 gradient를 계산하여 parameter를 업데이트한다.

$$w=w-\alpha\frac{\partial}{\partial w}cost(w)$$

3. 이를 반복한다.

$$cost = \frac{1}{2m}\sum ^m_{i=1}(wx^{(i)}-y^{(i)})^2$$

cost function 식에서 m이 2m으로 바꼈으나 MSE 식이므로 gradient 계산과정에서 2가 나오는 것을 반영하여 parameter update 식을 예쁘게 만들기 위해 m을 2m으로 맞춰준 것뿐이다.

$$\frac{\partial}{\partial w}cost(w) = \frac{1}{2m}\sum ^m_{i=1}2(wx^{(i)}-y^{(i)}) x^{(i)}$$

$$\frac{\partial}{\partial w}cost(w) =\frac{1}{m}\sum ^m_{i=1}(wx^{(i)}-y^{(i)}) x^{(i)}$$

$$w=w-\alpha\frac{\partial}{\partial w}cost(w)$$

parameter update에 영향을 주는 요소들을 살펴보자.

1. learning rate $\alpha$

만약 $\alpha$가 매우 작다면,

gradient descent는 매우 천천히 진행될 것이다.

 

만약 $\alpha$가 매우 크다면,

gradient descent는 최소값을 넘어가 수렴하지 못할 수 있고, 심지어는 발산하게 될 수 있다.

 

2. 초기값

어디에서 시작하는지에 따라 도달하는 최소값이 달라질 수도 있다. 우리가 알아본 linear regression에서는 빗살무늬 모양의 cost function으로 초기값과 상관없이 가장 최소인 지점 global minimum에 도달하게 된다. 하지만 parameter가 많아지고 더 복잡한 형태의 cost function을 다루게 된다면 random으로 선택한 각 시작 지점에서 cost를 줄이는 방향으로 update되면서 local minimum에 도달할 수도 있게 된다. 

 

Cross Validation

cost가 최소라고 해서 가장 잘 설명한 모델이라고 할 수 있을까? 아마 parameter가 많을 수록 cost는 작아지겠지만 모델은 복잡해지며, train data에 대해서는 성능이 좋지만 unseen data(새로운 data)에 대해서는 성능이 떨어지게 된다. 이러한 경우를 overfitting이라 하며, 모델이 data를 외웠다고 말한다. 반대로, train data에 대해서도 제대로 설명하지 못하는 모델은 underfitting이라고 한다. 우리는 overfitting도, underfitting도 아닌 그 중간지점을 찾아야 하는데 이를 위해 cross validation을 활용한다.

먼저, dataset을 train data와 test data로 나눈다. train data는 이름처럼 학습을 위함이고 test data는 마지막으로 모델을 평가하기 위함이다. 이 두가지 data만으로 학습을 한다면 test data에 overfitting되므로, 일반화된 성능을 위해 train data를 다시 train과 validation으로 나눈다. 이는 고정되는 것이 아니라, k개의 다른 조합으로 train과 validation을 나누며 이를 K-Fold Cross Validation(교차 검증)이라 한다.

학습 단계는 4단계로 나눌 수 있다.

1. K-Fold CV : k번의 cross validation을 통해 모델을 검증한다.

2. Retrain on the Train-Set : hyper-parameters를 고정하고 전체 train set에 대해 다시 학습한다.

3. Test-Set에 대해 성능 평가

4. 전체 Data Set에 대해 다시 학습한다.

cross validation은 모든 데이터셋을 Train과 Test에 활용할 수 있다는 장점이 있다. underfitting과 overfitting을 동시에 방지할 수 있는 것이다.

어떤  data에 대해 가장 잘 설명하고 있는 모델은 단순히 cost가 최소인 지점이 아닌, under-fitting과 over-fitting의 경계라고 말할 수 있을 것이다.

 

Multivariable Linear Regression

독립변수(feature)가  여러 개인 경우 Multivariable이라고 한다. 앞서 독립변수가 한 개인 경우에는 H(x) = wx + b로 표현했다. 독립변수가 여러 경우인 경우, 예를 들어 3개인 경우에는 $H(x) = \theta_0 +\theta_1\times x_1 +\theta_2 \times x_2 +\theta_3 \times x_3$ 으로 표현할 수 있다. 여러 training example에 대해 표현할 때에는 행렬을 활용할 수 있다.

$$x^{(2)}=\begin{bmatrix}
x_1^{(2)} \\
x_2^{(2)} \\
x_3^{(2)}
\end{bmatrix}$$

$x^{(i)}$는 i번째 training example에서 독립변수(feature)/입력 , $x_j^{(i)}$는 i번째 training example에서 독립변수(feature) j의 값이다. 이를 이용하여 Hypothesis를 나타내고 cost function을 구하면 single value일 때와 동일하게 linear regression을 진행할 수 있다.

$$H(x_1,x_2,x_3) = w_1x_1+w_2x_2+w_3x_3+\cdots+w_nx_n+b= \begin{bmatrix}
x_1 & x_2 & x_3 & \cdots & x_n\\
\end{bmatrix} \begin{bmatrix}
w_1 \\
w_2 \\
w_3 \\
\cdots \\
w_n
\end{bmatrix} + b$$

$$\rightarrow H(\textbf{x})=\textbf{x}\textbf{w}+b$$

단순화하기 위해 bias를 제거하면 $H(\textbf{x})=\textbf{x}\textbf{w}$로 나타낼 수 있다.

$$cost(\textbf{w},b) = \frac{1}{2m}\sum ^m_{i=1}(H(x_1^{(i)}, x_2^{(i)} , x_3^{(i)},\cdots, x_n^{(i)} )-y^{(i)})^2$$

2번의 퀴즈와 중간고사 성적으로 바탕으로 기말고사 성적을 예측하는 예시로 알아보자. 3개의 inputs과 1개의 정답 label, 5개의 training example로 이루어진 dataset이다. input은 $x$, 정답 label은 $y$로 나타낼 수 있다. 이제 multivariable hypothesis를 나타낸 후 cost function을 작성하여 parameters를 업데이트하면 된다.

 

[출처] 한양대학교 장준혁 교수님 인공지능개론 수업

댓글