Linear Regression의 개념

Predicting exam score

  • 아래 표의 데이터를 가지고 supervised learning을 한다고 해보자
    • x : 예측을 하기 위한 기본적인 자료,  training data 또는 learning data 또는 feature
    • y : 예측하려는 값
    • regression : 0~100 사이의 값을 예측하는 것
    • training : 데이터로 학습을 시키는 것
    • 학습이 끝나면 어떤 모델이 만들어진다.
    • regression을 사용한다는 것
      • 시험을 치르기 전에 x라는 값(7시간 공부한 학생)을 주고 y(몇 점을 맞을 수 있을까?)는 얼마인가 인공지능에게 물어본다.
      • 인공지능은 regression을 사용해 약 65점 정도 나올 것으로 예측을 한다.

 

 

Linear Regression 모델을 만들어 어떻게 동작하는지 알아보자.

  • 아래 그림 표의 데이터를 가지고 그래프에 표시하면 다음과 같다.

 

  • Linear Regression 모델을 만들기 위해서는 가설(hypothesis)을 세울 필요가 있다.
    • 가설(Hypothesis) 세우기 : 우리가 가지고 있는 데이터는 linear한 모델이 맞을 것이다.
      • 세상의 많은 데이터나 현상들이 linear한 모델로 설명할 수 있는 것이 많다
    • 학습(learning) 하기 : 아래 그림과 같이 우리가 가지고 있는 데이터에 잘 맞는 직선을 찾는 것

 

  •  1단계 : 아래 그림과 같은 직선을 수학식으로 표현한다.

$$H(x) = Wx+b$$

    • \(H(x)\) : 가설, 예측 값
    • \(W\) : weight
    • \(b\) : bias
    • \(W\)와 \(b\)에 따라 여러 가지 직선이 만들어질 수 있다.

    

    • 다음과 같은 직선의 방정식을 얻었다고 해보자.

 

  • 2단계 : 여러 직선 중에서 우리 데이터에 가장 잘 맞는 직선을 찾는다.
    • 가설로 세운 직선 위의 점과 실제 데이터와의 거리가 짧으면 좋고, 멀면 나쁘다.
    • 그래서 직선과 실제 데이터와의 거리를 구한다.

 

  • 3단계 : 거리를 구한다.
    • cost function 또는 loss function : 거리를 구하는 함수
      • 우리가 세운 가설이 실제 데이터가 얼마나 다른가를 알 수 있다.
      • 가장 쉬운 방법은 \(H(x)-y\)를 구하는 것
        • 그러나 거리가 음이나 양이 될 수 있기에 잘 사용하지 않는다
      • 그래서 차이(거리)를 제곱 \((H(x)-y)^2\)한 후 평균을 구한다.:
        • 항상 양의 값을 가진다.
        • 거리가 멀어지면 값이 커지기 때문에 페널티를 줄 수 있다.
        • 페널티를 줌으로서 거리를 작게 만들 수 있다.
    • 위의 데이터에 대하여 cost(loss) function 값을 구하면 다음과 같다.
$$\frac{(H(x_1)-y_1)^2 + (H(x_2)-y_2)^2 + (H(x_3)-y_3)^2}{3}$$
    • 그래서 cost(loss) function의 식은 다음과 같다.
      • \(m\)은 학습 데이터의 개수
$$\textrm{cost(loss) function} = \frac{1}{m}\sum_{i=1}^{m}(H(x_i)-y_i)^2$$
      • 여기서 \(H(x)=Wx+b\)이고 위 식에 대입하면 cost(loss) function은 \(W\)와 \(b\)의 함수가 된다.
$$\textrm{cost(loss)}(W,b) = \frac{1}{m}\sum_{i=1}^{m}(H(x_i)-y_i)^2$$
 

Linear Regression 학습의 목표: cost(loss) 함수의 값이 최소가 되는 \(W\)와 \(b\)를 찾는 것이다.

$$\textrm{minimize}_{\substack{W,b}}\textrm{cost(loss)}(W,b)$$
  • 이미 만들어져 있는 많은 알고리즘들이 있다.
  • 가장 대표적인 알고리즘은 경사 하강법(Gradient Descent Algorithm)이다.

 

Gradient Descent Algorithm(경사 하강법) 개념 (출처: 위키피디아)

  • 경사 하강법은 1차 근삿값 발견용 최적화 알고리즘이다.
  • 기본 아이디어는 함수의 기울기(경사: gradient)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복하는 것
  • 최적화할 함수 \(f(\mathbf{x})\)에 대하여 먼저 시작점 \(\mathbf{x}_0\)를 정한다.
  • 현재의 점 \(\mathbf{x}_i\)가 주어졌을 때, 그 다음으로 이동할 점인 \(\mathbf{x}_{i+1}\)을 다음과 같이 계산한다.
    • \(\gamma_i\)는 이동할 거리를 조절하는 매개변수이다.

\begin{equation}\mathbf{x}_{i+1}=\mathbf{x}_i - \gamma_i\nabla f(\mathbf{x}_i)\tag{1}\end{equation}

  • 아래 그림은 경사 하강법을 실행하는 모습으로 \(\mathbf{x}_0\)에서 시작하여, 경사가 낮아지는 쪽으로 이동하여 차례대로 \(\mathbf{x}_1,\mathbf{x}_2,\mathbf{x}_3,\mathbf{x}_4\)를 얻게된다.

 

  • 이 알고리즘의 수렴 여부는 \(f\)의 성질과 \(\gamma_i\)의 선택에 따라 달라진다.
  • 이 알고리즘은 극소점(local minimum)으로 수렴한다.
    • 따라서 구한 값이 전역적인 최적해라는 것을 보장하지 않는다. -> 극소값이 아닌 최소값을 찾을 수 있는 방법이 필요
    • 시작점 \(\mathbf{x}_0\)의 선택에 따라 달라진다.
    • 따라서 다양한 시작점에 대해 여러 번 경사 하강법을 적용하여 그 중 가장 좋은 결과를 선택할 수도 있다.

 

 

 

예제를 통한 경사 하강법 설명

  • 설명의 편의를 위해 가설을 다음과 같이 bias \(b\)를 없애 간단하게 만든다.
  • 가설 : \(H(x)=Wx\)
  • cost(loss) 함수는 \(W\)의 함수로 다음과 같이 표현된다.

 

\begin{eqnarray}\textrm{cost(loss)}(W) &=& \frac{1}{m}\sum_{i=1}^{m}(H(x_i)-y_i)^2\\&=&\frac{1}{m}\sum_{i=1}^{m}(W\cdot x_i-y_i)^2\end{eqnarray}

 

  • 아래와 같은 데이터에 대하여 위의 cost(loss) 함수 값을 구해보자
    • \(W=1\)일 때,
    • \begin{eqnarray}\textrm{cost(loss)}(1) &=& \frac{1}{3}\big( (1\times 1 - 1)^2 + (1\times 2 - 2)^2 + (1\times 3 - 3)^2\big)\\&= &\frac{1}{3}(0^2+0^2+0^2)\\&=&0\end{eqnarray}
    • \(W=0\)일 때,

\begin{eqnarray}\textrm{cost(loss)}(0) &=& \frac{1}{3}\big( (0\times 1 - 1)^2 + (0\times 2 - 2)^2 + (0\times 3 - 3)^2\big)\\&=&\frac{1}{3}(1^2+2^2+3^2)\\&=&\frac{14}{3}\\&\fallingdotseq &4.67\end{eqnarray}

    • \(W=2\)일 때,

\begin{eqnarray}\textrm{cost(loss)}(2) &=& \frac{1}{3}\big( (2\times 1 - 1)^2 + (2\times 2 - 2)^2 + (2\times 3 - 3)^2\big)\\&=&\frac{1}{3}(1^2+2^2+3^2)\\&=&\frac{14}{3}\\&\fallingdotseq &4.67\end{eqnarray}

 

  • 위에서 구한 값을 토대로 \(\textrm{cost(loss)}(W)\) 함수를 그래프로 그려보면 다음과 같이 2차 함수의 그래프로 표현된다.

\begin{eqnarray}\textrm{cost(loss)}(W) &=& \frac{1}{m}\sum_{i=1}^{m}(H(x_i)-y_i)^2\\&=&\frac{1}{m}\sum_{i=1}^{m}(W\cdot x_i-y_i)^2\end{eqnarray}

 

  • 여기서 우리의 목표는 cost(loss) 함수가 최소가 되는 점을 찾는 것이다.
    • 우리가 데이터를 가지고 위의 그래프와 같은 형태의 cost(loss) 함수를 만들어 낼 수 있다면 최소값은 어떻게 찾아낼 수 있을까? -> 미분계수가 최소가 되는 점!!!!
    • 기계적으로 최소가 되는 점을 찾아내야 한다!
  • 최소가 되는 점을 찾아내는 알고리즘 -> 경사를 따라 내려가는 알고리즘
    • 실제로는 구간에서의 극소값을 찾는 것이다!!!
  • Gradient Descent Algorithm
    • \(\textrm{cost(loss)}(W,b)\) 함수를 최소화하는데 많이 사용됨
    • 많은 기계 학습 뿐만 아니라 다른 최소화 문제에 사용됨
    • 주어진 \(\textrm{cost(loss)}(W,b)\) 함수에 대하여 최소가 되는 \(W\)와 \(b\)를 찾을 수 있다.
      • 매개변수 \(W\)와 \(b\)를 바꿔가면서 최소가 되는 점을 찾는 방법
    •  보다 일반적인 함수 \(\textrm{cost(loss)}(w_1, w_2, \ldots, b)\)에 대해서도 적용이 가능

어떻게 극소값을 찾을 수 있을까?

  1. 임의의 초기값에서 시작한다.
    1. \((0,0)\)(또는 다른 값)에서 시작한다.
    2. \(W\)와 \(b\)를 조금씩 바꿔가면서 \(\textrm{cost(loss)}(W,b)\)의 값을 줄여나간다.
  2. 매개변수 \(W\)와 \(b\)를 바꿀 때마다 \(\textrm{cost(loss)}(W,b)\)를 줄일 수 있는 경사(gradient)를 선택한다.
  3. 위의 1~2번을 반복한다.
  • 극소값(local minimum)으로 수렴할 때까지 반복한다.
  • 이 알고리즘의 장점
    • 어떤 점에서 시작하더라도 예외가 있기는 하지만 항상 극소점에 도달할 수 있다.
 

경사도(gradient)를 찾는 방법 -> 미분(differential)

  • 미분을 이용하여 경사도(기울기)를 구한다.
  • 계산을 편하게 하기 위하여 cost(loss) 함수를 약간 변형한다.
    • cost(loss) 함수의 최소값을 구할 때 \(\frac{1}{m}\) 대신 \(\frac{1}{2m}\)을 사용하더라도 같은 의미를 지니기에 큰 문제가 없다.

\begin{eqnarray}\textrm{cost(loss)(W)} = \frac{1}{2m}\sum_{i=1}^{m}(W\cdot x_i-y_i)^2\tag{2}\end{eqnarray}

  • 식 (2)를 GDA의 정의(식 (1))를 따라 식을 전개하면 다음과 같다.
    • \(\alpha\)는 learning rate이다.

\begin{eqnarray} W &=& W - \alpha\frac{\partial}{\partial W}\textrm{cost(loss)}(W)\\&=&W - \alpha\frac{\partial}{\partial W}\Bigg(\frac{1}{2m}\sum_{i+1}^m\big(W\cdot x_i-y_i\big)^2\Bigg)\\&=&W - \alpha\frac{1}{2m}\sum_{i+1}^m2\big(W\cdot x_i-y_i\big)\cdot x_i\\&=&W - \alpha\frac{1}{m}\sum_{i=1}^m\big(W\cdot x_i-y_i\big)\cdot x_i\tag{3}\end{eqnarray}

  •  식 (3)이 완성된 Gradient Descent Algorithm이다.
    • 식 (3)을 여러 번 실행하여 \(W\)의 값이 변화하면 그 값이 cost(loss) 함수를 극소화하는 값이 된다.
    • 식 (3)을 기계적으로 실행만 시키면 cost(loss) 값을 최소화하는 \(W\) 값을 구할 수 있다.
    • 이 과정을 linear regression의 핵심인 모델을 학습시킨다고 한다.

 

경사 하강법의 문제점

  • 아래 그림과 같이 2개의 시작점으로 출발을 하면 도착점이 다르다.
  • 각각 서로 다른 극소점에 도달하게 된다.

 

  • 그러나 우리가 가설로 세웠던 cost(loss) 함수는 아래 그림과 같은 볼록 함수(convex function)이다.
    • 따라서 어느 점에서 출발하더라도 최소값에 도달하게 된다.

 

  • linear regression을 적용하기 전에 반드시 cost(loss) 함수가 볼록 함수인지 확인한한다.
    • 확인만 된다면 편안하게 경사 하강법을 사용할 수 있다.

 

+ Recent posts