Introduction
이번에 선형대수를 공부하면서 내용을 정리해보았습니다.
강의 영상 : https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/video_galleries/video-lectures/
Video Lectures | Linear Algebra | Mathematics | MIT OpenCourseWare
This section contains a complete set of video lectures on linear algebra along with transcripts and related resource files.
ocw.mit.edu
스터디 github : https://github.com/jwkweon/study-linear-algebra
GitHub - jwkweon/study-linear-algebra
Contribute to jwkweon/study-linear-algebra development by creating an account on GitHub.
github.com
참고한 블로그 :
Lecture 16: Projection matrices and least squares
Lecture 16: Projection matrices and least squares (5/30) - 좋아. 여기 강의 16번이 있다. 그리고 만...
blog.naver.com
[Linear Algebra] Lecture 16 투영행렬(Projection matrix)과 최소자승법(Least Square method)
우리는 지난시간에 투영(Projection)에 대해 공부하였다. 이는 해가 존재하지 않는 Overdetermined case의 선형방정식에 대한 근사해(approximate solution)를 구하는 것이 목적이며 x hat을 근사해로써 구했다.
twlab.tistory.com
(주로 https://twlab.tistory.com/35블로그의 사진과 내용을 보면서 공부했고 추가로 나머지 블로그를 참고하였습니다.)
(저는 제가 이해하기 쉽게 요약해서 적었으므로 좀더 자세히 공부하고싶다면 위 블로그를 참고하시면 됩니다.)
투영(Projection)
벡터 투영과 관련하여 두가지의 극단적인 경우를 배워보자.
$$ P = A (A^T A)^{-1} A^T $$
1. 벡터 b가 이미 A의 column space상에 존재하는 경우
이럴 경우 벡터 b에 투영행렬을 곱하면 벡터 b가 될 것이다.
$$ P \boldsymbol{b} = \boldsymbol {b} $$
이때, 벡터 b를 column sapce상에 존재하는 벡터로 표현하기 위해 A의 column vector들의 선형 조합으로 표현하고자 하면, Ax로 표현하면 된다. 왜냐하면 Ax가 column vector들의 선형 조합이기 때문이다.
$$ P \boldsymbol{b} = A(A^T A)^{-1} A^T A x = Ax = \boldsymbol{b} $$
2. 벡터 b가 A의 column space에 수직(perpendicular)한 경우
이럴 경우 벡터 b에 투영행렬을 곱하면 결과는 0이 될 것이다.
$$ P \boldsymbol{b} = 0 $$
$$ P \boldsymbol{b} = A(A^T A)^{-1} A^T \boldsymbol{b} = 0 $$
벡터 b는 A의 column space와 수직하기 때문에 Left Null space에 존재한다. 그리고 투영할 때 column space와 가장 가까운 벡터는 영벡터(zero vector)뿐이기 때문에 위의 식이 나오게 된다.
이번에는 다음 그림을 이해해보자.
위에서 벡터 p는 벡터 b를 column space에 투영시킨 벡터이다. 반대로 Left Null Space에 투영시킨 벡터를 벡터 e라 하며 이때는 벡터 b에 단위행렬에서 투영행렬을 뺀 (I - P)행렬을 곱해주면 된다.
$$ \boldsymbol{p} = P \boldsymbol{b} $$
$$ \boldsymbol{e} = (I - P) \boldsymbol{b} $$
따라서, (I - P)행렬은 투영시키려는 공간(Column space)과 직교하는 공간(Left Null Space)으로 투영시키는 역할을 한다.
(I-P)행렬은 마찬가지로 대칭행렬이며 제곱도 만족한다.
$$ (I - P )^T = I-P $$
$$ (I-P)^2 = I - P $$
그리고 벡터 p와 벡터 e를 더하면 벡터 b가됨도 당연히 알 수 있다.
최소자승법(Least Square Method)
우리가 투영을 배운 이유는 미지수보다 방정식이 더많은 시스템을 풀기위해 배웠다.
예를들어 딥러닝에서 512x512크기의 이미지를 학습하는 시스템에서는 출력으로 10개의 class에 대한 score 출력한다고 했을 때가 이러한 경우라고 볼 수 있다. 이때, 학습하는 시스템에서는 수많은 데이터를 이미지에서 수집하여 10개의 class에 대해 점수를 내야한다.
최소자승법(Least Square Method)은 수집한 데이터를 기반으로 이를 모두를 최대한 만족시키는 하나의 Line(10개의 class에 대한 점수모음)에 대한 식을 찾는 방법이다.
여기서 하나의 Line은 출력에 대한 예측 뿐만아니라 시스템의 특성을 파악할 수 있다.
최소 자승법의 정확한 정의는 모델의 파라미터를 구하기 위한 대표적인 방법 중 하나로서 모델과 데이터와의 $\rm{residual}^2$의 합 또는 평균을 최소화하도록 파라미터를 결정하는 방법이며 최소제곱법이라고도 한다.
residual은 잔차라고 부르는데 모두다 예측값과 실제값 사이의 차이를 나타내며 오차, 에러라고 봐도된다.
예를들어 다음과 같이 3개의 출력 데이터가 주어졌다고 하자.
3개의 출력 데이터는 (1, 1), (2, 2), (3, 2)이다. 이제 이 3개의 데이터를 표현할 하나의 Line을 찾아야한다.
직선을 찾는 이유는 시스템의 특성에 대한 분석과 출력의 미래 예측을 위해 찾는 것이다.
근데 여기서 애초에 저 3개의 출력 데이터로는 직선을 만들 수가 없긴하다. 그래서 3개의 데이터를 고려한 직선을 찾아야한다. 즉, overdetermined case라고 보면 된다. 최적의 직선을 찾아야한다.
이제, 다음과 같은 최적의 직선의 방정식을 찾아야한다.
$$ b=ct+d $$
우리는 t와 b의 순서쌍 즉, 3개의 데이터를 가지고 직선을 표현하는 파라미터인 c와 d를 찾아야한다.
이제 위 식을 Ax=b의 꼴로 나타내고 투영 행렬의 해를 구하듯이 풀면 된다.
3개의 데이터를 직선의 방정식에 대입해보자.
$$ c+d=1$$
$$ 2c+d=2$$
$$ 3c+d=2$$
3개의 방정식이 나왔으므로 Ax=b의 형태로 만들 수 있다.
$$Ax=b \longrightarrow \underset{A}{\begin{bmatrix} 1 & 1 \\ 2 & 1 \\ 3 & 1 \end{bmatrix}} \underset{x}{\begin{bmatrix} c \\ d \end{bmatrix}} = \underset{b}{\begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix}} $$
보이다시피 행렬 A는 overdetermined case이자 Ful Rank이며 정확한 b를 구할 수 없다. 따라서, 최적해를 구해야한다.
이제 양변에 Transpose를 곱하여 최적해를 구하면 된다.
$$A^T A \hat{\boldsymbol{x}} = A^T b $$
이런식으로 구한 c, d를 대입하면 최적의 line이자 각각의 데이터와의 에러(error)를 최소화 하는 직선을 찾을 수 있다.
결국, 각 데이터와의 직선 사이의 에러의 총합이 최소가 되게끔 하는 선을 찾는 것이 우리가 찾으려는 결과이다.
여기서 말하는 에러(error)의 의미를 알아보자.
c와 d에 대한 파라미터를 추정하여 구했고, 이를 Ax=b에 대입하면 실제 b와 다른 값이 나올 것이다. 이때, b값과의 차이가 에러(error)이다. 이때 에러는 음수의 값이 나올 수가 있기 때문에 제곱을 해준다.
이러한 오차를 제곱을 하는 이유는 오차를 측정하는 방법 중 하나로서, 오차의 부호를 무시하고 오차 크기를 고려하기 위함입니다. 이렇게 3개의 방정식에서 나온 에러 값을 더했을 때 최종 에러값의 크기를 작게 만드는 c와 d를 찾는 것이다.
$$ \sum_{j=1}^m (ct_j + d - b_j )^2 $$
즉 이러한 오차 젝보의 합을 가장 최소화(Minimize)해야 한다.
근데 우리는 식을 행렬 형태로 바꿨으니 다음과 같이 바뀔 것이다.
$$ || A \boldsymbol{x} - \boldsymbol{b}||^2 = || \boldsymbol{e}||^2 $$
실제 total error는 다음과 같고 이것을 최소화 하는 방향으로 c와 d를 구해야하는 것이다.
$$ \rm{total \ error} = (c+d-1)^2 + (2c+d-2)^2 + (3c+d-2)^2 $$
최고자승법은 선형회귀분석에서 가장 일반적으로 사용되는 방법 중 하나이다. 이 방법은 예측값과 실제값 사이의 차이(잔차, residual)를 최소화(minimize)하는 선형 모델, 파라미터(Parameter)를 찾는 것이다.
이제 이 에러 벡터가 어떤 의미인지 봐보자.
위는 데이터를 이용하여 Line의 파라미터를 추정하여 구한 최적의 Line을 표현한 것이다. 붉은색 점이 실제 측정된 data이고, 파란 색점은 Line fitting을 통해 예측된 점이다. 그리고 녹색 선은 측정값 b와 예측값 p사이의 에러(error), 오차, 잔차를 나타낸다.
total error는 다음과 같다.
$$ \boldsymbol{e}_1^2 + \boldsymbol{e}_2^2 + \boldsymbol{e}_3 ^2 $$
이 에러의 총 합이 우리가 최소화(minimize)하려는 에러값이다.
이렇게 주어진 데이터를 통해 데이터의 추세를 파악하고 예측한다. 이것을 통계학 용어로는 회귀(regression)라고 부른다.
여기서, 모델의 파라미터를 조절하여 데이터와 가장 잘 일치하는 직선을 찾는 과정을 fitting이라 하며, 여기서는 Line을 이용하여 fitting을 했기 때문에 선형 회귀(Linear regression)이라고 한다.
만일, 위에 실제 측정 데이터중 하나가 직선과 엄청 멀리 떨어져있으면, 보통 제대로 측정된 값일수도 있지만 쓸모없는 값 혹은 노이즈 데이터일 경우가 많다. 대부분의 데이터들의 분포에서 큰 거리를 두고 떨어져있는 소수 데이터들을 아웃라이어(Outlier)라고 부른다.
따라서, (0,3)이라는 outlier 잡음 데이터가 끼면 최소자승법은 다음과 같이 된다.
이러한 잡음 때문에 Line이 전체적인 데이터의 경향을 잘 반영하지 못하게되고 이를 overcompensate라고 한다.
최소자승법의 해(Solution of Least Square Method)
$$Ax=b \longrightarrow \underset{A}{\begin{bmatrix} 1 & 1 \\ 2 & 1 \\ 3 & 1 \end{bmatrix}} \underset{x}{\begin{bmatrix} c \\ d \end{bmatrix}} = \underset{b}{\begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix}} $$
이 식을 풀어서 실제 파라미터를 구해보자.
Ax=b는 해가 존재하지 않는다. 따라서, 최적해를 구하기 위해 b를 A의 column space로 투영시키면된다.
$$A^T A \hat{\boldsymbol{x}} = A^T \boldsymbol{b} $$
$$ A \hat{\boldsymbol{x}} = \boldsymbol{p} $$
$$ \Downarrow $$
$$ \begin{bmatrix} 1 & 2 & 3 \\ 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 \\ 2 & 1 \\ 3 & 1 \end{bmatrix} \begin{bmatrix} \hat{c} \\ \hat{d} \end{bmatrix} = \begin{bmatrix} 1 & 2 & 3 \\ 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix} $$
$$ \begin{bmatrix} 14 & 6 \\ 6 & 3 \end{bmatrix} \begin{bmatrix} \hat{c} \\ \hat{d} \end{bmatrix} = \begin{bmatrix} 11 \\ 5 \end{bmatrix} $$
$$ \Downarrow $$
$$ 14 \hat{c} + 6 \hat{d} = 11 $$
$$ 6 \hat{c} + 3 \hat{d} = 5 $$
$$ \hat{c} = \frac{1}{2}, \quad \hat{d}= \frac{2}{3} $$
$$ \Downarrow $$
$$ \therefore \quad \hat{\boldsymbol{x}} = \begin{bmatrix} \hat{c} \\ \hat{d} \end{bmatrix} = \begin{bmatrix} \frac{1}{2} \\ \frac{2}{3} \end{bmatrix} $$
따라서, 최적의 직선의 방정식은 다음과 같다.
$$ b = \frac{1}{2} t + \frac{2}{3} $$
이제 벡터 b를 투영한 벡터 $\boldsymbol{p}$를 구해보자. t=1, 2, 3을 대입하면 된다.
$$ \boldsymbol{p} = \begin{bmatrix} \frac{7}{6} \\ \frac{5}{3} \\ \frac{13}{6} \end{bmatrix} $$
에러(error)도 구해보자.
$$ \boldsymbol{e} = \boldsymbol{b} - \boldsymbol{p}, \quad \boldsymbol{b} = \begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix} $$
$$ \boldsymbol{e} =\begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix} - \begin{bmatrix} \frac{7}{6} \\ \frac{5}{3} \\ \frac{13}{6} \end{bmatrix} = \begin{bmatrix} - \frac{1}{6} \\ \frac{2}{6} \\ - \frac{1}{6} \end{bmatrix} $$
따라서, 요약하여 각각의 투영한 점과 에러는 다음과 같다.
$$ p_1 = \frac{7}{6}, \quad p_2 = \frac{5}{3}, \quad p_3 = \frac{13}{6}, \quad e_1 = - \frac{1}{6}, \quad e_2 = \frac{2}{6}, \quad e_3 = - \frac{1}{6} $$
이것을 다시 그림으로 표현하면 다음과 같다.
마지막으로 에러 벡터인 e는 벡터 b를 투영한 벡터 p와 수직이고, p가 속한 A의 column space와 직교한다.
따라서, 벡터 e를 벡터 p, A의 col1벡터, col2벡터와 내적하면 모두 다 0이 나올 것이다.