Mathematics for machine Learning(머신러닝수학)
이번 글 Vector Space에 대한 강의 영상입니다. 내용 글은 아래에 이어집니다. 유튜브 '코딩하는 수학쌤' 검색해주시고 구독, 좋아요, 부탁드립니다!
- 이 글은 Mathematics for Machine Learning(Marc Peter Deisenroth 외 2)의 내용을 번역 및 재해석해서 작성한 글입니다. 위 책의 내용에 이해를 돕는 글을 추가로 첨부하였으며 완전한 번역본이 아님을 알려드립니다. -
지난 시간에 Reduced Row-Echelon Form을 활용하고, the minus 1 Trick까지 활용해서 연립방정식의 일반해를 어떻게 찾아줄 수 있는지를 살펴봤습니다.
이번 시간에는 첫번째로 n×n 행렬에서 역행렬이 존재할 경우 어떻게 역행렬을 찾을 수 있는지를 살펴볼 예정입니다. 그러면
로 연립방정식의 해를 금방 찾을 수 있기 때문입니다. 2차 정사각행렬의 경우 이전 고등학교에서 행렬을 배우셨다면 쉽게 역행렬을 찾을 수 있을 것입니다. 그런데 3차 이상의 경우에는 어떻게 구할 수 있을까요? 이를 구하기 위한 한 가지 방법이 바로 Gaussian Elimination입니다. 방법은 Reduced Row Echelon Form을 구하는 과정과 동일합니다.
이렇게 우리가 살펴본 대상인 행렬은 수학에서는 Vector의 한 예시입니다. 계산을 편하게 보게 해주고, 식을 편하게 계산하게 해주는 도구처럼 보이지만, 이 vector들은 수학적 구조가 잘 정의된 하나의 대수적 공간이거든요. 이러한 Vector Space를 더 잘 설명하기 위해 Group이라는 대수학적인 내용도 도입을 해줍니다. 대수학은 처음에는 한 두가지 연산과 정의가 반복되어서 딱딱해 보이지만 이를 잘 이해하고 나면 그 체계의 규칙과 구조를 이루는 기본 원리를 파악할 수 있습니다. 그러면 복잡해보이는 구조가 기둥을 기반으로 매우 쉽게 이해할 수 있게 됩니다. 마치 (1,0)과 (0,1)을 이해하면 좌표평면의 수많은 벡터를 이 2개의 조합으로 볼 수 있는 것처럼 말이죠. 이러한 Vector space를 이번 시간에 정의하고, 이 후 basis라는 것을 통해 공간을 simple하게 바라보는 시각을 가질 수 있게 될 것입니다.
역행렬을 쉽게 구하는 방법으로 Gaussian Elimination 방법(가우스 소거법)을 소개합니다. 예전에 Reduced row Echelon form을 만들 때 도입했던 augmented matrix(첨가 행렬)의 방식으로 계산을 하는데, 행렬의 우측에는 단위행렬을 써놓습니다. 그리고 Reduced row Echelon form을 만드는 방법대로 실시하면 됩니다.
이러한 가우스 소거법은 다음과 같은 단계에서 중요한 역할을 합니다.
- determinant를 계산할 때 (4.1장에서 다룹니다.)
- 벡터들이 일차 독립(linearly independent)인지를 판단할 때 (곧 2.5에서 다룹니다)
- 행렬의 rank를 계산할 때 (2.6에서 다룹니다)
- 벡터 공간의 basis를 판단할 때 (역시 2.6에서 다룹니다)
이러한 가우스 소거법은 역행렬을 계산할 수 있는 직관적인 방법을 제공하긴 하지만 행이 무수히 많아질 때는 엄청난 계산 과정이 필요합니다. 실제로 연립방정식은 Richardson method, Jacobi method 등의 방법에서 다루며 Stationary Iterative Method를 활용해서 풀이를 합니다. (이러한 수학을 수치해석 - Numerical Analysis라고 합니다. 여기에도 선형대수학을 활용합니다.) 이 부분에 대한 내용은 추가적으로 다루진 않겠습니다.
(행렬은 Vector Space의 한 예시. 더 일반적인 체계의 특성을 이해하면 행렬도 이해할 수 있습니다.)
자.. 우리 예전에 봤던 아래 그림에서 파란색 도형으로 둘러싼 부분을 지금까지 살펴보았습니다.
이번 글에서는 선형대수학에서 다루는 vector의 정의와 vector space에 대해서 살펴보려고 합니다. 이 때 좀 더 큰 틀에서 대수학(algebra)에서 등장하는 개념을 조금 첨가해서 살펴볼 예정입니다.
먼저 벡터(vector)의 개념에 대해서 정리하고 넘어가겠습니다. 벡터는
- 연산(덧셈)에 대해서 닫혀있고
- 스칼라곱에 대해서도 닫혀있는
대상을 의미합니다. 이를 좀 더 formal하게 정의하기 위해서 대수학에서 다루는 group(군)의 개념을 도입할 예정입니다. group 또한 컴퓨터 과학에서 중요한 역할을 합니다. 집합에 대한 기본적인 연산과 체계를 보기도 하지만 암호론, 그래프 정리 등에서도 활용이 됩니다.
[정의] Group
집합 G와 이 집합에 정의되어있는 연산 ⊗ : G×G → G 에 대해서 살펴보려고 합니다. ('⊗ : G×G → G'는 이항연산으로서 2개의 G의 원소에 작용하여 그 결과를 G에서 찾을 수 있는 연산을 의미합니다.)
위의 4가지 성질(닫혀있음, 분배법칙, 항등원, 모든 원소에 대하여 역원이 존재)을 만족할 때 그 집합을 연산 ⊗에 대하여 group이라고 합니다.
예를 들면 정수의 덧셈은
- 임의의 두 정수의 덧셈 결과는 정수 (닫혀있음)
- 결합 법칙 : (a+b)+c=a+(b+c) 성립
- 항등원 : 0은 모든 정수 x에 대하여 x+0=0+x=x 성립
- 역원 : 임의의 정수 x에 대하여 (-x)는 정수이고 x+(-x)=0이 됨.
따라서 정수는 덧셈에 대하여는 group이 됩니다. 하지만 곱셈에 대하여서는 group이 되지 못하는데, 그 이유는 곱셈에 대하여서는 역원이 존재하지 않기 때문입니다.
특히 group G의 임의의 x, y에 대하여 x⊗y=y⊗x가 보장될 경우 (즉 연산에 대하여 교환법칙이 성립할 경우) 이를 abelian group 이라고 합니다. (아벨군, commutative group이라고도 해서 가환군이라고 한글로 번역하더군요..) 아래의 예시를 한 번 살펴보세요. (참고로 N0는 자연수에 0을 추가한 집합입니다.)
위의 예시들의 내용은 영상을 참고하셔서 살펴보시면 좋겠습니다. 벡터 공간부터는 다음 시간에 정의를 훑어보도록 하겠습니다.