Linear Algebra (3)
글을 시작하기에 앞서 해당 글은 Marc Peter Deisenroth, A. Aldo Faisal, Cheng Soon Ong의 저서인 mathematics for machine learning을 바탕으로 요약 및 정리한 글임을 알려드립니다.
벡터 공간 (Vector Spaces)
이전 글에서도 봤듯이, 선형 방정식은 매트릭스-벡터 형태로도 표현될 수 있다. 이번 글에서는 벡터들이 존재하는 벡터 공간에 대해서 알아볼 것이다.
시작하기에 앞서 벡터의 특징을 간단하게 정리해보자. 벡터는 서로 더할 수 있으며, 스칼라를 곱할 수 있다. 또한 사칙연산 이후 결과도 벡터로 도출된다. 이런 벡터들의 연산이 가능한 공간을 벡터 공간이라고 한다. 기본 지식은 이 정도면 충분하다. 지금부터는 요소들(elements)의 집합인 군(group)의 개념과 요소들의 구조를 저장하는 작업에 대해서 살펴볼 것이다.
군 (Groups)
군(group)은 컴퓨터 과학에서 중요한 역할을 한다. 집합 작업에 대한 프레임 워크를 제공할 뿐만 아니라 암호기법, 코딩 이론, 그래픽에서도 많이 사용된다.
집합 \(\mathcal G\)와 연산자 \(\otimes\)를 사용하여 생각해보자. \(\mathcal G \times \mathcal G \rightarrow \mathcal G\)의 수식은 \(\mathcal G\)로 정의된다. 이와 같이 아래의 조건들을 모두 만족한다면 \(G := (\mathcal G, \otimes)\)를 군(group)이라고 정의한다.
- 집합 \(\mathcal G\)는 연산자 \(\otimes\)에 닫혀 있다.
- \(\forall x, y \in \mathcal G : x \otimes y \in \mathcal G\)
결합 법칙 : \(\forall x,y,z \in \mathcal G: (x\otimes y)\otimes z = x\otimes (y\otimes z)\)
항등원(neutral element): \(\forall x \in \mathcal G \exists e \in \mathcal G: x \otimes e = x \ and \ e \otimes x = x\)
역원(inverse element): \(\forall x \in \mathcal G \exists y \in \mathcal G: x \otimes y = e \ and \ y \otimes x = e\)
Note 역원은 연산자 곱(\(\otimes\))에 대해서만 정의되었기에 \(\frac{1}{x}\)가 필요하지는 않다. 또한 만약 '교환 법칙(commutative)'인 \(\forall x,y \in \mathcal G : x \otimes y = y \otimes x\)를 추가적으로 포함한다면, \(G := (\mathcal G, \otimes)\)은 '아벨군(isanAbelian group)'이라고 한다.
지금까지 군의 정의에 대해서 살펴보았다. 이제 아래의 예시들이 그룹인지 아닌지 구분해보자.
\(\mathbb{Z}\) : 정수, \(\mathbb{N}\) : 자연수, \(\mathbb{R}\) : 실수
\((\mathbb{Z}, +)\)는 그룹이다. \(\rightarrow\) 모든 정수의 합은 정수이다.
\((\mathbb{N}_0, +)\)은 그룹이 아니다. \(\rightarrow\) 항등원 0은 포함하지만 역원이 포함되지 않았다.
\((\mathbb{Z},\cdot)\)은 그룹이 아니다. \(\rightarrow\) 항등원 1은 포함하지만 결과값 1을 반환하는 역원이 포함되지 않았다.
\((\mathbb{R},\cdot)\)은 그룹이 아니다. \(\rightarrow\) 실수 중 하나인 0은 역원을 포함하지 않는다.
\((\mathbb{R}\) {0}, \(\cdot)\)은 아벨군이다. \(\rightarrow\) 0을 제외한 실수는 아벨군의 모든 요건을 충족한다.
\((\mathbb{R}^n, +),(\mathbb{Z}^n, +),n \in \mathbb{N}\)은 \(+\)가 성분별로 정의된 경우에 아벨군이다.
\((\mathbb{R}^{m \times n},+)\), \(m \times n\) 행렬은 성분별로 더했을 때 아벨군이다.
\((\mathbb{R}^{n\times n}, \cdot)\)인 경우를 예시를 통해 확인하자. \(n \times n\) 행렬의 곱은 다음 식으로 정의된다.
\[ c_{ij} = \sum_{l=1}^n a_{il}b_{lj}, \qquad i = 1,\dots,n,\quad j = 1,\dots,n.\]
위 식에 따르면, \(n \times n\) 행렬의 곱은 \(n \times n\) 행렬의 형태이기에 곱셈에 닫혀 있고 결합 법칙도 성립한다. 또한 항등 행렬인 \(I_n\) 또한 곱셈 결과가 \(n \times n\) 행렬을 만족하기에 성립한다. 마지막으로 해당 행렬이 가역행렬이라서 역행렬이 존재한다면, 그 역행렬 또한 \(n \times n\) 행렬형태이다. 위 조건을 모두 만족하기에 \((\mathbb{R}^{n\times n}, \cdot)\)는 군이라고 할 수 있으며, 이를 '일반선형군(general linear group)'이라고 부른다.
일반선형군(general linear group)은 가역행렬 A가 \(\mathbb{R}^{n \times n}\)에 포함될 때, 행렬곱셈에 대한 군을 의미하며, 기호는 \(GL(n,\mathbb{R})\)을 사용한다. 행렬곱은 교환법칙이 성립하지 않기 때문에 일반선형군은 아벨군이 아니라는 점을 기억하자.
벡터 공간 (Vector spaces)
이전까지는 집합 \(\mathcal G\)와 \(\mathcal G\) 요소끼리의 내부 연산에 대해서 알아보았다. 지금부터는 집합 '내부 연산자(inner operation)'와 집합끼리의 '외부 연산자(outer operation)' 모두 살펴볼 것이다.
먼저 벡터 \(x \in \mathcal G\)가 내부 연산자로 \(+\)이 사용하고, 외부 연산자로 \(\cdot\)을 사용하여 \(\lambda \in \mathbb{R}\)과 곱한다고 가정하자. 이때 우리는 내부 연산을 덧셈의 형태로, 또 외부 연산을 스케일링(스칼라 곱)으로 생각할 수 있다. 각 연산들은 서로의 결과에 어떠한 영향도 주지않는다는 점을 기억하자.
실제 값의 벡터 공간 \(V = (V,+,\cdot)\)은 집합 \(V\)와 두 연산자를 의미한다.
\[+: V \times V \rightarrow V\] \[\cdot : \mathbb{R} \times V \rightarrow V\]
- \((V,+)\)은 아벨군이다. (교환 법칙 성립)
- 분배 법칙: \(\forall \lambda \in \mathbb{R}, x,y \in V: \lambda\cdot(x+y) = \lambda\cdot x + \lambda\cdot y\) \(\forall\lambda,\psi \in \mathbb{R}, x \in V (\lambda + \psi)\cdot x = \lambda\cdot x + \psi\cdot x\)
- 결합 법칙 (외부 연산자): \(\forall\lambda \in \mathbb{R}, x \in V: \lambda\cdot(\psi\cdot x) = (\lambda\psi)\cdot x\)
- 외부연산자에 대해서는 항등원이 존재한다: \(\forall x \in V: 1 \cdot x = x\)
집합 \(V\)에 속하는 요소인 \(x\)는 벡터이다. 따라서 \((V,+)\)의 항등원 또한 영벡터 \([0,\dots,0^T ]\)이다.