Contents
선형대수(Linear Algebra)는 수학의 한 분야이며, 공학 분야에서 많이 사용된다. 또한, 선형대수는 정수, 그래프, 논리 연산과 같은 구분되는 값을 가지는 대상을 연구하는 이산수학과 달리, 미적분학, 수치해석과 같이 연속적인 값을 다루는 분야와 같이 묶여 연속수학에 속한다.
기계 학습(Machine Learning)에서 사용되는 알고리즘을 이해하고 적용하기 위해서는 연속수학에 속하는 학문을 잘 알아야하며, 이번에는 선형대수에 대해서 다루어볼 것이다. 선형대수는 벡터 공간, 벡터, 선형 변환, 행렬 등을 연구하는 대수학의 한 분야이며, 선형대수에서 나오는 필수적인 주요 개념부터 차근차근 살펴보자. 목차는 다음과 같다.
변수 유형(Scalar, Vector, Matrix, Tensor)
1) 스칼라(Scalar)
스칼라는 크기만 존재하고 방향을 가지지 않은 물리량을 의미한다. 일반적으로 스칼라 변수를 사용할 때에는 해당 변수가 나타내는 수들의 유형도 같이 명시한다. e.g. $s \in \mathbb{R},\ n \in \mathbb{N}$
2) 벡터(Vector)
벡터는 크기와 방향이 모두 존재하는 값을 의미한다. 여러 개의 수를 특정한 순서로 나열한 값이며, 벡터 내에 있는 각 요소는 벡터 안에서의 색인(index)을 이용해 나타낼 수 있다. 벡터를 표현할 때에는 아래와 같은 방법으로 표현한다.
$ x = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ \vdots \\ x_n \end{bmatrix}$
3) 행렬(Matrix)
행렬은 수들을 2차원으로 배열한 것을 의미한다. 벡터에서 하나의 요소를 표현하기 위해서는 하나의 index를 이용해 표현하여야 했지만, 행렬의 경우 두 개의 index를 통해 표현해야한다. 만약 행렬 $\boldsymbol{A}$의 행이 m이고, 열이 n인 경우 $\boldsymbol{A} \in \mathbb{R^{m\times n}}$ 라고 표기한다. 행렬을 표현할 때에는 아래와 같은 방법으로 표현한다.
$\begin{bmatrix} A_{1,1} & A_{1,2} \\ A_{2,1} & A_{2,2} \end{bmatrix}$
4) 텐서(Tensor)
행렬은 2차원을 표현했지만, 텐서는 3차원의 배열을 표현할 때 사용한다. $\mathsf{A}$ 와 같은 글꼴로 표기한다. 텐서의 요소를 표현하고 싶을 땐, index를 하나 더 추가해서 $\mathit{A}_{i,j,k}$과 같이 표기한다.
지금까지 선형대수에서 사용되는 변수의 유형에 대해서 다루어보았다. 스칼라를 기준으로 점점 확장된다고 볼 수 있다. 모두 중요한 유형이지만 여기서는 행렬에 대해서만 다룰 것이다.
행렬(Matrix)
1) 행렬의 연산
- 전치(Transpose)
전치는 행렬을 다룰 때 많이 사용하는 연산 중 하나일 것이다. 전치를 하게되면 행렬의 행, 열이 서로 뒤바뀐 형태로 변환된다. 행렬 $\boldsymbol{A}$의 전치는 $\boldsymbol{A^T}$로 표기하고 정의는 다음과 같다.
\[ \boldsymbol{A^T}_{i,j} = \boldsymbol{A}_{j,i} \]
스칼라나 벡터에도 전치를 취할 수 있다. 벡터의 경우 $x = [x_1, x_2, x_3]^T $ 형태로 표기하고 스칼라의 경우 $a^T$로 표기한다. 스칼라는 하나의 값만 가지는 행렬로 이해할 수 있으며, $a=a^T$가 된다.
- 곱셈(Product)
스칼라를 곱셈하는 것은 단순히 곱하는 것이기 때문에 넘어가고, 행렬과 벡터의 곱셈에 대해서 알아볼 것이다. 일단 먼저 행렬곱(matrix product)에 대해서 알아보자. 일단 행렬 간 곱셈을 하기 위해서는 행렬 $\boldsymbol{A}$의 열 수와 행렬 $\boldsymbol{B}$의 행 수가 일치해야만 한다. 만약 $\boldsymbol{A} \in \mathbb{R}^{m \times n} $ 이면, $\boldsymbol{B} \in \mathbb{R}^{n \times p}$ 여야하고, 두 행렬곱으로 새로이 생성된 행렬 $\boldsymbol{C}$는 $\boldsymbol{C} \in \mathbb{R}^{m \times p}$가 된다. 행렬 곱을 표현할 때에는 다음과 같이 정의한다.
$\boldsymbol{C} = \boldsymbol{A}\boldsymbol{B}$
\[ C_{i,j} = \sum_{k} A_{i,k} B_{k,j} \]
여기서 주의해야할 것이 하나 있다. 행렬곱이라고 해서 두 행렬의 대응되는 요소들끼리 곱하는 것이 아니다. 대응 요소끼리 곱하는 것은 아다마르 곱(Hadamard product) 혹은 요소별 곱(element-wise product)이라 부른다. 벡터 간의 곱셈은 동일한 차원을 가져야지만 곱셈이 가능하다. 동일한 차원을 가지는 두 벡터 $x$와 $y$의 행렬곱 $x^Ty$은 내적(dot product)라고 부른다. 위에서 언급한 행렬곱 $\boldsymbol{C} = \boldsymbol{A}\boldsymbol{B}$ 도 행렬 $\boldsymbol{A}$의 행과 행렬 $\boldsymbol{B}$의 열 간 내적을 통해 산출된 것이다.
2) 역행렬(inverse matrix)
행렬의 역을 설명하기 위해서는 단위행렬(identity matrix)에 대해서 먼저 알아야 한다. 단위행렬은 어떤 벡터를 곱해도 원래의 벡터가 나오는 행렬의 대각 요소만 1의 값을 가지고 나머지 요소들은 0의 값을 가지는 행렬을 의미한다. 단위행렬은 $\boldsymbol{I}_n \in \mathbb{R}^{m \times n } $과 같이 표기한다.
$ \forall \boldsymbol{x} \in \mathbb{R}^{m \times n}, \boldsymbol{I}_n \boldsymbol{x} = \boldsymbol{x}$
$ \boldsymbol{I_3} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} $
행렬 $\boldsymbol{A}$의 역행렬(inver matrix) 또는 역원(matrix invers)을 $\boldsymbol{A}^{-1}$로 표기하고 행렬 $\boldsymbol{A}$와 역행렬 $\boldsymbol{A}^{-1}$의 곱을 통해 앞 전에 배운 단위행렬 $\boldsymbol{I}$를 생성할 수 있다. (단 역행렬이 존재할 경우)
행렬 $\boldsymbol{A}$에 대해서 역행렬 $\boldsymbol{A}^{-1}$이 존재한다고 가정하면 다음과 같은 연립방정식을 수행할 수 있다.
\[ \boldsymbol{Ax} = \boldsymbol{b} \]
\[ \boldsymbol{A}^{-1}\boldsymbol{Ax} = \boldsymbol{A}^{-1}\boldsymbol{b} \]
\[ \boldsymbol{I_nx} = \boldsymbol{A}^{-1}\boldsymbol{b} \]
\[ \boldsymbol{x} = \boldsymbol{A}^{-1}\boldsymbol{b} \]
우리는 역행렬이 존재한다고 가정할 경우 위와 같은 수식이 성립한다고 언급했다. 그렇다면 역행렬이 존재하기 위해서는 어떠한 것이 성립해야할까? 역행렬 $\boldsymbol{A}^{-1}$ 이 존재하기 위해서는 모든 $\boldsymbol{b}$ 값에 대해서 연립방정식의 해가 정확히 하나의 해가 존재해야한다. ($ \boldsymbol{Ax}=\boldsymbol{b} $) 방정식의 해가 몇 개인지 분석할 때는, $\boldsymbol{A}$의 열들을 원점에서부터 나아갈 수 있는 서로 다른 방향들 중 실제로 b에 도달하는 방법이 몇 개인지 세는 것이다.
이런 종류의 연산을 일반화한 것을 선형결합(linear combination)이라고 부르며, 수식은 다음과 같다.
\[ \sum_{i}c_i \boldsymbol{v}^{(i)} \]
$\boldsymbol{v}^{(i)}$는 열 $i$의 열벡터를 의미한다. 열벡터를 벡터 집합 $ \{ \boldsymbol{v}^{(1)}, ... , \boldsymbol{v}^{(n)} \}$ 으로 구성하고, 주어진 벡터 집합의 선형결합으로 얻을 수 있는 모든 점의 집합을 그 벡터 집합의 Span이라고 부른다. 모든 $\boldsymbol{b} \in \mathbb{R}^{m}$에 대해 일차연립방정식 $\boldsymbol{Ax}=\boldsymbol{b}$에 하나의 해가 존재하려면, $\boldsymbol{A}$의 열공간이 $\mathbb{R}^{m}$ 전체와 같아야 한다. $\boldsymbol{A}$의 열공간이 $\mathbb{R}^m$ 전체와 같아야 한다는 조건은 적어도 $\boldsymbol{A}$의 열이 m개는 존재해야한다. $\boldsymbol{A}$의 열 수가 n이라면 최소한 $ n \ge m$이어야 된다는 것이다.
하지만 $n \ge m$이라고 하더라도 하나의 해가 존재하는 필요충분조건이 될 수 없다. 왜냐하면 $\boldsymbol{A}$에 중복된 열이 존재할 수 있기 때문이다. 열이 여러개 존재한다고 하더라도 모든 열이 겹친다면 그 열공간은 하나의 직선일 뿐이라서 $\boldsymbol{A} \in \mathbb{R}^{1}$일 뿐이다. 이와 같이 열이 겹치는 것을 선형종속(linear dependence)라고 부른다. 또한, 각 열들 간 하나도 겹치는 벡터가 없는 벡터 집합을 가리켜 선형독립(linear independence)이라고 부른다.
위 내용을 정리하자면 반드시 정방행렬(square matrix)이어야 하고, 모든 열이 선형독립이어야 한다. 정방행렬이지만 열 간 선형종속 관계인 행렬을 특이 행렬(singular matrix)라고 부른다.
그렇다고 특이 행렬이 아닌 정방행렬만 무조건 역행렬이 존재하는 것은 아니다. 특이 행렬이거나, 정방행렬이 아닌 행렬일때도 방정식을 푸는 것이 가능하지만, 역행렬을 이용한 해법으로 반드시 해를 구할 수 있다는 보장은 없다고 한다.
3) 대각행렬(diagonal matrix)
대각행렬은 주대각 성분만 0이 아닌 값을 가지고 나머지 요소들은 0인 값을 가지는 행렬을 의미한다. 행렬 $\boldsymbol{D}$ 는 $i \neq j$에 대해 $\boldsymbol{D}_{i, j} = 0 $이면 대각행렬이라고 부를 수 있다. 위에서 우리가 역행렬을 다룰때 단위행렬을 배웠는데, 단위행렬 역시 대각행렬이라고 할 수 있다.
4) 대칭행렬(symmetric matrix)
대칭행렬은 전치행렬이 곧 자신과 같은 행렬을 의미한다.
$\boldsymbol{A} = \boldsymbol{A}^T$
5) 직교행렬(orthogonal matrix)
직교행렬은 행들이 서로 정규직교(orthonormal)이고, 열들도 서로 정규직교인 정방행렬을 의미한다. 정규직교를 이해하기 위해서는 우선 직교라는 개념부터 짚고 넘어가자. 벡터 $\boldsymbol{x}$와 $\boldsymbol{y}$가 $\boldsymbol{x}^T \boldsymbol{y}$=0을 만족할 때 두 벡터를 서로 직교라고 말한다. 두 벡터 모두 노름이 0이 아니라면 두 벡터의 각도는 90도이며, $\mathbb{R}^m$에서 노름이 0이 아니며 서로 직교인 벡터들은 n개를 넘기지 않는다. 또한 직교 뿐만 아니라 노름이 1인 벡터를 가리켜 정규직교 벡터라 부른다. 직교행렬은 열 벡터 간, 행 벡터 간 전부 서로 정규직교인 정방행렬을 의미하는 것이며, 수식은 다음과 같다.
$ \boldsymbol{A}^T \boldsymbol{A} = \boldsymbol{A} \boldsymbol{A}^T = \boldsymbol{I}$
$\boldsymbol{A}^{-1} = \boldsymbol{A}^T$
6) 정부호 행렬(positive definite matrix)
스칼라인 경우 3은 양수, -3은 음수로 부호를 부여할 수 있다. 그렇다면 행렬에도 부호를 부여할 수 있을까? 행렬의 내부 원소들은 음수를 가지기도, 양수를 가지기도 한다. 단순 무식하게 음수의 수, 양수의 수를 기반으로 행렬의 부호를 정하는 것이 아니라 수식에 따라 행렬의 부호를 정할 수 있다. square matrix $A$가 다음 수식을 만족할 경우 우리는 양의 정부호 행렬(positive definite matrix)라고 명명할 수 있다. 정부호 행렬 뿐만 아니라 양의 준정부호(postiive semi-definite), 음의 정부호(negative definite), 음의 준정부호(negative semi-definite) 행렬을 정의할 수 있다.
- positive definite matrix : $x^TAx > 0 ( x \neq 0 ) $
- positive semi-definite matrix : $x^TAx \ge 0 ( x \neq 0 ) $
- negative definite matrix : $x^TAx < 0 ( x \neq 0 ) $
- negative semi-definit matrix : $x^TAx \le ( x \neq 0 ) $
7) 행렬식(determinant)
square matrix $A$의 행렬식(determinant)는 $det(A)$로 표기한다. 우리는 ad-bc 라는 수식은 많이들 봐왔을 것이라 생각한다. 이를 행렬식이라 부르며 행렬 $A \in \mathbb{R}^{2 \times 2}$ 인 경우 ad-bc의 값이 행렬식이다. 예를 들어 $\begin{bmatrix} 2 & 1 \\ 6 & 4 \end{bmatrix} $ 인 경우 2*4-1*6=2 가 된다. 만약 $A \in \mathbb{R}^{4\times 4} $인 경우 가우스-요르단 소거법(Gauss-Jordan elimination)과 같은 알고리즘을 사용해야 한다. 행렬식 역시 역행렬이 성립하는 조건을 충족해야지만 존재한다. 다시 한 번 필요충분조건을 나열하면 다음과 같다.
- $A$는 역행렬을 가진다. (not singular matrix)
- $A$는 full rank를 가진다.
- $A$는 모든 행이 linear independent하다.
- $A$는 모든 열이 linear independent하다.
- $A^TA$는 양의 positive definite symmetric matrix이다.
- $A$의 eigen value의 값은 모두 0이 아니다.
\[ det \begin{bmatrix} a & b \\ c & d \end{bmatrix} = ad - bc \]
\[ det \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix} = aei + bfg + cdh - ceg - bdi - afh \]
2차원에서의 행렬식은 2개의 벡터가 이루는 평행사변형의 넒이를 의미하고, 3차원에서의 행렬식은 평행사각기둥의 부피에 해당한다. 또한, 행렬식이 0이라할 때 역행렬이 존재하지 않는다고 언급했다. 위 수식으로 살펴본다면 행렬식이 0일 경우 $\frac{1}{det(A)}$가 정의되지 않기 때문이라고 이해할 수 있을 것이다.
생성공간(span)
1) 선형결합(linear combination)
벡터 공간을 이해하기 위해서는 선형결합(linear combination)에 대해서 먼저 알아야 한다. 선형 결합이란 벡터$a$와 $b$가 존재할 경우 각 벡터를 상수배 한 후 결과를 더하는 연산을 선형 결합이라 칭한다.
\[c = \alpha_1a + \alpha_2b \]
각 벡터들이 가지는 $\alpha_1$과 $\alpha_2$를 변화시키면 벡터 덧셈을 통해 생성된 벡터로 2차원 공간의 모든 점들을 만들 수 있을 것이다. 이처럼 선형결합을 통해 생성된 공간을 우리는 생성공간(span) 혹은 벡터공간(vector space)라고 부른다. 이처럼 벡터 공간을 만드는 2개의 벡터 $a$와 $b$를 기저 벡터(basis vector)라고 한다.
2) 정규직교(orthonormal)
여기서 우리는 조심해야할 부분이 있다. 만약 $a$와 $b$ 가 서로 겹친 상태로 존재한다면 $a$와 $b$는 하나의 vector로 표현될 수 있으며 하나의 vector는 직선에 불과하므로 평면을 생성할 수 없다. 이와 같이 겹친 상태를 종속(idependent) 이라 표현하며, 두 벡터 간 종속적일 경우 벡터공간을 생성할 수 없다. 그렇기에 벡터공간을 생성하기 위해서는 기저 벡터는 선형독립(linear independence)이어야 한다. 이때 벡터 $a$, $b$가 직교할 경우에는 직교(orthogonal) 기저 벡터라 부른다. 직교한다는 말은 두 벡터 간 내적이 0이라는 것을 의미한다. 더 나아가 직교하면서 길이가 1인 기저 벡터는 정규직교(orthonormal)이라고 부른다.
랭크(rank)
선형대수에서 랭크(rank)란 행렬들의 열들로 생성될 수 있는 벡터공간의 차원(dimension)을 의미한다. 이전 선형결합에서 우리는 두 벡터가 종속적이면 생성할 수 있는 차원은 하나라고 언급했다. 예를 들어 다음과 같은 행렬이 있다고 가저하자.
\[ A = \begin{bmatrix} a_{1,1} & a_{1,2} & a_{1,3} \\ a_{2,1} & a_{2,2} & a_{2,3} \\ a_{3,1} & a_{3,2} & a_{3,3} \end{bmatrix} \]
만약 첫 번째 column과 두 번째 column이 종속적이라면 위 행렬은 2차원의 벡터공간을 생성할 것이다. 다시 말해 선형독립인 2개의 열로 구성된 것을 행렬의 계수(rank)가 2라고 표현한다. 행렬의 계수가 1이면 직선이고, 계수가 2라면 평면, 계수가 3이라면 3차원 공간 전체를 벡터 공간으로 가지게 되며, 이를 통해 행렬의 벡터공간이 어떻게 생겼는지 알 수 있다. rank에는 Column rank와 Row rank가 존재한다. Column rank는 Column space의 차원을 의미하며, Row rank는 Row space의 차원을 의미한다. 위에서 우리는 full rank라는 것을 언급했었다. full rank란 해당 행렬이 가질 수 있는 최대 rank을 의미하며 수식은 다음과 같다.
\[ Rank(A) = \min(m,n) \]
rank의 이해를 돕기 위해 다음과 같은 예시를 생각해보자.
\[ (1) \ \ A = \begin{bmatrix} 1 & 1 & 2 & 0 \\ 3 & 3 & 6 & 0 \end{bmatrix} \]
\[ (2) \ \ B = \begin{bmatrix} 1 & 0 & 1 \\ -2 & -3 & 1 \\ 3 & 3 & 0 \end{bmatrix} \]
$A$의 경우 $A^T$의 rank를 구해도 동일한 결과값을 출력할 것이다. $A$를 살펴보면 0 벡터를 제외하고는 모두 의존적이기 때문에 하나의 rank를 가진다고 표현할 수 있으며, $A^T$ 역시 동일한 결과를 출력하므로 $A$와 $A^T$의 rank는 모두 1이다. $B$의 경우 첫 번째 열과 두 번째 열의 경우 독립적이지만, 첫 번째 열과 세 번째 열을 빼주면 두 번째 열을 만들 수 있기에 $B$의 rank는 2이다.
조금 더 상세한 개념은 여기를 참고하자.
고윳값, 고유벡터(eigen value, eigen vector)
정수 3717이 있다고 하면, 단순히 3717의 숫자를 보고는 어떤 수인지 파악하기가 어렵다 하지만 3717=3*3*7*59 로 표현한다면 여러 특성을 파악할 수 있을 것이다. 또한, $15x^3 + 16x^2 - x -2 $를 이해하는 것 보다 $(3x-1)(5x+2)(x+1)$로 분해한 후 특성을 파악하는 것이 보다 효율적일 것이다. 이와 마찬가지로 우리는 행렬의 특성을 보다 쉽게 파악하기 위해서 행렬 분해(matrix factorzation)를 수행하여 행렬의 특성을 파악하는 것이다. 이번 챕터에서는 행렬 분해에 대한 내용을 다루지는 않고 용어 정리만을 할 것이다. 행렬 분해에 대한 내용은 여기를 참고하길 바란다.
아래의 식을 만족하는 0이 아닌 벡터$v$를 행렬 $A$의 고유 벡터(eigen vector)라고 부르고, 고유 벡터에 대응하는 실수 $\lambda$를 고윳값(eigen value)라고 부른다.
\[ Av = \lambda v \]
여기서 고유 벡터는 서로 직교이며, 고유 벡터에 몇 배를 곱해도 여전히 고유 벡터이다. 그러나 고윳값은 여전히 $\lambda$로 행렬에 어떤 수를 곱하더라도 변하지 않는다. 고윳값은 어떠한 연산이 수행되더라도 고유하지만, 고유 벡터는 그렇지 않다. 그렇기에 우리는 고유 벡터를 단위 벡터로 만들어 고유한 상태를 만들 수 있다.
\[ \frac{v}{||v||} \]
그렇다면 고유 벡터는 몇 개까지 존재할까? $A \in \mathbb{R}^{m \times m}$이라고 하면 고유 벡터는 최대 m개 존재할 수 있으며, 아예 존재하지 않을 수도 있다.
참고 문헌 : 이안 굿펠로, 요슈아 벤지오, 에런 쿠빌 : 심층 학습(Deep Learning) / 오일석 : 기계 학습
'Mathematics > Linear Algebra' 카테고리의 다른 글
[Linear Algebra] 고윳값 분해(eigen decomposition) (0) | 2022.03.05 |
---|---|
[Linear Algebra] 노름(norm) 이란? (0) | 2022.03.05 |
[Linear Algebra] SVD(Singular Value Decomposition) (0) | 2022.02.15 |
[Linear Algebra] 선형 변환 (0) | 2021.07.21 |
[Linear Algebra] 부분공간의 기저와 차원 (0) | 2021.07.20 |