지난번 포스팅에서 선형독립(linearly independent)과 선형종속(linearly dependent), 기저(base, basis)에 대해서 알아보았습니다

 

이번 포스팅에서는 벡터공간(vector space), 벡터 부분공간(vector subspace), 생성공간(span, space spanned by), 차원(dimension)에 대해서 소개하겠습니다. 이들은 선형대수를 공부하는데 있어서 기본개념이 되며, 기저와 차원을 이해하기 위해서는 부분공간을 알고 있어야 합니다.

 

기계학습에서도 벡터공간에 대한 개념이 나오므로 공부해놓으면 좋겠지요. 가령, 기계학습 공부하다보면 SVM(Support Vector Machine)에서 최대 마진 초평면(MMH, Maximum Margin Hyperplane) 이라고 해서 두 범주를 최대로 나누어주는 평면(Hyperplane)을 찾게 되는데요, 선형대수와 최적화에 대해서 잘 알지 못하면 알고리즘에 대해 깊이 있게 이해하기가 힘듭니다.

 

그럼 순서대로 설명을 해보겠습니다.

  • 벡터공간(vector space)

같은 수의 성분을 가지는 벡터들로 이루어진 공집합이 아닌 집합 V가 있을 때,

- V에 속하는 임의의 두 벡터 ab의 일차결합이 αa + βb (α, β 는 임의의 실수)가 또한 V에 속하고

- 벡터에 대한 덧셈과 스칼라곱이 아래의 8가지 벡터의 합과 스칼라곱에 대한 연산법칙을 만족하면 집합 V를 벡터공간(vector space) 또는 선형공간(linear space)이라고 하며, 그 원소를 벡터(vector)라고 합니다.

 

 벡터의 합에 대해

   (1) abba   : 교환(commutative)법칙

   (2) (a + b) + ca + (b + c)   : 결합(associative) 법칙

   (3) a + 0 = a : 항등원

   (4) a + (-a) = 0 : 역원

 

  스칼라곱에 대해

   (5) c(a + b) = ca + cb : 분배법칙

   (6) (c + k)a = ca + ka : 분배법칙

   (7) c(ka) = (ck)a

   (8) 1a = a 

 

 

"벡터는 좌표축과 무관한 개념입니다. 벡터의 "방향"을 놓고 보면, 이 우주에서 유일한 절대 좌표가 존재하지 않는 한 방향이 무엇인지 정의하기가 쉽지 않습니다. 반면에, 두 벡터의 방향이 같다는 것은 한 벡터의 길이를 적당히 늘여 다른 벡터와 일치하게 만들 수 있는 것으로 간단히 정의할 수 있습니다. 이런 점에서 벡터를 실수배하는 것은 벡터의 크기와 방향을 추상화하는데 있어 중요한 개념입니다. 벡터를 추상화하는데 있어 (1) 두 벡터의 합, (2) 벡터의 실수배, 이 두가지 연산이 가장 중요합니다."

(출처 : "8일간의 선형대수학", 박부성 지음, 경문사)

 

이게 왜 중요한지, 무슨 의미가 있는지 의아하실 수도 있는데요, 아래 벡터와 벡터공간에 대한 역사에 대한 인용글을 한번 보시지요.

 

수학에서 방향과 크기를 가진 양으로서 벡터를 다루게 된 것은 복소수에 대한 연구에서 비롯되었다. 복소수를 2차원 공간의 한 점으로 생각할 수 있다는 아이디어는 노르웨이의 베셀(Wessel)에서 비롯되어, 가우스를 비롯한 수많은 수학자들에 의해 크게 발전하였다. 이후 복소수를 확장하여, 3차원 공간의 한 점을 나타내는 새로운 수체계인 사원수(quaternion)를 구성하는 데 성공한 수학자는 아일랜드이 해밀턴(Hamilton) 이었다. 이후 그라스만(Grassmann), 페아노(Peano) 등에 의해 추상적인 벡터공간(vector space)의 개념이 도입되었다.

... 중략 ...

이것은 벡터를 구체적으로 정의한 다음 그 모임으로 벡터공간을 정의하는 보통의 관점을 뒤집은 것이다. 어떤 대상을 직접 정의하는 대신, 그 대상에 대해 성립해야 하는 연산을 통하여 거꾸로 대상을 정의하는 것은 혁명적인 관점 전환이라 할 수 있다. 한편 이 정의는 벡터의 크기를 정의하지 않는다는 점에서 "크기와 방향을 가진 양"이라는 고전적 의미의 벡터를 더 추상화한 것으로 생각할 수 있다

 

    - 출처 : "8일간의 선형대수학", 박부성 지음, 경문사

 

선형대수학이 이해하기 어려운 이유 중의 하나가 '추상화'된 정도가 심한 학문이기 때문일텐데요, 그게 수학의 역사에서는 혁명적인 관점의 전환이라고도 하는군요. 

 

 

  • 벡터 부분공간(vector subspace)

 벡터공간 V의 공집합이 아닌 부분집합 W가 벡터공간 구조를 가질 때, 즉 부분집합 W가 벡터공간 V에서 정의된 (1) 덧셈 연산과 (2) 스칼라곱 연산을 만족할 때, 그 부분집합 W를 벡터 부분공간(vector subspace)이라고 합니다.

 

좀 어렵지요? ^^' 한번더 풀어서 설명하자면 이렇습니다.

 

 

 

위에서 벡터공간(vector space) V의 부분집합 W가 위에서 설명한 (1) 덧셈 조건, (2) 스칼라배 조건을 모두 만족할 때 W를 부분공간(subspace)라고 했는데요, 이를 벤 다이어그램(venn diagram)으로 나타내보면 아래와 같습니다.

 

 

 

 

부분공간은 '원점을 지나는 직선'이나 '원점을 지나는 평면'(zero vector를 포함)인데요, 좀더 쉽게 설명하기 위해서 부분공간인 경우의 예를 들어보겠습니다. 아래 예는 '원점을 지나는 평면'인 부분공간 예가 되겠습니다.

 

 

 

 

좀더 확실한 이해를 돕기 위해 부분공간이 아닌 경우를 아래에 예로 들어보겠습니다.  부분공간의 2가지 조건이었던 (1) 덧셈 조건, (2) 스칼라곱 조건을 만족하지 않으면 부분공간이라고 할 수 없겠지요?  아래 예를 참고하시기 바랍니다.

 

 

 

 

  • 생성공간(span), 생성된 부분공간(space spanned by)

 성분의 수가 같은 벡터들 a(1), ..., a(n)이 주어졌다고 하고, 이들의 1차결합으로 표현되는 모든 벡터들의 집합을 이들 벡터들의 생성된 부분공간(space spanned by)이라고 합니다. 생성공간(span)은 그 자체로 벡터공간이 되며, 만일 주어진 벡터들 a(1), ..., a(n)이 1차독립이라면, 이 벡터들은 해당 생성공간의 기저가 됩니다.

 

무슨 말이가 어렵죠? ^^'

 

위의 a(1), ..., a(n) 벡터를 풀어서 설명해보면 아래와 같습니다.

 

 

 

 

이걸 예를 들어서 한번 더 풀어보겠습니다.  아래의 x1x2 평면(plane)은 vector(3, 0, 0)과 vector(0, 2, 0) 에 의해 생성된 R^3의 부분공간 (space spanned by (3,0,0), (0,2,0)) 이 되겠습니다. 당연히 아래 생성공간은 벡터공간이며, vector(3,0,0)과 vector(0,2,0)은 선형독립(1차 독립)이므로 이 두 벡터의 집합은 벡터공간의 기저(base)가 되겠습니다.

 

 

위의 예의 생성된 공간(span)은 기저의 원소(벡터)의 개수가 2개이므로 2차원(2 dimension)의 부분공간(subspace)이 된답니다.  차원의 개념은 아래 설명을 참고하세요.

 

 

 

  • 차원(dimension)

벡터공간 V에 속한 1차독립 벡터들의 최대수를 V의 차원(dimension)이라 부르고, dim V로 표기합니다. 여기서 벡터공간의 차원은 유한(finite)하다고 가정합니다.

 

W가 R^m의 부분공간이고, 벡터 a(1), a(2), ..., a(n) 이 W의 선형독립 원소라고 할 때, 기저의 원소이 개수를 부분공간 W의 차원이라고 합니다.  이를 좀더 쉽게 풀어서 쓰면 아래와 같습니다.

 

 

 

앞으로 선형사상을 공부하게 되면 n 차원의 상에 m*n 행렬을 곱해서 m차원의 상으로 바꾸는게 나옵니다. 예를 들면, 2차원 영화를 3차원 3D영화로 바꾼다거나, 3차원 3D영화를 2차원 2D영화로 영상을 바꿀 때 선형대수가 쓰인답니다. 물리학자들이 말하는 초끈이론에서는 11차원속에서 진동하는 미세한 에너지끈을 연구를 한다는것을 들어보신분도 있을텐데요, 3차원까지는 우리가 상상을 해도 4차원 이상이 되면 '도대체 4차원, 5차원, 6차원....11차원이 뭐지?'라고 갸우뚱할 분이 많을 것 같습니다. 

 

이세돌과 대국을 펼쳤던 알파고는 "19 x 19 바둑판의 각 칸마다 48차원의 특징점들을 적용하여 총 19x19x48=17328차원의 거대한 벡터를 입력값으로 사용하였는데, 이는 마치 이미지와 같은 고차원의 상태공간으로 볼 수 있다"(핸드폰 메모장에 적어놨던건데요, 출처 기억 못함... -_-;)고 하는군요. 

 

암튼 수학자들이 정의하는 차원은 위와 같습니다. m차원의 R^m 벡터공간의 부분집합 W의 원소가 n개 이면 W의 차원은 n차원이 된다. 헷갈리고 이해가 안된다면 위의 설명 한번 더 보시구요. ^^'

 

 

R 의 matrix() 함수를 사용해서 m*n 행렬(matrix)를 만드는 방법과, dim() 함수를 사용해서 차원(dimension)을 알아보는 방법은 아래와 같습니다.

 

 
> A <- matrix( 
+      c(1:12), # the data elements 
+      nrow=3,              # number of rows 
+      ncol=4,              # number of columns 
+      byrow = TRUE)        # fill matrix by rows
> A
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
> 
> dim(A)
[1] 3 4

 

 

 

다음 포스팅에서는 선형사상에 대해 알아보고, 그 다음으로 핵(kernel, Ker f), 상공간(Image, Im f), 차원정리(dimension theorem), 계수(rank)에 대해서 차례로 알아보겠습니다.

 

이번 포스팅이 도움이 되었다면 아래의 공감 ♡ 꾸욱~ 눌러주세요. ^^

 

 

Posted by R Friend R_Friend