이번에 이야기 할 주제는 벡터 공간(Vector Spaces)이다. 

벡터는 알겠는데(크기와 방향을 가지는 물리량.. 이라고 중,고등학교때 다들 배웠을 것이다) 공간이 붙으니까 뭔가 거창해보인다. 

그렇다면 이 벡터 공간이라는 놈은 어떻게 정의할 수 있을 까? 또 그 공간안에서 우리는 무엇을 할 수 있을까?

미리 이야기 하자면, 이전 포스팅(Lecture 1 참고)에서 언급했던 선형 결합(Linear Combination)을 미리 숙지하면 이번 포스팅을 이해하기 좋다.

지금부터 벡터 공간에 대해 알아보자. 

 

 

 

1. 벡터 공간(Vector Spaces)

 

 

- 2-dimensional vector space: 

 

벡터 공간에서 공간(Spaces)이란 단어에 대해 생각해보자. 공간이란 무엇인가? 

 

다수의 벡터가 있고, 이 벡터들이 모여 하나의 공간을 형성하는 것이다. 그러나 아무 벡터나 허용 되는 것은 아니다. 이 공간상에 존재하는 벡터들은 서로가 서로에게 더해질 수 있고, 임의의 숫자가 각각에 곱해져서 각 벡터의 길이가 늘어날 수도 있다. 즉 

선형결합(Linear Combination)연산이 같은 공간상에 존재하는 벡터들 사이에 가능해야 한다. 

 

예를 들어서 설명을 해보자. x축과 y축으로 이루어진 2차원의 벡터 공간을 생각해보자. 이를 아래와 같이 정의할 수 있을 것이다. 

 

 

R의 지수 부분의 숫자는 차원을 의미한다. 이 2차원 공간상에 존재하는 모든 실수(real number)벡터들의 집합을 의미한다. 여기에 포함되는 벡터들은 무수히 많을 것이다. 그 중에 몇 가지만 나열해보자. 

 

 

[3, 2]는 x축으로 3만큼, y축으로 2만큼 간 한 점을 원점으로부터 가리키고 있는 벡터이다. 

[0, 0]도 하나의 벡터가 될 수 있나? 라고 생각할 수도 있을 것이다. 그러나 어쩌면 벡터 공간을 정의하기 위해 가장 중요한 벡터가 바로 영 벡터이다. 차차 설명하겠다. 

[pi, e]는 그 값이 대략 [3.14, 2.718]가량 된다. 역시 생각할 수 있는 벡터 중 한 가지이다. 이 벡터들을 실제로 공간상에 표현해보자.

 

 

 

 

위에서 언급한 벡터들이 좌표 평면상에 표현되었다. 여기서 영벡터 [0 0]는 실제로 표현되지는 않았지만 분명히 이 평면상에 존재하는 하나의 벡터 원소이다. 

 

우리가 흔히 알고있는 x축과 y축은 2차원을 구성하는 각각 첫 번째 컴포넌트(component)와 두 번째 컴포넌트이다. 
이와 같이 x와 y 두 가지의 컴포넌트들로 구성되는 벡터 공간을 x-y평면(Plane)이라 한다. 이것이 2D벡터 공간(space)이라 불리는 이유는 x와 y 두 가지 컴포넌트들로 구성된 모든 벡터들이 이 공간상에 존재할 수 있기 때문이다.
공간(space)이란 말을 쓰기 위해선 하나, 혹은 몇 개의 벡터가 아니라 무수히 많은(무한대의) 벡터들이 공간이라 정의된 영역에 존재할 수 있기 때문이다.

 

 

어쩌면 영벡터[0 0]는 필요 없지 않나요? 라고 생각할 수도 있다. 그러나 영벡터도 공간을 이루기 위해서 반드시 필요하다. 왜냐하면 벡터 공간내에서 존재하는 모든 벡터들은 선형 결합(Linear Combination)을 통해 만들어질 수 있어야 한다. 가령 2차원 공간에서 영벡터를 제외시킨다고 가정해보자. 이때 아래와 같은 선형결합을 할 경우엔 그 식이 성립하지 않게 된다. 

 

 

영벡터가 존재하지 않고선 위의 식이 성립할 수 없게 된다. 이와 같이 모든 차원의 벡터 공간은 반드시 영벡터를 포함해야 한다. 

 

 

- 3, and n-dimensional vector space:

 

3차원 벡터 공간을 살펴보자. 2차원에 비해 벡터의 컴포넌트 한 개가 더 추가된 것일 뿐 기본적인 개념은 똑같다. 3개의 실수(real number) 컴포넌트들로 구성된 벡터들로 이루어진 공간이다. 이를 조금 다르게 표현해보면...

"3 개의 실수 컴포넌트(x, y, z)로 정의할 수 있는 모든 벡터들이 존재할 수 있는 공간"이라 할 수 있겠다. 

물론 실수 뿐만 아니라 허수(imaginary number)로 이루어진 벡터 공간도 있지만 그건 나중에 다루도록 하겠다. 결국 3차원 공간은 아래와같이 정의된다. 

 

 

 

3차원 벡터의 원소는 당연히 아래와 같을 것이다. x, y, z의 3개의 컴포넌트로 구성되어 있다. 

 

 

좀 더 확장해서 생각해보면 벡터는 3차원 벡터 뿐만 아니라 4차원, 5차원, .. n차원 벡터가 있을 수 있다. 물론 시각적으로 표현이 가능한 차원은 3차원이 한계이다. 그러나 이론적으로 3차원 이상의 n차원 벡터는 존재할 수 있으며 2차원 및 3차원 벡터에서 보였던 선형 결합 등등의 관련된 연산도 가능하다. 따라서 우리는 이러한 벡터 공간을 n차원으로 확장하여 정의할 수 있다. 

 

 

 

 

 

 

 

 

 

2. 부분 공간(Subspace)

 

우리는 앞서 같은 공간상에 있는 벡터들은 동일한 공간에 존재하는 다른 벡터들의 선형 결합에 의해 정의될 수 있어야 한다고 했다. 즉 어떤 벡터에 일정 상수값을 곱해 scale(길이)을 늘려주거나, 다른 벡터를 더해주었을 때 그 결과가 같은 공간에 존재해야 한다. 그런데 과연 항상 이러한 경우만 존재할까? 아래의 벡터 공간이 성립하지 않는 경우의 예를 보자. 

 

아래의 2차원 공간에서 1사분면(x축 +방향, y축 +방향)만 취한다고 가정해보자. 

 

 

 

즉 우리는 2차원 공간 전체 중에서 1/4의 영역인 1사분면만 가질 수 있다고 가정해보자. 먼저 이 공간내의 다른 벡터와의 덧셈 연산에 대해서 살펴보자. 1사분면 공간내의 어떠한 벡터끼리 덧셈을 해도 그 결과가 1사분면에 위치하는가? 답은 Yes이다. 아래를 보자. 

 

덧셈 연산에 "닫혀"있다.

 

 

1사분면 내의 임의의 벡터 v1(Red)v2(Green)를 더했다. 결과 벡터(v1+v2)는 여전히 1사분면에 위치해 있다.

여기서 v1과 v2는 1사분면 공간 내의 원소들이기 때문에 무조건 x와 y컴포넌트가 양의 값을 가진다. 따라서 이 공간 내의 어떤 벡터끼리 더해도 그 결과 벡터는 여전히 1사분면에 위치할 수밖에 없다. 이러한 경우 우리는 1사분면의 벡터 공간은 덧셈 연산에 대해 "닫혀있다(closure)"라고 한다. 

 

 

선형 결합이라 함은 벡터끼리의 덧셈과, 각 벡터에 어떤 scale값을 곱해주는 곱셈연산이 있다. 이번엔 곱셈 연산이 성립하는지를 알아보자. 1사분면 벡터들에 대해 임의의 스케일 값을 곱했을 때 그 결과벡터가 여전히 1사분면에 위치해 있는가? 답은 No이다. 역시 아래 예를 보자. 

 

곱셈 연산에 "닫혀있지않다"

 

 

1사분면의 임의의 벡터 v에 임의의 상수 2를 곱해서 벡터의 길이를 늘렸다. 이때 2v는 여전히 1사분면에 위치해 있다. 그러나 문제는 그 스케일의 방향이다. 즉 반대 부호인 -2을 곱했을 경우 이 결과 벡터인 -2v는 1사분면을 벗어나게된다. 따라서 1사분면 공간의 벡터에 대해 곱셈 연산은 "닫혀있지않다(not closure)"

 

이 경우, 우리는 1사분면을 벡터 공간이라고 정의 할 수 없다. 덧셈에는 닫혀있으나, 곱셈에는 닫혀있지않기 때문이다. 

 

 여기서 우리는 한 가지 결론을 얻을 수 있다. 벡터 공간을 정의하기 위해 필요한 규칙이 있다. 바로 벡터 공간내의 벡터들은 서로 더하고 임의의 scale상수를 곱해도 그 결과 벡터가 해당 공간내에 존재해야 한다. 즉 임의의 차원의 벡터 공간이 성립하기 위해선 선형 결합(Linear Combination) 연산에 대해 성립하고 닫혀있어야 한다

 

 

 

 

 

 

 

 

- R2안의 벡터 공간, (Subspace of R2):

 

위의 1사분면의 예를 다시 생각해보자. 1사분면은 분명히 2차원 공간내에 존재한다. 그러나 선형 결합에 대한 규칙이 성립하지 않기 때문에 벡터 공간, 혹은 부분 공간이라고 할 수 없다. 그렇다면 2차원 공간에 포함되면서도 선형 결합 규칙이 성립하는 작은 공간은 없을까? 이를 좀 더 일반적인 시각으로 봤을 때, 임의의 n차원 공간에 포함되면서 n차원 벡터들에 대한 선형 결합 규칙이 성립하는 작은 공간은 없을까? 

 

임의의 n차원 공간에 대해, n차원 공간에 포함되면서 n차원 벡터들에 대해 선형 결합 연산이 성립하는 작은 공간을 우리는 부분 공간(Subspace)라 부른다. 즉 부분 공간 안의 벡터들끼리는 안전하게 선형 결합 연산을 할 수 있어야 한다. 

 

결국 이 부분 공간이라는 것은 크게는 n차원 공간에 포함이 되고, 부분 공간내의 벡터들을 활용해 선형 결합 연산을 수행했을 때 그 결과 벡터가 여전히 부분 공간에 존재할 경우(정확하게는 n차원이 아닌 n차원 안의 부분 공간에 존재해야 함) 성립한다. 

 

글 만으로 이해하기는 좀 어려울 것이다. 아래의 부분 공간에 대한 예를 위에서와 마찬가지로 2차원 공간에서 설명해보자. 아래 그림을 보자. 

 

 

위 그림에서 벡터 v가 2차원 공간의 어떤 부분 공간(subspace)에 위치해 있다고 가정하자. 이 부분 공간이 진짜라면, 위의 벡터 v말고도 다른 벡터들이 부분 공간안에 더 존재해야 한다. 다른 벡터라고 한다면 가령 임의의 상수를 곱한 벡터들이 될 수 있겠다. 2, 3, 혹은 -1/2과 같은 상수들 말이다. 그렇게 임의의 상수들을 더한 것들을 나열해보면 아래와 같이 될 것이다. 

 

 

 

 

즉 이 부분공간에는 빨간색 벡터 v말고도 주황색 벡터 2v, 보라색 벡터 3v, 초록색 벡터 -1/2v 등이 존재한다. 심지어는 0을 곱한 영벡터(zero vector)도 있다. v에 0을 곱한 영벡터의 경우 [0 0]이 되는데 이러한 영벡터도 이 부분 공간의 원소에 포함된다. 이 외에도 수 많은 벡터들이 존재할 수 있다. 이러한 수많은 벡터들을 나열한 것이 바로 직선 l이다. 결국 이 부분 공간은 직선(Line) l 이 된다. 

 

곱셈 연산에 대한 성립은 확인을 했고, 이제 덧셈 연산에 대해 확인해보자. 이 부분 공간인 직선 l에 존재하는 어떠한 벡터들끼리 더해도 같은 공간에 존재하는가? 답은 YES임을 쉽게 유추할 수 있다. 따라서 이 직선은 R2의 부분 공간이 맞다.

 

 

여기서 이러한 의문이 들 수 있다. 그렇다면 R2에 존재하는 모든 직선(line)은 전부 부분 공간(subspace)이 될 수 있을까? 아래 그림을 보자. 아래 그림에서 점섬으로 표현된 직선을 생각해보자. 이 직선은 R2의 부분 공간이 될 수 있을까?

 

 

 

위의 직선을 실제 벡터들로 표현하면 아래 그림과 같이 된다. 

 

 

 

위의 직선 l'은 R2의 부분 공간인가? 정답은 No다. 결론부터 말하자면 R2에 존재하는 직선이 부분 공간이 되기 위해선 반드시 원점인 zero vector를 지나가야 한다. 왜 그런지 한 번 살펴보자. 

부분 공간이 되기 위해선 어떠한 수를 곱하거나, 같은 공간내의 어떠한 벡터들을 더해도 그 결과가 부분 공간내에 존재해야 한다. 위 그림에서 빨간 벡터에 0을 곱했을 때, 그 결과가 점선으로 표현된 직선 l'에 존재하는가? 혹은 주황색 벡터에 보라색 벡터를 더했을 때 그 결과가 직선 l'에 존재하는가? 두 경우 모두 틀리게 된다. 다른 어떠한 상수를 곱해도, 벡터를 더해도 결과는 마찬가지 이다. 따라서 위의 직선은 R2의 부분 공간이 아니다. 

 

 

결국 임의의의 부분 공간(subspace)은 "반드시 zero vector를 포함해야 한다!" 

 

왜냐하면 어떠한 벡터도 영을 곱하면 zero vector가 되기 때문이다. 

 

 

그렇다면 2차원 평면인 R2에서 가능한 부분 공간은 어떠한 것들이 있을까? 한 번 나열해보자. 

 

 

1번은 R2 그 자체가 하나의 부분 공간이 될 수 있다는 말이다. 

2번의 경우 앞에서 언급했듯 임의의 직선(Line)인데, 원점을 반드시 지나는 경우이다. 원점만 지난다면 어떠한 직선도 2차원 평면의 부분 공간이 될 수 있다. 

 

마지막 3번은 전체 평면도, 특정 직선도 아닌 바로 영벡터(zero vector) 그 자체이다. 즉 한 점 공간(point space)이다. 이 zero vector자체가 부분 공간이 성립되는 이유는 부분 공간에 대한 모든 조건을 만족하기 때문이다. 

- 일단 R2에 속해있다. 

- 또한 어떤 상수를 곱해도 zero vector이다. 

- 그리고 zero vector의 원소들인 zero vector들 끼리 더해도 여전히 zero vector이다. 

 

따라서 임의의 Rn공간에서 zero vector 자체는 항상 Rn의 부분 공간이 된다. 

 

 

 

그렇다면 3차원 공간 R3의 부분 공간은 어떠한 것들이 될까? 

 

 

등이 될 것이다. 3차원 공간 그 자체, 원점을 지나는 평면, 원점을 지나는 직선, 그리고 영벡터 그 자체이다. 

 

 

 

 

 

 

 

 

 

3. 행렬의 부분 공간(Subspace of Matrix)

 

이제 실질적인 문제를 살펴보자. 우리는 앞서 어떤 공간에서 부분 공간(subspace)을 정의하는 법을 배웠다. 이러한 부분 공간은 어떤 임의의 행렬(Matrix)에서도 끄집어낼 수 있다. 지난 포스팅(Lecture 5-1)에서 정의했던 행렬을 다시 살펴보자. 

 

 

우리는 위의 행렬 A로 부터 부분 공간을 뽑아낼 수 있다. 바로 column 공간(column space)이다. 이는 매우 중요한 부분 공간이며 행렬로부터 뽑아내는 첫 번째 부분 공간이다. A의 column은 R3에서 정의될 수 있다. A의 부분 공간을 정의하기 위해선 column 요소끼리 더하고, 각 column에 임의의 상수를 곱해서 만들면 된다. 즉 A의 column원소끼리 정의할 수 있는 모든 선형 결합(Linear Combination)을 통해 A의 부분 공간을 정의한다. 

 

임의의 행렬 A에서, 모든 column의 선형 결합(Linear Combination)은 부분 공간(subspace)을 형성한다. 
우리는 이를 column space라 부르고 C(A)로 쓴다. 

 

위의 정의는 이번 포스팅에서 어쩌면 가장 중요한 개념이다. 잘 기억해 두도록 하자. 

 

그럼 실제로 공간상에서 어떻게 표현되는지 구현해보도록 하자. 아래 그림은 위의 행렬의 column에 대한 벡터들을 3차원 공간상에 표현한 것이다. 

 

 

 

 

이제 아래와 같이 두 column 벡터들에 임의의 상수를 곱하고 이를 더해서 선형 결합을 한 결과를 그려보도록 하자. 

 

 

 

우선 10개의 임의의 선형 결합을 한 결과이다. 

 

nVec = 10

 

 

여기 저기 파란색 벡터들이 생겨나긴 했는데, 이것만 가지고는 뭐가 어떻게 되는지 파악하기 힘들 것이다. 이번에는 개수를 100개로 늘려서 그려보기로 하자. 

 

nVec = 100

 

 

뭔가 형상이 보이는가? 약간 평면이 나올 것만 같은데.. 개수를 좀 더 늘려보자. 이번엔 500개다. 

 

 

 

 

nVec = 500

 

 

위의 첫 번째 그림은 아까와 동일한 각도에서 바라본 것이다. 평면 같기는 한데 확인을 위해서 돌려서 봤다. 역시 평면의 형태가 보인다. 평면의 형태는 어떻게 보이는가? 평행사변형 모양이 보이지 않는가? 여기서 무엇을 알 수 있는지 아는 사람은 보일 것이다 ㅎㅎ

 

결론적으로 행렬 A의 column들의 선형 결합을 통해 우리는 R3의 부분 공간이 평면(plane)이라는 것을 눈으로 확인할 수 있었다. 부분 공간을 정의하기 위해선 임의의 행렬 A의 column원소들의 가능한 모든 선형 조합을 생각해보면 된다

 

아래는 위 선형 결합을 구현한 코드이다. 

 

 

 

 

 

4. 마치며..

 

이번 강좌에선 임의의 차원의 공간에서 부분 공간(subspace)을 정의하는 방법을 배웠다. 부분 공간을 정의하기 위해선 특정 조건을 만족해야 한다. 부분 공간내 모든 벡터 원소들 끼리 선형 결합 연산이 성립이 되어야하고, 모든 부분 공간은 반드시 영벡터를 포함해야 한다. 

우리는 또한 어떤 행렬로부터 column space를 정의하는 방법을 배웠다. 어떤 행렬의 부분 공간을 정의하기 위해선 row, 혹은 column원소들의 가능한 모든 선형 결합을 통해 정의할 수 있다. 이것이 이번 포스팅의 핵심 내용이다. 잘 기억하도록 하자. 

 

이상으로 Lecture 5를 마칩니다.

 

+ Recent posts