9 minute read

들어가기 앞서…

데이터 사이언스 영역을 포함하여, 많은 학문에서 선형 대수를 잘한다 = 행렬 계산을 잘한다라고 인지하고 있습니다. 선형 대수는 무엇이고, 행렬은 무엇일까요? 서로가 어떤 관계가 있길래 사람들은 두개를 묶어서 이야기할까요? 이번 포스팅에서는 기초적인 선형 대수에 대한 내용과 행렬에 대해서 간단하게 설명하며, 특히 선형대수학에 대한 지식이 있으면 이해하기 쉽습니다.

Linear map

우선, 행렬과 벡터를 곱하는 것부터 생각을 해봅시다. 저희는 보통 행렬끼리도 곱셈을 하지만, 행렬과 벡터를 곱하기도 하죠. 다음과 같이 말이에요!

\[Ax\text{ for }A\in \mathbb{R}^{n\times m}, x \in \mathbb{R}^m\]

그러면 이 곱셈이 과연 어떤 것들을 의미를 할까요? 우선 간단하게 표현하기 위해 $A$를 다음과 같이 표시해봅시다.

\[A = (a_{ij})\]

그러면, 이제 $x$를 비교적 쉬운 벡터인 $e_i$로 두고 $Ax$를 계산해봅시다. 이는

\[Ax=(a_{jk})\cdot e_i=(a_{ji})\]

가 되겠네요. 그런데, 여기서 중요한 점은 행렬곱에 있어서 분배법칙 (distribution law)가 성립한다는 점이고, 임의의 벡터 $x$는 $e_i$의 선형합으로 나타낼 수 있다는 점이죠. 그렇다면, 조금 더 어렵게 해서, x를 다음과 같이 정의해봅시다.

\[x = c_1e_1+\cdots+c_me_m\]

그렇다면 $Ax$는 다음과 같이 써질 수 있습니다.

\[\begin{align*} Ax &= A(c_1e_1+\cdots+c_me_m) \\ &= c_1Ae_1+\cdots c_nAe_n \\ &= c_1(a_{j1}) + \cdots c_n(a_{jm}) \end{align*}\]

여기서 재밌는 부분은, $A$가 $x$를 어떤 값으로 보내는지는 중요해지지 않았습니다. 다만 $Ae_i$를 각각 어느 벡터로 보내는지만 알면, 자동으로 $x$를 어떤 값으로 보내는지 알게 됩니다. 다르게 말한다면, $Ae_i$가 정해짐에 따라 $A$가 유일하게 정의된다는걸 알 수 있습니다! 그렇다면, 이 $A$의 정체는 과연 무엇일까요? $A$를 어떤 함수로써 우리가 생각할 수 있수도 있지 않을까요? 그러면 $\mathbb{R}^m\to \mathbb{R}^n$으로 보내는 다음과 같은 함수 $F$를 생각해봅시다.

\[F(x) = Ax\]

이 함수의 경우에는 다음과 같은 좋은 성질을 만족하는군요. 다음과 같은 성질을 linear한 property라고 부릅시다.

\[F(x +ay) =F(x)+aF(y)\]

또한, 당연하게도 $A$가 행렬이기 때문에, $F(e_i)$들에 따라서 $F$함수가 정의됩니다. 그렇다면, 반대로 처음부터 linear한 property를 가지는 임의의 함수 $T$에 대해서도 생각해볼 수 있습니다. 보통 이러한 $T$를 linear function, 혹은 linear map이라고 부릅니다. 여기서는 굳이 $T$가 어떤 행렬곱으로 나타낼 수 있다고 따로 가정하지 않겠습니다.

\[T(x+ay) = T(x)+aT(y)\]

그러면, 얘도 마찬가지로 $T(e_i)$에 따라서 $T$함수가 정의될 수 있습니다. 어? $T$랑 $F$가 비슷하고, $F$는 $A$의 함수인데? 그러면 모든 linear map은 행렬로써 표현할 수 있는게 아닐까요? 그런데, 특정한 경우에서는 가능합니다! 바로 언제냐면, $T: \mathbb{R}^n\to\mathbb{R}^m$과 같이 유한차원 벡터를 유한차원 벡터로 보내주는 함수일때 가능한거죠. 즉, 행렬은 어떻게 보면 한 벡터를 다른 벡터로 옮겨주는 함수로 작용됩니다. 그렇다면 처음 옮기려고 하는 벡터는 어떤 공간안에 있었고, 옮겨진 벡터는 어느 공간 안에 있을까요? 우리는 이런 벡터들을 모아놓은 공간을 벡터 공간(vector space)이라고 부릅니다.

Vector Space

Vector space를 공부하신 분들은 알겠지만, vector space는 vector를 “깔쌈하게” 모아놓은 집합입니다. 단순히 집합은 아니고, 벡터 안에서 특정 “연산”이 가능해야 합니다. 대충 말하자면 벡터끼리의 곱셈을 제외한 벡터 연산 및 스칼라 연산 그 모든것이 닫혀있으면 vector space라고 부릅니다. 더 정확히 말하자면,

  1. vector끼리 더하고 빼도 vector
  2. vector를 scalar 곱을 취해도 vector

입니다. Vector space에서는 scalar를 Field 중 하나로 선택하기 때문에, 스칼라의 역원곱도 vector 안에 들어가있어야 합니다. Field가 뭐냐구요? 말하자면 긴데 간단히 말하면 실수같은거에요. 덧셈, 곱셈에 대해 닫혀있고 서로 분배법칙이 잘 작용하면 field (체)라고 부릅니다.

그렇다면 vector는 무엇일까요? Vector 자체는 사실 정의하기 어렵습니다. 왜나하면 정말 vector는 ‘무언가’거든요. 이 ‘무언가’에 스칼라곱을 적용하고 벡터 연산을 적용한게 vector space이기 때문에, 사실 정의를 하기 애매합니다. 대신 vector의 의미에 대해서는 사람들이 많이 생각하죠. 어, 그런데 여러분들은 $(1, 0, 3,2)$와 같이 실수를 모아놓은 애들을 vector라고 생각하잖아요? 그러면 정의된게 아닐까요? 정확히는 정의된건 아니고, 그냥 벡터 하나를 저렇게 좌표에서 표현한 것 뿐이에요. 정확히 $x=(1, 0, 3,2)$라는건 정말로 $x$가 저런 숫자로 구성되어있다는게 아니라, $x = 1e_1+0e_2+3e_3+4e_4$로 표현될 수 있다는 것을 간략하게 서술하는 것입니다. 이렇게 서술될 수 있는 이유는 바로 vector의 합연산 덕분이죠. 저런식으로 좌표를 잡아서 표현할 수 있는 애들을 vector space의 Basis 라고 표현을 하고, basis의 원소의 개수를 vector space의 차원이라고 정의를 내립니다.

그렇다면 정말 vector란 무엇일까요? 위에서도 언급했듯이, vector는 정의내릴 수 없지만, 의미는 파악할 수 있습니다. 만약 어떤 집합 안에 있는 원소가 실수곱을 해도 집합 안에 있고, 객체끼리 더해도 집합안에 있다면? 아 이거는 그 집합이 vector space이고 원소가 vector라는 합리적인 의심을 할 수 있습니다. 확률론에서 예시를 한 번 들어보죠.

\[\mathcal{R}=\{X: \mathcal{C}\to \mathbb{R}: \text{random variable}\}\]

이렇게 $\mathcal{R}$집합을 정의를 해봤습니다. 그러면 여기서 random variable $X$를 하나 끄집어 내볼까요? 얘에 대해서 $aX$와 같이 스칼라곱을 취해도 random variable이고, 또다른 random variable인 $Y$를 끄집어내서 $X+Y$와 같이 합해도 random variable이네요. 그렇다면 이녀석은 vector space임이 분명합니다. 실수를 스칼라로 가지는 vector space요! 하지만 안타까운점은 저런 random variable이 무수히 많다는 점이기 때문에, 유한차원 벡터공간은 아니네요.

다시, matrix

그래서 왜 갑자기 vector space로 이야기가 넘어왔느냐. 추상 대수학에서는 객체의 성질을 보존하는 매핑에 관심이 많습니다. 보통 준동형사상 (homomorphism)이라고 부르죠. 그렇다면, vector space에 대한 homomorphism이 뭘까요? Vector space의 성질이 뭘까요? 바로, 벡터끼리 더하는 것과 스칼라 연산을 취하는 것입니다. 그렇다면, 이것을 보존하는 mapping은 어떤 성질을 가져야 할까요? 느낌이 오시나요?

\[T(ax+y) = aT(x)+T(y)\]

이면 vector space의 성질을 보존하게 되는겁니다! 아니 근데 이거는 아까전에 봤던 linear mapping이잖아요? 맞아요. 바로 linear mapping이 vector space에 대한 homomorphism으로 작용하게 됩니다. 그런데 아까전에 우리가 linear mapping이면 행렬곱으로 생각할 수 있다고 했잖아요? 어? 그러면 vector space끼리의 보존함수는 행렬곱이네요? 즉, 행렬은 vector space간의 변환에 대해 기술하는 함수였습니다!

그렇다면 이제 실마리가 풀리는군요. 왜 linear algebra에서 행렬을 배우는지, 그리고 뜬금없이 갑자기 vector space를 배우는지, 모든 것이 풀렸어요. Vector space의 보존 함수는 linear mapping이고, 이는 행렬이다! 이 세가지 서로 달라보이는 키워드는 사실 모두 연관이 있었던거죠.

자 그렇다면, 이제 행렬을 어떻게 바라봐야할까요? 사실 그냥 그대로 똑같이 바라봐도 됩니다. 이렇게 vector space가 뭐니 그런게 실제 계산에서 뭐가 중요하겠어요. 그러나, linear algebra에서 배우는 이상한 명제, 정리, 증명등을 이해하기 위해서는 이러한 사실을 아는 것이 중요합니다. 예를 들자면, $A$가 symmetric matrix일때 orthogonal decomposition이 가능하다는 fact는 행렬 자체의 계산을 중점으로 둘 수 있지만, 사실은 선형 함수를 좋게 쪼갤 수 있고 이는 곧 vector space의 변환과 관련있다고도 볼 수 있습니다. 계산 자체로 의미를 두게 되면 할 수 있는 이야기가 별로 없지만, 후자로 생각하게 되면 수학적으로 더 많은 이야기를 할 수 있는 것이죠.

결론

행렬 계산 자체는 사실 별로 중요하지 않지만, 행렬을 통해서 의미있는 계산을 하는게 중요하다고 생각합니다. 특히, 행렬은 숫자 자체로도 생각할 수 있지만 어떤 함수로서 생각할 수 있고, 이는 고전적인 통계를 공부할 때 큰 도움이 될 수 있습니다.

여담으로, vector space에서는 scalar가 실수 혹은 복소수와 같은 field라고 했잖아요? 그런데 만약 이런 scalar가 field가 아니라 정수 등과 같이 곱셈에 대한 역원이 존재하지 않는 것들로 정의하게 된다면 어떻게 될까요? 이는 바로 module이라고 부릅니다. 또한, 벡터간의 곱셈도 닫혀있다면 어떻게 될까요? 이렇게 되면 그런 집합을 algebra over a field F라고 부릅니다. 만약 이런 것들이 알고 싶다면, 수학과 대학원을 가셔서 commutative algebra같은걸 수강하시면 됩니다 ㅎㅎ

Leave a comment