📌 ML lec 04 - multi-variable linear regression (*new)
우선 지난 강의에서 다룬 것 처럼
Linear regression을 설계하기 위해선 위의 3가지가 필요하다.
1. Hypothesis를 정한다.
-> 주어진 x variable에 대한 W(=weight), b(=bias)를 학습한다.
2. W와 b를 학습하는데 있어서, cost(loss)를 어떻게 계산할 것인지를 정한다.
-> (예측값 - 정답)^2의 합의 평균
3. cost를 최적화하는 알고리즘으로 gradient descent algorithm을 사용한다.
-> cost를 최적화 하는 W와 b를 찾는다.
🙋 x variable이 하나인 경우는 위와 같이 진행하면 되지만, 여러 개인 경우는 어떻게 해야 할까?
Multi-variable Linear Regression의 Hypothesis , Cost
Hypothesis 부분이 바뀌게 된다.
-> W 하나에서 w1, w2, w3로 바뀜
🤨 x가 늘어날수록 수식이 엄청나게 길게 늘어질텐데,,, 불편 ~~~
-> 잘 처리할 방법이 없을까? 🤷♀️
Matrix Multiplication
Matrix의 곱셈을 활용하면 된다.
행렬 곱 계산방식을 간단히 짚고 넘어가보자.
ex)
(1x7) + (2x9) + (3x11) = 58
7 18 33
🤷♀️ 그럼 어떻게 적용한다는 걸까?
Hypothesis using matrix
빨간 박스(우측)와 같이 길게 수식으로 늘어져있던것이,
초록 박스(좌측)와 같이 간단하게 Matrix로 표현가능하다.
(x1, x2,,,xn) 은 X로 표현하고 , (w1, w2,,,wn) 은 W로 표현한다.
결과적으로 H(X) = XW 로 표현할 수 있다.
그런데, 실제 데이터들은 위 그림처럼 많은 instance들을 가지고 있다.
🤷♀️ 그럼 위 그림과 같이 instance 각각을 X로 넣어서 행렬곱하는 형태로 반복하면 되는걸까?
-> No, 비효율적이다.
x instance 수가 10000개라면 연산을 10000번 해야한다는 소리! 😫
=> 여기서 matrix의 장점이 발휘된다. 😀
instance의 수에 맞게 X matrix를 만들면 된다. (하지만 W는 그 전과 똑같음)
-> 마치 이전 matrix 식에서 각각의 instance를 한번씩 계산한 것과 똑같은 연산 결과를 얻게 된다.
(instance 수가 많을 때, 각각의 instance를 계산할 필요가 없어짐)
matrix multiplication의 규칙
matrix 곱셈 연산을 할 때는 다음과 같은 규칙을 지켜줘야한다.
앞 matrix '열(column)의 차원' = 뒤 matrix '행(row)의 차원'
그럼 matrix 곱셈의 결과는 다음과 같이 나온다.
[ 앞 matrix '행(row)의 차원' , 뒤 matrix '열(column)의 차원' ]
🙋위 규칙을 응용하면 우리의 경우에 맞는 weight의 크기를 쉽게 결정할 수 있지 않을까?
Weight의 크기 결정하는 법
W의 '행(row)의 차원' 이 X matrix의 '열(column)의 차원' 과 같아야하고, 이는 'x variable의 개수'이다.
W의 '열(column)의 차원'이 H(X) matrix의 '열(column)의 차원' 과 같아야하고, 이는 'Y(원하는 결과)의 개수'이다.
😀 결과적으로 Weight의 크기는 [ x variable의 수 , Y 개수 ] 로 쉽게 구할 수 있다.
실제로 ' x instance의 수 '는 데이터 수에 따라 가변하는 값이므로 n이라 표현한다.
실제 구현할 때는, numpy에서는 -1로 tensorflow에서는 None으로 표시한다.
(가끔 None이라는 array를 본다면 'n'개이므로 원하는 만큼 들어올 수 있다고 생각하면 된다)
🤷♀️그럼 출력(Y)의 개수가 여러 개인 경우는 어떨까?
출력(Y)의 개수가 여러 개일때도 Weight의 크기는 동일하게 [ x variable(input)의 개수 , Y(output)의 개수 ] 이다.
matrix의 장점 😀
- multi-variable의 경우에도 쉽게 처리 가능
- instance가 많은 경우에도 n(=instance 수)으로 쉽게 처리 가능
- 출력(output)이 여러개인 경우에도 쉽게 처리 가능
WX vs XW
마지막으로 주의할 점이다
이론상으로는 Wx + b 형태로 많이 나타내지만
구현할 때는 X와 W 모두 matrix인 경우, XW의 순서로 하는 것이 좋다.
이유 : X를 앞에 두면 별도의 처리 없이 바로 matrix의 곱만으로도 계산이 가능하기 때문
'ML & DL > [강의] 모두를 위한 딥러닝 강좌 시즌 1' 카테고리의 다른 글
[정리/모두를 위한 딥러닝] ML lec 03 - Linear Regression의 cost 최소화 알고리즘의 원리 설명 (0) | 2022.09.14 |
---|---|
[정리/모두를 위한 딥러닝] ML Lec 02 - Linear Regression의 Hypothesis와 cost 설명 (3) | 2022.09.13 |
댓글