2 minute read


1. Introduction

image

여러 개의 데이터를 가지고 Y값을 예측할 수 있을까요?

1.1 Linear Regression Hypothesis

\[H(x) = Wx + b \] 이 식이 기본적인 선형회귀의 hypothesis 식입니다.


변수가 세 개라면 다음과 같이 식을 나타낼 수 있습니다. \[H(x_1, x_2, x_3) = w_1x_1 + w_2x_2 + w_3x_3 + b\]


변 수 세 개를 받아서 세 개를 곱하면 됩니다. 단순하게 보면 학습해야 할 w값이 많아진 것뿐입니다.


2. Multi variable Cost Function

image

여러 개의 데이터에 대한 cost function을 나타낸다고 생각해봅시다. 사실 x가 한 개 있을 때와 크게 다른 점은 없습니다.

Cost Function의 핵심예측한 값과 실제 값을 빼는 것 뿐입니다. 그러니 예측한 값을 그대로 자리에 넣고 y값을 빼면 위와 같은 식이 성립됩니다. (예측한 값은 \(H(x)\)를 의미합니다.)

2.1 More Multi-variable

image

x의 값이 3개가 아니라 더 많다면, 더 많은 만큼 늘려주는 방식으로 식을 표현할 수 있습니다.


3. Matrix

그렇지만, x가 많아질 수록 수식을 일일이 옆으로 길게 표현하는 것은 한계가 있습니다. 그래서 우리는 행렬을 사용하게 됩니다.


4. Matrix multiplication

현재의 상황에서 우리가 사용하면 되는 행렬 연산은 행렬곱(Dot product)만 사용하면 됩니다.

image


5. Hypothesis using matrix

행렬을 이용해서 우리의 hypothesis를 그대로 표현할 수 있습니다.


\[w_1x_1 + w_2x_2 + w_3x_3 + … + w_nx_n\]

위의 식을 행렬로 표현하는 방법은 다음과 같습니다.

\[(x_1 \quad x_2 \quad x_3) \cdot \begin{pmatrix} w_1 \\ w_2 \\ w_3 \\ \end{pmatrix} = (x_1w_1 + x_2w_2 + x_3w_3)\]

  이렇게 행렬로 식을 표현하게 되면 결과 값을 간단하게 표현할 수 있게 됩니다. 그리고 행렬로 식을 표현한 것에 대한 결과값을 보면 식의 x,w 순서가 바뀌어 져 있는 부분을 확인할 수 있습니다.

  • 사실 곱하기는 앞에있나 뒤에있나 결과는 같기 때문에 같은 수식입니다. 보통 행렬을 사용할 때는 X를 앞에 씁니다.
  • 실제 데이터에 우리 가설을 적용시켜봅시다. 간단하게 보기 위해 bias는 생략하고 봅시다.
  • \(H(X) = XW\)에서 \(XW\)의 곱은 매트릭스의 곱이 될 것입니다.

image

  이와 같은 데이터가 있고, 각 행을 instance라고 부릅니다. 그런데 각각의 instance마다 해당 식을 사용해서 계산하는 것은 상당히 번거롭습니다.

  그러나 여기서 행렬의 굉장한 장점이 나오는데, \(H(X) = XW\) 부분에서 X에 인스턴스의 개수가 한 개이든 여러 개이든 신경 쓰지 않고 인스턴스의 수 대로 매트릭스를 주면 됩니다. 그리고 또 다른 장점은 W는 변함이 없습니다.

  즉, 인스턴스를 각각 한 번씩 계산한 것과 똑같이 인스턴스가 많은 매트릭스를 그대로 넣기만 해도 연산값이 한번에 나오게 됩니다.

5.1 행렬을 사용할 때 신경쓸 점

image

  • 각 인스턴스의 feature(열)의 개수와 weight의 행의 개수가 같아야 합니다. (x의 열의 개수 == weight의 행의 개수 \([3, 3]\) )
  • Instance의 개수와 Y출력값의 개수가 열과 행렬의 형태를 결정합니다. \([5, 1]\)


image

  • 보통 인스턴스와 출력값은 정해져 있고, 개발자가 W의 값을 정해야 하는 상황이 많이 나옵니다.
  • 그래서 인스턴스의 변수의 개수에 해당하는 3과 Y값인 출력 값에 해당하는 1을 weight의 shape로 결정해주면 됩니다.
  • 그러면 \([3, 1]\)의 형태로 w를 결정할 수 있습니다.


image

  • 실제 데이터에서는 instance가 몇 개 일지 모르기 때문에 n개로 두는 경우도 많습니다.
  • n은 코드를 짤 때 -1 또는 none이라고 표현되기도 합니다.
  • n의 값은 입력 값의 instance 개수와 결과값의 행의 개수와 같습니다.


image

  • 위의 이미지 처럼 n개의 output인 경우에서 weight를 구해야 한다면 이 부분도 간단합니다.
  • weight는 인스턴스의 변수 개수를 행으로 사용하고 Y값의 개수를 열로 사용하기 때문에 weight는 \([3,2]\)로 표현할 수 있습니다.


image

  • 강의에서는 \(H(x) = W_x + b\)로 수식을 표현했지만, 이것은 이론에서 보통 이렇게 표현을 하고 실제로 구현할 때 쓰는 표기법은 \(H(X) = XW\)입니다.
  • 수학적인 의미는 같다고 이해하면 됩니다.