ML - 여러개의 입력(feature)의 Linear Regression

정진우·2020년 6월 23일
0
post-thumbnail

이 강의는 홍콩과가대 김성훈 교수님의 모두의 딥러닝 강좌에 대한 내용 정리입니다.

오늘은 저번 시간에 이어서 하나의 변수가 아닌 Multi variable을 사용하는 방법에 대해서 이야기 해보도록 하겠습니다.

Recap

  • Hypothesis
    - H(x)=Wx+bH(x) = Wx + b
    • WW = weight
    • bb = bias
    • WWbb를 학습
    • 학습을 하는데 cost를 계산하기 위해 Cost function 필요
  • Cost/Loss function
    - cost(W,b)=1mi=1m(H(x(i))y(i))2cost(W,b) = {1 \over m}\sum_{i=1}^{m}(H(x^{(i)})-y^{(i)})^2
  • Gradient descent algorithm

Regression using three inputs (x1, x2, x3)

x1 (quiz 1)x2 (quiz 2)x3 (midterm 1)Y (final)
738075152
938893185
899190180
9698100196
736670142

3개의 데이터를 이용하여 Y(final)점수를 예측할 수 있을까요?
H(x1,x2,x3)=w1x1+w2x2+w3x3+bH(x_1, x_2, x_3) = w_1x_1+w_2x_2+w_3x_3+b
위처럼 기본 식에 학습해야할 변수를 추가해주면 됩니다.

Cost function은 어떻게 될까요?
cost(W,b)=1mi=1m(H(x1(i),x2(i),x3(i))y(i))2cost(W,b)=\frac{1}{m}\sum_{i=1}^{m}(H(x_1^{(i)}, x_2^{(i)}, x_3^{(i)})-y^{(i)})^2

Cost function은 크게 바뀌지 않는 것을 확인할 수 있습니다. 문제는 Hypothesis의 변수가 추가될 때마다 계속 길어진 다는 것인데, 이 형태를 어떻게 간단하게 만들 수 있을까요?

🙋‍matrix의 곱을 이용하면 됩니다.
(x1x2x3)(w1w2w3)=(x1w1+x2w2+x3w3)\begin{pmatrix}x_1&x_2&x_3\end{pmatrix}\cdot \begin{pmatrix}w_1\\ w_2\\ w_3\end{pmatrix}=\begin{pmatrix}x_1w_1+x_2w_2+x_3w_3\end{pmatrix}

💡 눈치가 빠르신 분들은 눈치 채셨겠지만 위의 Hypothesis의 wwxx의 위치가 matrix의 곱을 이용했을 때에는 위치가 바뀌어 있는 것을 볼 수 있습니다.
그런데 사실상 순서가 바뀌더라도 같은 식이기 때문에 문제가 없습니다.

보통 matrix를 사용할 경우에는 xx를 앞에 작성합니다.
따라서 H(X)=XWH(X) = XW로 이해할 수 있겠죠?

자. 그러면 실제 데이터에 적용해 봅시다.
x1,x2,x3x_1, x_2, x_3를 인스턴스라고 보는데 이 인스턴스들이 5개 존재하는 걸 볼 수 있습니다. 5개의 인스턴스를 matrix에 적용하면 아래와 같이 만들어지게 됩니다.

하지만 ww는 그대로죠? 이 방법의 장점은 각각의 인스턴스마다 matrix의 곱을 계산할 필요 없이 전체 인스턴스를 긴 matrix에 넣고 한번에 계산할 수 있습니다. 이것은 굉장히 큰 장점이라고 할 수 있습니다.

WX vs XW

  • Lecture(theory):
    H(x)=Wx+bH(x) = Wx + b
    • 이론으로는 W라는 Weight과 곱해준다는 의미에서 앞에 작성한다.
  • Implementation (TensorFlow)
    H(X)=XWH(X) = XW
    • 실제 구현에서는XW로 많이 사용한다. (수학적으로는 이론과 동일)

Reference

  1. 여러개의 입력(feature)의 Linear Regression - TensorFlow 구현
    강의
    강의자료
  2. Youtube
  3. Gradient descent algorithm

0개의 댓글