이번 포스팅에서는 Column SpaceNull Space에 대해 설명할 것이다. 컬럼 공간, 영공간으로 각각 한글화 시킬 순 있지만 뭔가 어색하기 때문에 그냥 컬럼 스페이스, 널 스페이스로 읽도록 하겠다. Column space는 지난 포스팅에서 잠깐 배우긴 했지만, 이번에 좀 더 자세히 다뤄 보도록 하자. 

 

우선 지난 포스팅(Lecture 5)에서 우리는 벡터 공간(Vector Space)과 부분 공간(Subspace)에 대해 배웠다. 이번 포스팅에서 배울 내용의 이해를 돕기 위해 잠시 복습하는 시간을 가져보도록 하자. 

 

 

0. 벡터 공간(Vector Spaces) Review

 

 

벡터 공간(Vector Space)은 벡터의 집합이다. 단순한 집합이 아니라 똑같은 개수의 컴포넌트(x, y, ...)로 정의할 수 있는 무수히 많은 벡터들의 집합인데, 벡터의 공간임을 인정받기 위해선 다음의 규칙을 반드시 따라야 한다. 

 

1. 벡터 공간 내에 존재하는 임의의 벡터 v와 w는 그 둘을 더해도 (v+w) 그 결과가 반드시 같은 벡터 공간에 존재해야 한다. 
2. 벡터 공간 내에 존재하는 임의의 벡터 v에 임의의 상수 c를 곱해도 (cv) 그 결과가 반드시 같은 벡터 공간에 존재해야 한다. 
3. 벡터 공간 내에 존재하는 임의의 벡터 vw와 임의의 상수 c, d에 대해 모든 경우의 cv+dw 조합(각 벡터에 임의의 상수를 곱한 뒤 더하는, 즉 선형 결합(Linear Combination))결과가 반드시 같은 벡터 공간에 존재해야 한다.  

 

 

예를 들어 3차원 공간 R3를 생각해보자. R3의 임의의 벡터 v=[1 7 -26]T와 w=[-999 7982 -32988]T가 있다고 가정해보자(T는 Transpose). 이때 임의의 상수 c=-33992와 d=93을 각각의 벡터에 곱한 다음 더해서 선형 결합 연산은 수행했다고 해보자. 결과는 아래와 같을 것이다. 

 

 

 

약간 큰 숫자로 예를 들었지만 어쨋든 결과 벡터도 여전히 3차원 공간상에 존재한다. 따라서 R3는 벡터 공간이라고 말할 수 있다. R1, R2, R4, R5, ... RN에 대해서도 마찬가지로 모두 벡터 공간이라고 할 수 있다. 

 

이런 것이 벡터 공간이라면 굳이 저렇게 어렵게 정의하지 않아도 직관적으로 알 수 있지 않나요? 라고 누군가 물어볼지도 모르겠다. 위와 같은 일반적인 공간을 정의하기 위해서 저렇게 복잡한 정의를 내리는 것이 수학자가 아닌 이상 무슨 필요가 있나요? 라고 묻는 사람도 있을 것이다. 그러나 이러한 일반적인 공간 말고도 부분 공간(Subspace)이라는 것이 있고, 이를 완벽하게 정의하기 위해선 위와 같은 조건이 반드시 필요하다. 

 

부분 공간(subspace)이라는 것은 말 그대로 어떤 공간 안에 존재하는 작은 공간(영역)이다. 3차원 공간 R3를 예를 들면 임의의 평면(Plane) 혹은 직선(Line)이 될 수 있겠다. 아래 그림을 보자. 

 

 

 

[x, y, z]의 3개의 컴포넌트로 구성된 3차원 공간 R3가 있다. 여기서 부분 공간이라 함은 어떤 임의의 평면 P나 임의의 직선 L이 될 수 있는데, 이때 반드시 만족시켜야 하는 조건이 한 가지 있다. 바로 모든 부분 공간은 반드시 원점(origin), 즉 [0 0 0]T을 지나야 한다. 

위 그림에서 부분 공간 P와 L도 원점을 지나간다.(왜 그래야만 하는지는 Lecture 5-(2)참조..) 평면 P에 존재하는 임의의 벡터인 녹색 벡터나 주황색 벡터는 어떠한 임의의 수를 곱하고 서로 더해도 여전히 이 평면 위에 존재한다. 라인 L도 마찬가지로 임의의 벡터인 빨간색, 파란색 벡터의 어떠한 선형 조합도 이 라인 L위에 존재할 수밖에 없다. 

 

자 여기까지는 지난 포스팅에서 배웠던 내용이다. 우리는 여기서 한 가지 궁금한 점이 더 생겼다. 

가령 우리가 어떤 부분 공간 2개를 얻었다고 가정해보자. 여기서 2개를 위의 PL로 생각해보자. 이때 우리가 PL을 한 번에 같이 놓는다면, 즉 P 부분 공간과 L부분 공간을 하나의 덩어리로 생각해 본다면 ,이 PL은 각각 혹은 둘 다가 하나의 부분 공간이 될 수 있을까? 수식으로 나타내면 P와 U의 합집합으로 생각하면 편할 것이다. 

 

 

이 경우 위의 PL합집합은 부분 공간이라고 할 수 있을까? 정답은 부분 집합이 아니다

왜 부분 집합이 아닐까? 바로 앞서 말했던 선형 결합의 규칙이 성립하지 않기 때문이다. 부분 집합이 되려면 집합 내의 원소들 끼리 임의의 상수를 곱하거나 공간 내 원소끼리 더해도 같은 공간에 존재해야 한다고 했다. 그러나 위의 평면 P의 주황색 벡터와 라인 L의 파란색 벡터를 더하면 어떻게 될까? 그 결과는 평면도, 라인도 아닌 R3어딘가로 향하게 될 것이다. 즉 PL의 합집합은 부분 공간이 될 수 없다. 

 

P와 L의 합집합은 부분 공간이 아님을 알았다. 그러면 이번엔 교집합은 어떠할까? P와 L의 교집합, 즉 겹쳐지는 부분은 어떠한가? 

 

 

결론적으로 PL교집합부분 집합이다. 위의 그림에서 PL의 교집합, 즉 교점은 원점이다. PL의 유일한 교점이다. 우리는 지난 포스팅(Lecture 5)에서 원점 그 자체도 하나의 부분 공간이 됨을 배웠다. 따라서 위의 경우는 부분 집합이 된다. 

위의 예 뿐만 아니라 어떠한 부분 집합들의 교집합은 모두 부분 공간이다. 왜냐하면 각각이 모두 부분 공간이기 때문에 겹쳐지는 공간은 반드시 부분 공간이 될 수밖에 없다. 

위 그림에서 라인 L이 평면 P에 겹쳐져 있다고 상상해보자. 이 경우 둘의 교집합은 라인 L이 된다. L은 당연히 부분 공간이다. 

 

정리하면

 

어떤 부분 공간들의 합집합은 부분 공간(subspace)이 아니다

어떤 부분 공간들의 교집합은 부분 공간(subspace)이다

 

 

 

1. Column Space

 

지난 강의에서 Column Space를 살짝 다루었다. 좀 더 자세히 알아보도록 하자. 지난 포스팅에서 예를 들었던 행렬 A를 다시 꺼내 보자. 

 

 

행렬 A는 3개의 column을 가진 행렬이다. 각 column은 4개의 원소로 이루어져 있고 4차원 공간 R4의 부분 공간이다. 이 column space를 C(A)라 표기한다. 그렇다면 행렬 A의 column 공간, 즉 부분 공간(subspace)을 어떻게 알아낼 수 있을까? 전체 공간 R4에서 A의 column이 나타내는 부분 공간을 어떻게 채워넣을 수 있을까? 바로 선형 결합(Linear Combination)을 이용하면 된다. 행렬 A의 3개의 column을 활용해 모든 선형 결합의 조합을 찾으면 A가 정의하는 column 부분 공간을 채울 수 있다. 

 

 

 

 

그렇다면 행렬 A가 정의하는 공간이 어떠한 공간일지가 궁금해진다. 이 공간은 얼마나 클까? 4차원 공간 R4 전체를 뒤덮는 부분 공간인가? 아니면 평면(Plane)이나 직선(Line)과 같이 일부분의 공간을 나타낼까? 

A의 부분 공간을 정의하기 위해선 A의 column의 선형 결합(Linear Combination)을 이용하면 된다고 배웠다. 그렇다면 A의 3개의 column의 선형 결합을 통해 R4 전체를 채울 수 있을까? 이에 대한 답은 No다. 왜 R4 공간 전체를 채울 수 없을까? 이를 위해 A의 부분 공간(subspace)인 column space가 얼마만큼의 크기인지 알아보자. 그 전에 우선 선형방정식(Linear Equation)에 대해 알아보자. 이는 column의 선형 결합과 밀접하게 연관되어 있기 때문에 먼저 알아보는 것이 좋다. 그럼 다음의 질문을 생각해보자. 

 

Ax=b는 모든 b에 대해서 해를 가지고 있을까? 

 

정답은 No다. 왜 그런지 살펴보자. 위의 식 Ax=b에서 A는 4개의 방정식(Equation)과 3개의 미지수(Unknown)를 가지고 있다. 

 

 

4개의 방정식은 A의 4개의 row vector를 계수로 하는 식들을 의미한다. 즉

 

 

3개의 Unknown은 x=[x1, x2, x3]를 의미한다. 우리가 찾아야 할 값은 위 식을 만족시키는 해 x=[x1, x2, x3]를 찾는 것이다. 

 

필자는 앞서 선형방정식이 A의 column의 선형 결합과 밀접하게 연관되어 있다고 했다. 위 식 (4)를 Lecture 1에서 배웠던 column picture의 형태로 다시 쓰면 아래와 같이 쓸 수 있다. 

 

 

 

식 (6)에서 우측의 형태는 A의 column의 선형 결합과 형태가 같다. 

 

자 다시 메인 질문으로 돌아가서 우리는 앞서 A의 column의 선형 결합이 R4전체를 채울 수 없다고 했다. 이 말은 식(6)의 모든 b 벡터에 대해서 해를 구할 수 없다는 말이다. 그렇다면 b가 어떤 값을 가져야 해를 구할 수 있을까? 이 질문에 대한 일반적인(General) 답을 구하기 전에 생각할 수 있는 해(solution) 몇개를 직접 구해보자.

 

가장 쉽게 생각할 수 있는 답은 b 벡터가 모두 0인 경우, 즉 b=[0 0 0 0]T일 때이다. 이 경우 x=[0 0 0]T이 됨을 쉽게 유추할 수 있다. 또 다른 경우는 b=[1 2 3 4]T일 때 x=[1 0 0]이 된다. 이때의 b는 A의 col1과 같다. col2, col3에 대해서도 각각 정리하면 해는 아래와 같다. 

 

 

자 이제 감이 조금 오는가? 아까의 질문에 대한 일반적인 답을 생각해보자. 

 

우리는 선형 방정식 Ax=b에 대해 b 벡터가 A의 column space에 존재할 때에만 해를 구할 수 있다. 즉 b 벡터가 A의 column의 선형 결합(Linear Combination)으로 표현이 가능할 때 Ax=b에 대한 해를 구할 수 있다.
결국 b가 행렬 A의 column space에 존재해야만 해를 구할 수 있는 것이다. 

 

위의 말을 다시 생각해보면 A의 column의 선형 결합은 선형방정식 A그 자체이다. A의 column space는 모든 Ax를 포함하고 있다는 말이다. 따라서 b 벡터가 A의 column space에 존재하지 않으면 해 x도 존재할 수 없다. 

 

결국 해(solution)를 구할 수 있는 b들은 A의 column의 선형 결합으로 표현된 b들이다. 

 

 

그렇다면 A의 column space는 얼마만큼의 크기를 갖는가? A의 column들은 서로에게 독립적(Independent)인가? 각 column은 하나의 새로운 차원을 만드는데에 기여하는가? 

A의 첫 번째, 두 번째 column 벡터는 상호 독립적(Independent)이다. 그러나 3 번째 column은 기존 두 개의 column에 종속적(Dependent)이다. 이는 앞의 두 개의 column의 합을 통해 col3를 정의할 수 있기 때문이다. 즉

 

 

col1과 col2를 pivot column이라 한다. col1이 4차원에서 하나의 line을 정의하고, col2가 또 다른 독립적인 line을 정의하는데 이 둘의 조합을 통해 하나의 평면(Plane)을 정의할 수 있다. 이때 col3는 이 평면위에 존재하기 때문에 새로운 차원을 정의하는데에 있어 아무런 기여를 하지 못한다. 따라서 A의 부분 공간(subspace)인 column space는 4차원 공간에서 2차원 공간인 평면을 정의하는데 그친다. 

 

우리는 column space를 정의하는데 있어 col3를 제외시킬 수 있다. 혹은 col1을 제외시키는 것도 가능하다. col3-col2=col1이기 때문이다. 4차원이기 때문에 그래프로 표현하긴 어렵지만 위의 내용을 잘 상상해보자. 

 

 

 

 

2. Null Space

 

이제 새로운 공간에 대해 알아보자. 바로 영공간(Null space)이다. (보통 널스페이라 발음한다. 앞으로는 영문 표기법을 따르겠다.)

 

이 Null space는 column space와는 완전히 다른 부분 공간(subspace)이다. 앞서 이용했던 행렬 A를 그대로 활용해 Null Space를 정의해 보겠다. A의 Null space의 정의는 다음과 같다. 

 

 

Null space:
선형 방정식 Ax=b에서 b가 zero vector(=Null vector, =0벡터)일때 식을 만족시키는 모든 가능한 해 x에 대한 집합이다. 다시 말하면 선형방정식 Ax=0의 해(Solutions)들이 이루는 공간, Null Space를 의미한다. 

 

식(4)를 Null Space를 위한 식으로 다시 써보자. 

 

 

위 식에 대해 바로 생각할 수 있는 해(solution)은 무엇일까? 바로 0벡터 x=[0 0 0]T이다. 어떤 Null space든지 반드시 0벡터(zero vector)는 포함된다. 0벡터를 반드시 포함하기 때문에 우리는 벡터 공간(vector space)을 정의할 수 있는 기회를 갖는다. 

 

0벡터를 제외한 다른 해를 좀 더 정의해보자. A의 col1과 col2를 더하고 col3에 -1을 곱하여 더해주면 그 결과가 0벡터가 될 것이다. 즉 x=[1 1 -1]T이다. 또 다른 해는 없을까? 사실 방금 구한 해(solution)에 임의의 스케일 상수 c를 곱해주면 모두 해가 될 것이다. 즉 

 

 

 

이를 통해 A의 Null space를 정의할 수 있다. 이 Null space는 3차원 공간 R3의 부분 공간(subspace)이다. 3차원 공간에서 이 Null space가 어떻게 표현될까? 바로 직선(Line)의 형태로 표현된다. 아래 그림과 같이 zero vector(origin)와 x=[1 1 -1]T를 지나는 검은색 Line으로 정의 된다. 이것이 R3의 부분 공간인 A의 Null space이다. 

 

 

 

 

그렇다면 Null space가 벡터 공간인지 아닌지를 어떻게 확인할 수 있을까? Null space는 공간(space)이라고 정의하기 위한 조건들을 만족하는가? Ax=0의 해들은 언제나 부분 공간(subspace)을 이루는가? 이를 확인하기 위해선 다음을 확인해보면 된다. 

 

Ax=0의 어떤 해를 v라 하고, 도 다른 어떤 해를 w라 하자. Av=0, Aw=0이라고 할 때 vw가 하나의 공간에 존재한다면, A(v+w)=0이 성립해야 한다. 즉 아래의 조건이 만족하는지를 확인하면 Ax=0의 해들이 공간을 이루는지를 확인할 수 있다. 

 

 

여기서 A(v+w)=0은 분배 법칙(distributive law)에 의해 Av+Aw=0와 같이 쓸 수 있다. 이렇게 보면 사실 식(12)는 당연할 수밖에 없다. 또 한가지 확인해야 할 사항은 A(cx)=0인데, 여기서 상수 c는 앞으로 뺄 수 있으므로 당연히 성립하게 된다. 

 

 

여기서 한 가지 의문이 생긴다. 그렇다면 b=zero vector일때의 Null space 말고도 b가 임의의 값을 가질 때에도 해(solutions)에 대한 벡터 공간이 존재하는가? 아래의 예를 보자. 

 

 

위의 식 (13)은 b가 0이 아닌 임의의 값을 가지는 경우다. 여기서 해는 x=[1 0 0]T, 혹은 x=[0 -1 1]T 이다. 이에 대한 해들은 벡터 공간(vector space)를 이루는가? 정답은 당연히 No다. 왜냐하면 해 중에 zero vector는 없기 때문이다. 즉 원점을 지나지 않기 때문이다. b가 0이 아닌 임의의 벡터일 때 어떤 해(solution)들에 대한 평면(plane), 또는 직선(Line)이 있을 수 있지만 이들은 원점을 지나지 않는다. 따라서 0이 아닌 임의의 벡터 b에 대한 해의 벡터 공간은 존재하지 않는다. 

 

 

 

아래는 위의 Null space를 그리기 위한 MATLAB 코드이다. 

참고로 MATLAB에서 Null space를 구하기 위한 커맨드는 "null(A)" 이다. A는 임의의 rectangular 행렬이다. 

이때 계산되는 Null space는 Normalize가 된 null space가 나온다. 즉 위의 A의 Null space는 x=[1 1 -1]T인데 이 xx의 norm으로 나눠준 결과, 즉 x의 크기가 1이 되도록 만들어진 결과가 나온다. 아래 코드를 실제로 돌려서 확인해보자. 

 

 

 

 

 

3. 마치며

 

우리는 이번 포스팅에서 벡터 공간(vector space)과 부분 공간(subspace)에 대해 공부하였다. 이들 공간을 정의하는 법에 대해 배웠으며 임의의 행렬 A에 대한 부분 공간인 column space를 정의하는 법을 배웠다. column space를 정의하기 위해선 각 column들의 선형 결합(Linear Combination)을 통해 정의할 수 있으며, column간 독립성(Independency)의 확인을 통해 전체 공간에서 column space의 형태를 파악할 수 있었다. 

우리는 또한 임의의 선형 방정식(Linear Equation) Ax=b 에서 b=zero vector일 때, 즉 Ax=0의 해 집합인 Null space에 대해서 공부하였다. Null space는 column space와는 완전히 다른 공간이며 Ax=0을 만족시키는 모든 해들이 이루는 부분 공간(subspace)임을 배웠다. 다음 포스팅에서는 Ax=0에 대한 Null space를 계산하는 알고리즘에 대해 공부해 보도록 하겠다. 

 

+ Recent posts