본문 바로가기

선형대수학

[Linear Algebra] Lecture 10, 네 개의 주요 부분 공간(Fundamental subspaces)



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

참고한 블로그 :

https://blog.naver.com/PostView.naver?blogId=skkong89&logNo=221390716210&categoryNo=48&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postList&userTopListOpen=true&userTopListCount=30&userTopListManageOpen=false&userTopListCurrentPage=1 

 

Lecture 10: The four fundamental subspaces

Lecture 10: The four fundamental subspaces (5/10) - 좋아. 여기서는 선형대수학 강의 10번째이다. 이 ...

blog.naver.com

 

https://twlab.tistory.com/25

 

[Linear Algebra] Lecture 10 네 개의 주요 부분 공간(Fundamental subspaces)

1. 네 개의 주요 부분 공간(Four fundamental subspaces) 이번 포스팅에선 행렬 A에 대한 네 개의 주요 부분 공간(Fundamental subspaces)에 대해 다뤄보겠다. 이들 주요부분공간 각각에 대해 알아보고 이들이 서

twlab.tistory.com

(주로 https://twlab.tistory.com/25블로그의 사진과 내용을 보면서 공부했고 추가로 나머지 블로그를 참고하였습니다.)

(저는 제가 이해하기 쉽게 요약해서 적었으므로 좀더 자세히 공부하고싶다면 위 블로그를 참고하시면 됩니다.)


네 개의 주요 부분 공간(Four fundamental subspaces)

임의의 행렬 A에 대한 4개의 주요 부분 공간은 다음과 같다.

  • Column space
  • Null space
  • Row space
  • Left null space

(1) Column space and Null space

Column space는 행렬 A의 column vector들의 선형 조합을 통해 형성하는 공간으로 $C(A)$로 표기한다.

Null space는 Ax=0을 만족시키는 해들의 집합으로 형성되는 공간으로 $N(A)$로 표기한다.

 

(2) Row space

Row space는 행렬 A의 row vector들의 선형 조합을 통해 형성되는 공간이다.

따라서, row vector들은 row space를 "span"하고, 만일, row vector들이 독립이면 row space의 기저(basis)가 되고, 종속이면 기저가 아니게 된다.

 

또한, row space를 A의 전치(Transpose)행렬을 통해 column vector로 표현할 수 있다.

따라서, A의 전치행렬에 대한 column space를 구하면 그것이 A의 row space가 되고, $C(A^T)$로 표기한다.

 

(3) Left null space

Left null space는 행렬 A의 전치행렬에 대한 Null space를 의미하고, $N(A^T)$로 표기한다.


네 개의 주요 부분 공간들의 예시

이제 행렬 A가 m x n의 크기 일때, 각 공간들이 이루는 공간은 몇개의 component를 가지는지 각 부분 공간들은 어떠한 전체 공간에 놓여있는지 확인해보자.

 

Column space는 $R^m$의 공간에 존재한다.

Null space는 $R^n$의 공간에 존재하며 n의 크기에 따라 미지수가 정해지기 때문이다.

Row space는 A의 전치행렬에 대한 column space이므로 $R^n$의 공간에 존재한다.

Left null space 역시 A의 전치행렬에 대한 Null space이므로 $R^m$의 공간에 존재한다.

 

요약하면, 다음과 같다.

$$ Ax=0 \longrightarrow \underset{3 \times 4}{\begin{bmatrix} - & - & - & - \\ - & - & - & - & \\ - & - & - & - \end{bmatrix}}  \underset{4 \times 1}{\begin{bmatrix} - \\ - \\ - \\ - \\ \end{bmatrix}} = \underset{3 \times 1}{\begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix}} $$

$$ \begin{matrix} C(A) \ \ in \ \ R^m = R^3 \\ N(A)  \ \ in \ \ R^n = R^4\\ C(A^T) \ \ in \ \ R^n = R^4\\ N(A^T) \ \ in \ \ R^m = R^3 \end{matrix}$$

 

따라서, 위의 주요부분공간들을 그림으로 표현하면 다음과 같다.

그림을 이해하는게 이번 Lecture의 목표이다.

 

다음과 같은 2x3의 행렬 A가 있다고 해보자.

$$ A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} $$

먼저, Row space를 보면 component가 3개이므로 $R^3$공간상에 Row space가 존재한다.

따라서, 위의 row1벡터와 row2벡터가 독립이므로 다음과 같은 2차원 평면을 3차원 공간상에 만든다고 해보자.

(보라색 점은 원점이다)

위의 2개의 row벡터들은 2차원 평면을 채울 수 있지만 3차원 공간은 채울 수 없다.

왜냐하면 위에서 만든 평면을 직교하는 즉, 2개의 벡터를 직교하는 또 하나의 벡터가 존재하지 않기 때문이다.

이때, 두 row vector를 직교하여 3차원 공간을 형성할 수 있도록 하는 것이 바로 Null space다.

즉, Row space와 Null Space는 직교(orthogonal)한다.

실제로 A의 Null space를 계산해보자.

$$ Ax=0 \longrightarrow  \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} $$

$$ \rm N(A) \longrightarrow -1 \begin{bmatrix} 1 \\ 4 \end{bmatrix}  + 2 \begin{bmatrix} 2 \\ 5 \end{bmatrix}  -1 \begin{bmatrix} 3 \\ 6 \end{bmatrix}  = \begin{bmatrix} 0 \\ 0 \end{bmatrix}  $$

$$ \rm N(A) \longrightarrow \therefore \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} -1 \\ 2 \\ -1 \end{bmatrix} $$

따라서, Null space가 진짜 두 벡터(row space)를 직교(orthogonal)하는지 내적(dot product)로 확인해보자.

$ row_1 = \vec{r_1} = ( 1, \ 2, \ 3)$,  $ row_2 = \vec{r_2} = ( 4, \ 5, \ 6) $,  $\rm Null \ \ space = \vec{N(A)} = ( -1, \ 2, \ -1)$

라 하면 각 row벡터들과 Null space를 내적해보자.

$ \vec{r_1} \cdot \vec{N(A)} = 1 \times -1 + 2 \times 2 + 3 \times -1 = 0 $

$ \vec{r_2} \cdot \vec{N(A)} = 4 \times -1 + 5 \times 2 + 6 \times -1 = 0 $

따라서, Null space는 row space를 직교(orthogonal)함을 알 수 있다.

또한, Null space vector에 어떠한 상수를 곱해도 성립하기 때문에 Null space는 직선(Line)형태이다.

 

여기서, A의 row space 차원(dimension)은 어떻게 바로 알 수 있을까?

바로 A의 Rank=r가 row space의 차원이다. A의 Rank는 2이고, 따라서, A가 정의할 수 있는 차원은 2차원 평면이다.

Null space의 차원은 n-r로 정의된다. 따라서, 3-2=1로 1차원 직선형태를 나타낼 것이다.

 

정리하면, row space의 차원은 pivot variable의 개수인 Rank가 되고, Null space의 차원은 free variable의 개수인 n-r이 된다.

 

예를들어, 3x3행렬의 Full Rank인 경우 r=3이고, Null space는 보라색 점(원점)(n-r=3-3=0)으로 표현이 되고 row space는 3차원 cubic으로 표현될 것이다.

 

이번에는 column space를 살펴보자. A의 column space는 $R^m$에 존재한다. m=2이기 때문에 column space는 $R^2$인 2차원 공간에 존재한다.

A의 row space는 3차원공간에 존재했지만 2차원 공간밖에 정의할 수 없었던 것과는 달리 column space는 2차원 공간에 존재하고 2차원 공간 전체를 채울 수 있다.

 

또한, column space의 차원을 판가름하는 Rank는 row space와 마찬가지로 2이다.

여기서, 알 수 있는건 바로 row space와 column space의 차원은 항상 같다이다. 즉, Rank가 같다는 이야기이다.

따라서, column space의 차원이자 Rank는 2가 된다.

 

마지막으로 Left Null space를 구해보자.

$$ N(A^T) = A^T x =0 \longrightarrow \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} \longrightarrow x_1 \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} + x_2 \begin{bmatrix} 4 \\ 5 \\ 6 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} $$

위 식을 성립하는 해는 오직 영벡터만이 위의 식을 성립시킬 수 있다. $x_1 = 0 $ $x_2 = 0$

따라서, Left Null space는 오직 영벡터(zero vector)로 정의된다.

$$ N(A^T) =Z $$

그림으로 표현하면 다음과 같다.

Left Null space의 차원은 m-r로 계산하며, 2-2이므로 0차원인 영 벡터가 된다.


주요 부분 공간들의 기저(Basis)와 차원(Dimension)

네 개의 주요부분공간을 이해하기 위해서는 기저(Basis)차원(Dimension)을 알아야 한다.

Column, Null space의 기저와 차원은 앞에서 공부했으니 간단하게 보고 넘어가겠다.

 

  • C(A) : Column space
    basis : pivot columns (의 수가 Rank)
    dimension : r(=Rank)
  • N(A) : Null space
    basis : special solutions
    dimension : n-r (free column의 수)

Row space의 기저(basis)는 어떻게 구할까?

바로 A를 전치시킨 후 소거를 통해 R행렬을 만든다. 여기서 pivot이 있는 column을 기저로 생각할 수 있다.

그러나 보다 정확한 row space의 기저를 구하는 방법은 원시 행렬 A에서 소거를 통해 row reduction을 통해 pivot row를 취하는 방법이다.

다음과 같은 행렬 A를 R행렬로 만들어보자.

$$ A= \begin{bmatrix} 1 & 2 & 3 & 1 \\ 1 & 1 & 2 & 1 \\ 1 & 2 & 3 & 1 \end{bmatrix} \longrightarrow \begin{bmatrix} (1) & 0 & 1 & 1 \\ 0 & (1) & 1 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix} = R $$

여기서 하나 알게되는데 바로 원시 행렬 A의 column space와 R행렬의 column space는 다르다는 것이다.

$$ C(A) \ne C(R) $$

소거와 row operation:
어떤 행렬 A에 대해 소거를 하면 우리는 row에 관한 연산, 즉 row reduction을 한다.
row reduction은 결국 row끼리 더하고 빼는 선형 조합이므로 row space는 변하지 않는다.
즉, 소거된 행렬인 R행렬의 row들은 여전히 같은 row space상에 존재하게 된다.
반면 column space는 원시행렬 A에 대해 row operation을 하기 때문에 변하게 된다.

- A와 R의 Column space는 다르다.
- A와 R의 Row space는 같다.

결론적으로 행렬 A의 row space의 기저(basis)는 R행렬의 처음 r개의 row vector들이다.

즉, pivot의 개수인 Rank만큼의 기저 벡터가 존재하며, pivot이 위치한 R의 row벡터들이 행렬 A의 기저가 되는 것이다.

 

R행렬의 row1과 row2가 서로 독립이며 A의 subspace인 2차원 평면을 "span"한다. 따라서 R의 row1과 row2가 행렬 A의 row space의 기저(basis)가 된다.

 

R의 row1과 row2가 기저인지를 확인하려면 R행렬에서 row1과 row2의 선형조합으로 다시 A행렬을 만들면 된다.


먼저, 왜 "Left Null space"인지 알아보자.

다음과 같이 A의 전치의 Null space인 Left Null space $N(A^T)$를 구하는 식이다.

$$ A^T x = 0 \longrightarrow \begin{bmatrix} - & - & - \\ - & - & - \\ - & - & - \\ - & - & - \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} $$

여기서, x를 왼쪽에 놓고 싶을 땐 양변을 전치(Transpose)해주면 된다.

$$ (A^T x)^T = (0)^T \Rightarrow x^T A^{TT} = 0^T \Rightarrow x^T A = 0^T $$

$$ \begin{bmatrix} - & - & - \\ - & - & - \\ - & - & - \\ - & - & - \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} \longrightarrow \begin{bmatrix} x_1 & x_2 & x_3 \end{bmatrix} \begin{bmatrix} - & - & - & - \\ - & - & - & - \\ - & - & - & - \end{bmatrix} = \begin{bmatrix} 0 & 0 & 0 & 0 \end{bmatrix} $$

따라서, 이런 형태여가지고 Left Null space라고 부른다. 그러나 보통 위와같은 형태는 쓰지않고 전치 전의 형태를 사용한다.

 

이제 Left Null space의 기저(basis)도 구해보자.

직관적으로 생각하면 행렬 A의 row vector들에 대한 Null space이다. 따라서, 행렬 A에서 row의 선형 조합을 통해 그 결과가 영벡터가 되는 해 x를 찾으면 되는 것이다. 하지만, 항상 이렇게 직관적으로 계산할 수 없다. 따라서, systematic하게 계산을 해야한다.

$$ A= \begin{bmatrix} 1 & 2 & 3 & 1 \\ 1 & 1 & 2 & 1 \\ 1 & 2 & 3 & 1 \end{bmatrix} \longrightarrow \begin{bmatrix} (1) & 0 & 1 & 1 \\ 0 & (1) & 1 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix} = R $$

$$ A^T x = 0 \longrightarrow \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 2 \\ 3 & 2 & 3 \\ 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} \longrightarrow x_1 \begin{bmatrix} 1 \\ 2 \\ 3 \\ 1 \end{bmatrix} + x_2 \begin{bmatrix} 1 \\ 1 \\ 2 \\ 1 \end{bmatrix} + x_3 \begin{bmatrix} 1 \\ 2 \\ 3 \\ 1 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} $$

위에서 Left Null space의 차원(dimension)은 행렬 A의 row에서 Rank를 뺀 m-r로 정의되고, 따라서, 3-2=1이다.

즉, 1차원임을 알 수 있고, 결국 free variable이 1개임을 알 수 있다.

위에서 직관적으로 보면 col3이 free column임을 알 수 있으므로 $x_3$에 임의의 값(1)을 설정하여 나머지를 풀면 Left Null space를 구할 수 있고, 기저(Basis)도 구할 수 있다.

 

하지만, 이렇게 말고 다른 방식으로 구해보자. $A^T$에서가 아닌 A행렬을 R행렬로 만드는 과정에서 Left Null space를 구해보자. A에서 R행렬로 소거할 때 행렬 뒤에 단위 행렬을 붙여 소거하여 E행렬을 만드는 방법이 있다. 이때 A가 역행렬이 존재하면 E행렬이 A의 역행렬이 된다.

따라서, 다음과 같은 식이 된다.

$$ [A_{m \times n} I_{m \times m}] \underset{R행렬로 소거}{\longrightarrow} [R_{m \times n} E_{m \times m}] $$

즉, 위와같이 A의 뒤에 mxm크기의 단위 행렬을 붙여서 증강 행렬(Augmented matrix)로 만든다음 rref을 만들어주면 된다.

이렇게 만든 E행렬을 이용하여 다시 A행렬을 곱해주면 R행렬이 나온다. 따라서, 다음과 같은 식이 만족한다.

$$ EA = R $$

$$ EI =E$$

$$ E[AI] = EAEI = RE $$

이렇게 E행렬은 rref를 만드는 역할이며, A가 정방행렬이면서 역행렬이 존재하면 E가 바로 역행렬이 된다.

실제로 계산해보자.

$$ \begin{bmatrix} 1 & 2 & 3 & 1 & | & 1 & 0 & 0\\ 1 & 1 & 2 & 1 & | & 0 & 1 & 0 \\ 1 & 2 & 3 & 1 & | & 0 & 0 & 1\end{bmatrix} $$ $$ A_{3 \times 4} \quad \quad \quad \quad I_{3 \times 3} $$

$$ \begin{bmatrix} (1) & 0 & 1 & 1 & | & -1 & 2 & 0 \\ 0 & (1) & 1 & 0 & | & 1 & -1 & 0 \\ 0 & 0 & 0 & 0 & | & -1 & 0 & 1 \end{bmatrix}$$

$$ R \quad \quad \quad \quad \quad \quad E $$

따라서, 이렇게만든 E행렬을 A행렬에 곱해서 다시 R을 만드는 식을 써보자.

$$ \underset{E}{\begin{bmatrix} -1 & 2 & 0 \\ 1 & -1 & 0 \\ -1 & 0 & 1 \end{bmatrix}} \underset{A}{\begin{bmatrix} 1 & 2 & 3 & 1 \\ 1 & 1 & 2 & 1 \\ 1 & 2 & 3 & 1 \end{bmatrix}} = \underset{R}{\begin{bmatrix} 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix}}$$

일단, 우리는 Left Null space의 차원이 1차원임을 알 수 있다. 여기서 R행렬의 row3의 원소가 모두 0인 것이 보인다.

 

Left Null space의 선형 조합으로 영벡터를 만들어야한다. 마침 R행렬의 row3이 영벡터이고, 이 영벡터가 존재한다는 것은 A벡터의 선형조합을 통해 영벡터를 만들 수 있다는 의미이다. 즉, 1차원의 Null space가 존재한다는 의미다.

R의 row3에 대응되는 E의 행렬은 row3이 되고 결국 이것이 행렬 A의 Left Null space가 된다.

 

$$ -1 \begin{bmatrix} 1 & 2 & 3 & 1 \end{bmatrix} + 0 \begin{bmatrix} 1 & 1 & 2 & 1 \end{bmatrix} + 1 \begin{bmatrix} 1 & 2 & 3 & 1 \end{bmatrix} = \begin{bmatrix} 0 & 0 & 0 & 0 \end{bmatrix} $$

즉, E행렬은 A의 왼쪽에있고 따라서, row 연산을 하니깐 E의 row3을 A의 row들과 선형 결합을 했더니 영 벡터가 나왔으므로 E의 row3이 Left Null space가 된다.

$$ Left \ \ Null \ \ space \ \ : \ \ \begin{bmatrix} -1 \\ 0 \\ 1 \end{bmatrix} $$


결론

임의의 행렬 A에 대한 4개의 주요부분공간에 대해 알아 보았다.

또한 column space와 row space의 둘의 차원은 항상 Rank로 같다.

마지막으로 각 부분공간의 기저와 차원을 구하는 방법을 공부하였고 다음과 같이 정리할 수 있다.

행렬 A가 mxn의 크기이고, Rank=r 일 때,

C(A) : Column space
기저 : A의 pivot columns
차원 : r

N(A) : Null space
기저 : Ax=0의 special solutions
차원 : n-r

C($A^T$) : Row space
기저 : $A^T$의 pivot columns
차원 : r

N($A^T$) : Left Null space
기저 : $A^T$x=0의 special solutions
차원 : m-r