Fundamentals/Linear Algebra

[Linear Algebra] Lecture 15-(2) 투영행렬(Projection matrix)과 부분 공간(subspaces)

츠벤 2017. 3. 18. 00:21

이번 시간에 배울 내용은 바로 투영 행렬(Projection matrix)에 관한 내용이다. 이번 강의는 매우 중요하므로 잘 공부해 두도록 하자. 투영 행렬에 관한 내용을 공부하기에 앞서 2차원 벡터의 투영을 먼저 공부해보도록 하자. 

 

 

1. 2D-Vector Projection(2차원 벡터 투영)

 

벡터 투영(vector projection)은 두 개의 벡터 중 하나의 벡터를 다른 하나의 벡터에 투영(projection)시키는 것을 말한다. 그렇다면 여기서 투영이라는 것은 무엇을 의미하는 것일까? 벡터의 관점에서 보면 하나의 벡터를 다른 벡터로 옮겨서 표현하는 것을 말한다. 

조금더 쉽게 비유하자면 그림자로 설명할 수 있다. 햇살 좋은 날에 야외에 서 있었을 때 햇빛에 의해 우리 몸의 그림자가 땅에 비춰진 것을 본 적이 있을 것이다. 이때 우리 몸이 벡터 a, 땅이 벡터 b라고 하면 그림자는 땅(b)에 투영된 우리 몸(a)이라고 할 수 있다. 이때 태양은 항상 땅과 수직(perpendicular)하게 떠 있다. 이 장면을 상상해보며 아래 그림을 보도록 하자. 

 

Fig. 1 두 벡터 a와 b. 벡터 b를 벡터 a에 투영하면 어떻게 될까? 

 

 

Fig. 1은 두 벡터 a와 b를 나타내고 있다. 벡터 a는 1차원 공간인 line이며, 우리가 찾고자하는 것은 벡터 b를 a에 투영시켰을 때 그 점이 벡터 a의 어느 지점에 위치할 것인가를 찾는 것이다. 이것은 다시말하면 벡터 a라는 1차원 공간의 어느 점이 벡터 b가 가리키는, 즉 벡터 b의 화살표 끝점과 가장 가까운지를 찾는 것이다. 

그렇다면 어느 점이 가장 가까울까? 당연히 벡터 b의 끝점에서 벡터 a의 수직(perpendicular) 방향으로 선을 그렸을 때 만나는 점일 것이다. 아래 그림을 보자. 

 

 

 

Fig. 2 벡터 a에 벡터 b를 투영(projection)한 모습. 

 

 

Fig. 2 를 보면 벡터 b의 끝점에서 벡터 a의 수직 방향으로 보라색 선을 그었다. 이때 a와 만나는 점이 바로 p이고, 이는 초록색 벡터로 나타내었다. 이 초록색 벡터가 바로 벡터 b를 벡터 a에 투영시킨 벡터이다. 보라색 선은 벡터 b와 p의 차이를 나타내는데, 원래의 벡터 b와 투영시켰을 때의 벡터 p사이의 오차(error)를 의미한다. 즉 투영시키기 전과 투영시킨 후가 거리상으로 얼마나 차이가 나는지를 나타내는 것이다. 이 보라색 벡터는 투영의 대상이 되는 벡터인 a와 직교(orthogonal)하며, 식으로는 b에서 p를 뺀 e=b-p로 나타낸다. 이 식을 이항하여 p=의 꼴로 다시 써보면 p=b-e가 된다. 벡터 b에서 오차 e만큼 빼면 바로 투영 벡터 p가 되는 것이다. 

 

Fig. 2를 잘 보면 벡터 b, e, p사이에 직각삼각형(right triangle)이 그려져 있는 것을 볼 수 있다. 그렇다면 벡터 b와 벡터 p사이의 각도인 theta를 통해 투영 벡터 p에 대한 식을 삼각법(trigonometry)을 활용한 sin과 cos에 관한 식으로 표현할 수 있겠구나! 라고 생각할 수 있다. 물론 그렇게 나타낼 수도 있겠지만 식이 조금 지저분해 진다. 우리는 지금 선형대수(Linear algebra)를 공부하고 있으며, 이 선형대수를 통해 p에 대한 식을 훨씬 깔끔하게 표현할 수 있다. 잘 보면 벡터 p는 벡터 a에 어떤 스케일 상수 x를 곱한 것과 같다. 즉 p=xa이며, 여기서 우리가 찾고자 하는 것은 바로 스케일 상수 x이다. 이제 이 x를 어떻게 찾을지 알아보도록 하자. 

 

먼저 가장 중요한 사실 한 가지는 벡터 a와 e가 수직(perpendicular)이라는 것이다. 이를 수식으로 나타내면 아래와 같다. 

 

 

일반적으로 bold체로 나타낸 벡터들은 column vector를 나타낸다. a의 transpose는 row 벡터이고 b-xa는 Fig.2의 보라색 벡터 e를 나타낸 것이다(p=xa 임을 기억하자). 따라서 식 (1)은 벡터 a와 벡터 e의 내적(dot product)을 표현한 것이고, 수직이기 때문에 내적의 결과는 0인 것이다. 

 

이제 식 (1)을 전개하고 우변으로 이항하여 정리해보자. 아래와 같이 정리할 수 있다. 

 

 

$\boldsymbol{a}^T\boldsymbol{b}$와 $\boldsymbol{a}^T\boldsymbol{a}$는 전부 내적이며 결과 값은 상수이다. 따라서 앞서 언급했듯이 x는 벡터 a에 곱해지는 스케일 상수가 된다. 그런데 이렇게 풀어놓으니 분명 수학적으로 정리되는 것 같긴 한데 뭔가 직관적으로 와닿지는 않는 느낌이다. 이해를 돕기 위해 삼각법(trigonometry)의 관점, 즉 $\theta$에 관해서도 정리를 해보자. 

Fig. 2의 직각삼각형에서 녹색 벡터인 p는 $\theta$에 대해서 정리하면 아래 식과 같이 나타낼 수 있다. 

 

 

 

우선 벡터 b의 크기에 b와 a사이의 cos각을 곱하면 벡터 p의 크기인 $|| p ||$가 된다. 여기에 벡터 a의 방향성분벡터인 $\hat{\boldsymbol{a}}$를 곱해주면 최종적으로 벡터 p가 된다. 여기에 $\boldsymbol{a}^T \boldsymbol{b}=||\boldsymbol{a}||  \; ||\boldsymbol{b}|| \text{cos}(\theta)$ 식을 이용하여 cos을 치환해주면 식 (3.2)와 같이 된다. 여기서 $||\boldsymbol{b}||$는 소거된다. a의 방향성분벡터인 $\hat{\boldsymbol{a}}$는 벡터 a를 a의 크기로 나눠준 것과 같다. 즉 $\hat{\boldsymbol{a}}=\boldsymbol{a}/||\boldsymbol{a}||$이고, 이것을 정규화된 벡터(Normalized vector)라 하며 크기가 1이며 오직 방향성분만을 나타내는 벡터이다. 이를 정리한 것이 식 (3.3)~(3.4)이다. ${||\boldsymbol{a}||}^2$는 벡터의 크기 계산에 있어서 루트가 벗겨지는 것과 같기 때문에 자기 자신과의 내적(dot product)과 같게 된다. 이를 정리한 것이 식 (3.5)이고 괄호안의 분수식은 결국 x와 같다. 마지막으로 식을 정리하면 (3.6)과 같이 된다. 이 식은 Fig. 2의 p=xa와 같다. 

결국 투영 벡터의 식을 선형 대수적으로 표현한 것과 삼각법으로 표현한 것이 일치함을 증명하였다. 

 

 

 

 

 

- Projection matrix of n-dimensional vectors

 

우리는 위에서 벡터의 투영에 대한 식을 벡터에 대한 식으로 정리하였다. 이제 이것을 행렬에 대한 식, 즉 투영 행렬(projection matrix)로 표현해보자. 우선 식 (3.6)을 보면 p=xa로 벡터 p에 대한 식을 표현하였다. 여기서 x는 스칼라(scalar) 값이고 x를 먼저 곱하던, a를 먼저 곱하던 같은 값이 나온다. 즉 p=xap=ax나 똑같다는 말이다. 두 번째 방법으로 다시 정리해보면 아래와 같다. 

 

 

 

여기서 한 가지 생각해보자. 만약 Fig. 2에서 벡터 b의 길이가 두 배가 되면 어떻게 될까? 당연히 투영된 벡터 p의 길이도 두 배가 될 것이다. 식 (4.2)의 b에 2를 곱하면 당연히 벡터 p도 2배가 늘어날 것이다. 

이번엔 벡터 a의 길이가 두 배가 된다고 생각해보자. 각 a의 앞에 2씩을 곱해주면 분자의 두 개의 a에도 각각 2, 분모의 두 개의 a에도 각각 2가 곱해질 것이다. 2는 결국 소거되어 식은 원래와 같게 된다. 즉 a는 아무리 늘어나거나 줄어들어도 p에는 영향을 미치지 않는다. 

 

결국 벡터 b가 어떤 투영시키는 매개체에 의해서 벡터 a로 투영되는 것이다. 여기서 투영시키는 매개체가 바로 투영 행렬(projection)이다. 그리고 투영행렬은 이미 식 (4.2)에 나타나있다. 벡터 b의 a로의 투영을 식으로 나타내면 아래와 같다. 

 

 

 

(※bold체의 소문자 p는 투영된 벡터이고 대문자 P가 투영 행렬이다. 헷갈리지 않게 주의하자.

식 (4.2)에서 분수식 앞의 a를 분자로 끌어올리고 b를 따로 떼어서 생각하면 식 (5)와 같이 정리할 수 있다. 우리는 지난 강의에서 column vector x row vector 순으로 곱하면 행렬이 됨을 배웠다. $\boldsymbol{a}$는 column vector, $\boldsymbol{a}^T$는 row vector이고, $\boldsymbol{a}^T \boldsymbol{a}$는 상수가 된다. 따라서 식 (5)의 P는 행렬이 되는 것이다. 이것이 b를 a로 투영시키는 투영행렬(projection matrix)이다. 지금의 예는 2D벡터에 대한 것이지만, 식 (5)와 같이 투영 행렬을 만드는 것은 n차원의 벡터에 대해서도 성립한다. 즉 a와 b가 3차원, 4차원 벡터이더라도 식 (5)를 이용하여 똑같이 투영행렬을 만들 수 있다는 의미이다. 

 

 

- Properties of projection matrix

 

이제 투영 행렬을 구했으니 이것이 어떤 특징을 가지고 있는지 간단히 살펴보도록 하자. 

그 전에 어떤 행렬의 column space에 대해서 한 번 생각해보자. 어떤 임의의 행렬 A가 있다고 했을 때 A의 column vector들의 선형조합(Linear combination)을 통해 만들 수 있는 공간을 우리는 행렬 A의 column space라고 한다. 그렇다면 이 행렬 A에 어떤 임의의 벡터 x를 곱하면 어떻게 될까? 이것이 의미하는 것이 무엇일까? 바로 A에 곱해진 그 벡터 x가 A의 column space에 안착(landing)하는 것이다. 아래의 예를 보고 확실히 이해해 보도록 하자. 

 

 

 

식 (6)의 A에 벡터 x를 곱하는 것은 A의 각 column vector에 x의 각 원소들을 곱하여 더하는, 즉 column vector들의 선형조합 연산에서  x의 원소들은 각 벡터에 곱해지는 상수가 된다. 결국 column vector의 선형조합으로 표현되기 때문에 x는 당연히 column space안으로 들어가는 것이다. 이것은 굉장히 중요한 개념이니 잘 기억해두도록 하자. 

 

그렇다면 식 (5)의 투영행렬 P의 column space는 무엇일까? 바로 벡터 a를 지나가는 Line이다. 

 

다음으로 투영 행렬의 rank는 어떻게 될까? 우리는 지난 강의(Lecture 11-(2))에서 어떤 두 벡터를 column vector x row vector의 순서로 곱하면 반드시 rank 1 행렬이 만들어진다고 배웠다. 따라서 식 (5)에 나온 것 처럼 column x row($\boldsymbol{a} \boldsymbol{a}^T$)의 곱으로 만들어졌기 때문에 투영 행렬은 rank가 1이며 벡터 a가 행렬 P의 column space의 기저(basis)가 된다. 

 

투영 행렬 P는 대칭(symmetric)인가? 당연히 그렇다. 똑같은 벡터 a의 column x row순으로 곱하여 만들어진 행렬이기 때문에 대칭 행렬(symmetric matrix)이다. 따라서 아래 식과 같이 나타낼 수 있다. 

 

 

마지막으로 중요한 질문이다. 만약 벡터 b를 투영 행렬 P에 두 번 투영시킨다면 어떻게 될까? 즉 P의 제곱에 b를 곱하는 경우를 말하는데, 결과는 변하지 않는다. Fig. 2에서 벡터 b를 P에 투영시켜 벡터 p로 만든 다음, 다시 p를 투영행렬 P에 곱하여 투영하는 것이다. 결과는 변함없이 p이다. 따라서 아래 식과 같이 나타낼 수 있다. 

 

 

이렇게 하여 투영 행렬(projection matrix)의 두 가지 중요한 특성을 알아보았다. 먼저 투영 행렬의 rank는 1이며 식 (7), (8)과 같이 대칭 행렬(symmetric matrix)이고 P의 제곱은 P와 같다. 이와 같은 투영 행렬의 특성을 바탕으로 Fig. 2의 벡터 b는 투영 행렬 P의 column space인 a를 지나 가는 Line(rank=1)에 위치하게 되는 것이다. 

 

 

 

 

 

 

2. N-Dimensional Vector Projection (N차원 벡터 투영)

 

우리는 위에서 2차원 벡터 투영에 대한 내용을 배웠다. 이번엔 2차원을 넘어 더 높은 차원의 벡터에 대한 투영을 공부해보도록 하자. 그 전에 우리가 왜 투영(projection)에 대해 공부하고 있는 지를 한 번 생각해보고 넘어가자. 

 

 

- Why projection?

 

왜 우리는 투영(projection)을 공부하고, 이것이 왜 중요할까? 우리는 바로 지난 강의에서 해가 존재하지 않는 선형연립방정식 Ax=b에 대하여 공부하였다. 해가 존재하지 않는 경우는 미지수보다 방정식이 더 많은 경우이고 이를 overdetermined case라고 배웠다. 이를 해결하기 위해서 우리는 비록 정확한 해는 없지만 그래도 가장 근접한 해인 x hat($\hat{\boldsymbol{x}}$)을 구하여 이 문제를 해결하였다. 그렇다면 무엇이 가장 근접한 해(closest solution)인가? 

 

Overdetermined case인 경우 Ax=b에서 Ax의 결과 벡터는 항상 A의 column space에 존재한다. 그러나 b는 column space에 존재하지 않는다. 식은 =로써 정의했지만, 사실은 양변의 불일치가 발생하는 것이다. A는 이미 정해진 시스템이라 바꿀 수 없고 x는 앞으로 구해야 할 해다. 따라서 b를 바꿔야 한다. 이를 어떻게 바꿀 것인가? 바로 A의 column space에서 가장 근접한 벡터로 바꾸는 것이다. 즉 A의 column space에 존재하는 수 많은 벡터중에서 현재의 b와 가장 흡사한 벡터를 골라서 b대신 놓는 것이다. 이때 b와 가장 흡사한 벡터가 바로 A의 column space로 투영한 벡터 p다. 우변에 p가 위치한 경우 x는 x hat($\hat{\boldsymbol{x}}$)이 된다. 즉 원래의 b를 만족시키는 정확한 해는 아니지만, 최대한 근접한 해를 의미한다. 이를 정리하면 아래와 같다. 

 

 

 

 

이제 우리의 다음 목표는 우변의 벡터 b를 어떻게 column space로 투영(projection)시키는가 이다. 이해를 돕기 위해 3차원 공간에서의 그림을 가지고 설명해보겠다. 

 

Fig. 3 3차원 공간에서의 투영(projection)

 

 

Fig. 3은 3차원 공간에서 3차원 벡터와 행렬을 이용하여 투영을 하는 모습을 나타낸 것이다. 베이지색 평면은 행렬 A의 column space를 의미한다. 또한 이들의 기저(basis)는 그림에서 각각 a1과 a2이며 평면 위에 존재하는 column space의 임의의 벡터들이다. 따라서 행렬 A는 아래 식과 같이 이 기저들로 이루어진 형태가 될 것이고 크기는 3x2가 될 것이다. 물론 이는 Fig. 3을 기준으로 한 크기이며 차원은 임의의 n차원이 될 수 있다. 

 

 

 

파란색 화살표로 나타낸 벡터 b는 column space의 평면 위에 존재하지 않는다. 이 벡터 b가 바로 식 (9.1)에 있는 Ax=b의 b이다. 이러한 overdetermined case에서 x는 a1과 a2의 선형 결합의 상수로써 그 결과가 b가 되도록 해야 한다. 그러나 보다시피 b는 column space 평면 위에 존재하지 않기 때문에 이를 만족시키는 x는 애초에 존재하지 않는다. 그래서 최대한 만족시키는 해를 찾기 위해 b를 치환하는 것이다. 바로 A의 column space에 존재하는 무수히 많은 벡터들 중에 b와 가장 근접한 벡터로 말이다. 벡터의 화살표 끝점을 기준으로 봤을 때 가장 가까운 벡터는 당연히 평면에 수직(perpendicular)으로 내린 벡터가 될 것이다. 이것이 바로 벡터 p가 된다. (b가 애초에 평면 위에 존재한다면 문제는 훨씬 쉬워짐) 벡터 b에서 p의 방향으로 수직으로 연결한 선이 바로 두 벡터 사이의 오차(error)이며 보라색으로 표기되어 있다. 

 

결국 우리가 최종적으로 구하고자 하는 것은 x hat($\hat{\boldsymbol{x}}$)이며, 이를 위해서는 먼저 p를 구해야한다. p는 Fig. 3에 표현된 것과 같이 x hat과 a1, a2와의 선형 조합(Linear combination)으로 나타낸 것이며 이를 다시 행렬로 표현 하면 $\boldsymbol{p}=A \hat{\boldsymbol{x}}$와 같이 나타낼 수 있다. 

 

 

 

 

다시 한 번 우리의 문제를 정리해보면 overdetermined case의 Ax=b는 미지수가 방정식보다 작기 때문에 해가 존재하지 않는다. 따라서 가장 근접한 해를 구하기 위해 우변의 b를 A의 column space에서 가장 근접한 벡터로 치환해준 뒤 최종적으로 x hat을 구하는 것이 우리가 하고자하는 것이다. 여기서 x hat($\hat{\boldsymbol{x}}$)을 구하기 위한 핵심 포인트는 바로 보라색 선인 오차(e)이다. 이 오차가 column space에 수직(perpendicular)하다는 것이 핵심이다. 오차는 e=b-p로 표현되었는데, p를 $\boldsymbol{p}=A \hat{\boldsymbol{x}}$로 치환하여 다시 정리하면 아래와 같다. 

 

식 (11)을 놓고 보면 우리는 a1과 a2 두 개의 방정식(equation)에 대해 정리할 수 있다. A는 a1과 a2의 두 개의 column vector로 이루어져 있고 x hat역시 x1과 x2로 이루어져 있기 때문이다. 이 말은 즉 오차에 대한 라인 e가 a1에도 수직이고 a2에도 역시 수직이라는 의미다. a1, a2가 plane의 기저(basis)이므로 이 두 벡터하고 수직이면 모든 plane과 수직이다. 따라서 우리는 식(11)을 a1과 a2로 나누어 식을 정리할 수 있다. 

 

 

식 (12)는 오차 벡터 e와 a1, a2와의 내적(dot product)에 관한 식으로 정리한 것이다. 내적했을 때 0이라는 것은 수직인 것을 다들 이미 알고 있을 것이다. 그러나 우리는 선형 대수를 배우고 있기 때문에 식 (12)를 행렬의 형태로 다시 정리해보자. 

 

 

앞의 a1과 a2로 이루어진 행렬은 원래 A의 전치(transpose)행렬이다. 따라서 행렬로 표현하면 식 (13.2)처럼 나타낼 수 있다. 이를 다시 전개하여 정리하면 우리가 지난 강의(Lecture 15-(1))에서 봤던 식이 나온다. 즉 x hat을 구하는 식 말이다. 

 

여기서 식 (13.2)를 우리가 지난 강의(Lecture 14)에서 배웠던 직교벡터와 부분 공간과 연결지어 생각해보자. 식 (13.2)가 지난 번에 배웠던 네 개의 부분 공간 중 어떤 것과 유사해 보이지 않는가? 바로 Left null space의 형태인 것을 알 수 있다. 따라서 오차 벡터($e=(\boldsymbol{b}-A \hat{\boldsymbol{x}})$)는 행렬 A에 대한 Left null space에 존재한다. 또한 Left null space는 행렬 A의 column space와 직교(orthogonal)인 것을 배웠다. Fig. 3과 연결시켜 설명해보자면 행렬 A의 column space는 베이지색 plane이고, 이와 직교인 오차 벡터 e는 Left null space에 있음을 증명했는데, 그림상에서도 plane과 수직(perpendicular)인 것을 알 수 있다. 이렇게 하여 행렬의 부분 공간(subspaces)과도 연결지어 이해할 수 있었다. 이를 간단히 정리하면 다음과 같다. 

 

 

 

결과적으로 우리의 문제를 해결하기 위해 핵심이 되는 식은 (13.3)이다. 

 

 

- Solution of the x hat and projection matrix

 

이제 식 (13.3)으로부터 해(solution)를 구해보자. 해가 존재하지 않는 overdetermined case에서 우변의 b를 column space의 가장 유사한 벡터로 치환했으니 이제 유사한 해가 존재한다. 식 (13.3)을 x hat에 대하여 정리하면 아래와 같다. 

 

 

우리가 구하고자 하는 x hat은 식 (14.1)과 같다. 이를 통해 우리는 x hat의 값을 구할 수 있다. 그 다음엔 원래의 식에 이 x hat을 곱해서 b에서 A의 column space로 투영된 행렬 P를 구할 수 있다. x hat을 A에 곱하면 A의 column space로 들어가게 되는데, 이것이 원래의 벡터 b를 A의 column space로 투영한 p 벡터가 된다. 이 식을 나타낸 것이 식 (14.2)의 왼쪽이다. 

 

그런데 사실 우리가 최종적으로 구하고 싶은 것은 x hat이 아니다. 바로 같은 차원의 공간에 있는 어떠한 벡터이든지 행렬 A의 column space로 투영시킬 수 있는 투영 행렬(Projection matrix)을 구하고 싶은 것이다. 이를 위해 x hat을 먼저 구하고, x hat과 A를 정리하여 투영 행렬 P를 구하는 것이다. 식 (14.2)로부터 이 투영 행렬을 구할 수 있다. (14.2)의 x hat을 (14.1)로 치환해서 정리하면 (14.2)의 오른쪽과 같이 된다. 여기서 밑줄 친 부분이 바로 투영 행렬 P에 대한 식이다. 우리는 이미 section 1에서 1차원 벡터에 대한 투영 행렬 P를 식 (5)와 같이 구했다. 그러나 이는 1차원에 해당하는 방법이다. 식 (14.x)는 바로 n차원에 대한 투영 행렬을 구하는 방법을 나타낸다

 

 

그런데 어떤 사람은 식 (14.3)을 보고 이렇게 생각할 수 있다. 저거 전개 해서 없앨 수 있을 것 같은데.. 일단 전개해보자. 

 

 

전개해보니 식 (14.3)이 결국 단위 행렬(Identity matrix)가 되었다. 그러나 이것이 과연 맞을까? 정확히 말하자면 특정 조건일 때만 맞는 이야기이다. 바로 행렬 A가 정방행렬(square matrix)이고 역행렬이 존재할 때(invertible) 식 (15)가 성립하는 것이다. 우리가 기본적으로 가정하는 것은 overdetermined case, 즉 직사각 행렬(Rectangular matrix)이며 방정식이 미지수보다 많은 경우이다. 이 경우엔 당연히 역행렬이 존재하지 않는다. 따라서 식 (15)는 직사각 행렬의 경우엔 성립하지 않는다

 

그렇다면 행렬 A가 역행렬을 가지는 경우(invertible)엔 이것을 어떻게 생각해야 할까? 다시 말하면 투영 행렬 P가 n x n의 정방행렬이며 역행렬이 존재하는 경우 말이다. 이것은 결국 n차원 공간에서 n차원 공간으로의 투영, 즉 3차원 공간에서 3차원 공간으로 투영시키는 것이고 결국 단위 행렬(Identity matrix)을 의미한다. 투영 시켜도 아무 일도 일어나지 않는 다는 말이다. 

 

 

 

 

 

우리는 section 1의 1차원 예시에서 식 (7), (8)과 같이 투영 행렬이 대칭(symmetric)이며, 제곱해도 같음을 증명하였다. N차원의 경우에도 이것이 성립하는지 알아보자. 식 (14.3)을 전치 시키면 아래와 같다. 

 

 

식 (16)을 통해 전치를 해도 식이 같음을 증명하였다. 이번엔 P의 제곱에 대해 증명해보자. 

 

 

P를 제곱했더니 밑줄 친 부분이 단위 행렬이 되어 삭제된다. 따라서 P의 제곱이 원래의 P와 같음을 증명하였다. 

 

이렇게 하여 투영 행렬(Projection Matrix)에 대한 모든 식을 정리하였다. 

 

 

 

3. MATLAB 구현

 

아래 그림은 Fig. 3과 같은 투영(projection)에 관한 문제를 MATLAB으로 구현한 것이다. 각 벡터의 색깔을 Fig. 3과 맞추었으니 비교해보기 바란다. 구현한 식은 다음과 같다. 

 

 

 

 

Fig. 4 MATLAB을 이용해 식 (18)을 투영 행렬로 해를 구하고 시각화 한 모습

           굵은 녹색 벡터가 p를, 가는 녹색 벡터는 standard basis의 y축을 의미함

 

 

아래는 구현 코드이다. Overdetermined case인 식 (18)을 어떻게 풀고 어떻게 구현하고 시각화 했는지를 잘 살펴보기 바란다. 실제로 A와 b의 값을 바꿔가며 감을 잡아보도록 하자. 

 

 

 

 

 

 

4. 마치며

 

이번 강의에서 정말 중요한 개념인 투영(Projection)을 배우고 이를 행렬의 부분 공간(subspaces)과 연결지어 생각해 보았다. 투영을 배우는 이유는 해가 존재하지 않는 경우인 Overdetermined case의 문제에 대한 해를 찾으려는 시도에서부터 출발한다. 이 경우 Ax=b 식을 만족시키는 해가 애초에 존재하지 않지만, 가장 근접한 해를 구하기 위해 우변의 b를 행렬 A의 column space 공간의 가장 유사한 벡터로 만든 다음 이에 대한 근사해(approximate solution) x hat을 계산한다. 이때 b를 A의 column space로 투영시키는 역할을 하는 것이 바로 투영 행렬(projection matrix) P이며, x hat을 구하고 이를 행렬 A와 함께 정리하여 구할 수 있다. 

 

다음 강의에서 배울 내용이지만, 이 투영의 개념은 우리가 실제 문제에서 유용하게 사용할 수 있는 수학적 방법론인 최소자승법(Least square method)의 배경이 되는 아주 중요한 개념이다. 잘 숙지하도록 하자.