지난 포스팅에서 차원 축소에 대해 간단하게 다뤄봤습니다. 차원 축소를 다루기 위해서는 생각보다 많은 선형대수학 개념들이 따라오게 됩니다. 오늘은 차원 축소를 이해하기 위해 사용되는 선형대수학 내용들을 간략하게 소개하고, 설명해보도록 하겠습니다.
아래의 그림은 Mathematics for Machine Learning이라는 책에서 발췌한 그림입니다. 차원 축소를 이해하기 위해 어떠한 개념들이 필요한 지 표현하고 있는 그림입니다.
위의 그림에서 노란색 부분에 대한 개념들 중 determinant에 대해 아래에서 소개해보도록 하겠습니다.
Determinant(행렬식)
2차 행렬 determinant 구하기
보통 Determinant는 고등학교 수학에서 행렬을 배울 때, 가장 먼저 접하게 되는 내용 중에 하나입니다. 행렬이 역행렬이 존재하는 지를 확인하기 위해, ad-bc = 0 인지를 확인했던 기억이 있으실 겁니다.
$$ a_{11} x_{1} + a_{12} x_{2} = b_{1} $$
$$ a_{21} x_{1} + a_{22} x_{2} = b_{2} $$
위의 선형 방정식을 풀어보면, $x_{1}$과 $x_{2}$는 아래와 같은 수식을 얻게 됩니다.
$$ x_{1} = \frac{b_{1} a_{22} - b_{2} a_{12}}{a_{11} a_{22} - a_{21} a_{12}} , x_{2} = \frac{b_{2} a_{11} - b_{1} a_{21}}{a_{11} a_{22} - a_{21} a_{12}} $$
위의 수식에서 볼 수 있듯이 $a_{11} a_{22} - a_{21} a_{12} = 0$이라면, 해를 가지지 않게 됩니다. 이처럼 determinant는 선형 방정식에서의 해 존재 여부를 판단하는 방법입니다.
$$ A = \begin{bmatrix} a & b \\ c & d \end{bmatrix} $$
위와 같은 행렬이 존재한다고 했을 때, determinant는 아래와 같이 표기할 수 있습니다.
$$ det(A) = | A | = ad - bc $$
3차 이상의 행렬의 determinant 구하기(with cofactor)
행렬이 2차일 때에는 간단하게 구할 수 있지만, 3차, 4차로 올라갈 수록 계산이 상당히 복잡해집니다. 차수가 올라갈수록 cofactor(여인수) $C_{ij}$ 라는 개념이 필요합니다.
$$ A = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix} $$
$$ C_{ij} = (-1)^{(i+j)} M_{ij} $$
$C_{ij}$는 cofactor(여인수)라고 부르는데, 3차 이상에서 cofactor를 활용하여 determinant를 구하게 됩니다. $M_{ij}$는 i 번째 행과 j 번째 열을 제거한 행렬의 determinant 값입니다. 예를 들어, i=1, j=1이라고 한다면, $M_{11}$은 아래와 같이 표현할 수 있습니다.
$$M_{11} = \begin{vmatrix} e & f \\ h & i \end{vmatrix} = ei - fh $$
cofactor값인 $C_{ij}$와 $a_{ij}$ 곱을 모두 구해서 i행 방향 or j열 방향으로 더하면, 최종적으로 행렬의 determinants를 구할 수 있습니다. 일반화해서 표현해보면 아래와 같이 표현할 수 있습니다.
$$ det(A) = | A | = \sum_{j=1}^{n} a_{ij} C_{ij} = a_{i1} C_{i1} + a_{i2} C_{i2} + \dots + a_{in} C_{in} $$
$$ det(A) = | A | = \sum_{i=1}^{n} a_{ij} C_{ij} = a_{1j} C_{1j} + a_{2j} C_{2j} + \dots + a_{nj} C_{nj} $$
위의 방법 외에도 행렬 연산을 통해, 삼각행렬을 만들면 determinants를 쉽게 구할 수 있습니다. 예를 들어, 아래와 같은 A 행렬이 존재한다고 가정해봅시다.
$$ A = \begin{bmatrix} 2 & 3 & -1 \\ 0 & -1 & 2 \\ 0 & 0 & 3 \end{bmatrix} $$
위의 행렬의 determinants를 구하기 위해 0이 많은 3행을 활용해보도록 하겠습니다.
$$ det(A) = \sum_{j=1}^{n} a_{3j} C_{3j} = a_{31} C_{31} + a_{32} C_{32} + a_{33} C_{33} $$
$$ det(A) = 0(-1)^{(3+1)} \begin{vmatrix} 3 & -1 \\ -1 & 2 \end{vmatrix} + 0(-1)^{(3+2)} \begin{vmatrix} 2 & -1 \\ 0 & 2 \end{vmatrix} + 3(-1)^{(3+3)} \begin{vmatrix} 2 & 3 \\ 0 & -1 \end{vmatrix} $$
0이 포함된 부분은 0이 되므로, $3(-1)^{(3+3)} \begin{vmatrix} 2 & 3 \\ 0 & -1 \end{vmatrix} = 3(1)(-2) = -6 $ 값을 가지게 됩니다.
이처럼 삼각행렬의 형태를 가질 때에는 아래와 같은 성질을 만족합니다.
$$ det(A) = | A | = a_{11} a_{22} a_{33} \dots a_{nn} $$
각 대각 성분의 곱으로 determinant를 쉽게 구할 수 있습니다.
행렬 기본 행연산과 determinant 관계
위에서 언급했던 것처럼 삼각 행렬을 만들면 대각 성분들의 곱으로 쉽게 determinant를 구할 수 있습니다. 그래서 이번에는 행렬을 행 연산을 통해 대각 행렬을 만들어서 쉽게 구해봅시다.
3가지의 연산에 대해 이야기해봅시다.
1. 행 위치 바꾸기
행렬 A와 B가 다음과 같다고 가정 해보겠습니다.
$$ A = \begin{bmatrix} 2 & 4 \\ 1 & 3 \end{bmatrix} , B = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} $$
A와 B의 determinant를 구하면, $ det(A) = 2 , det(B) = -2 $로 $det(A) = - det(B)$임을 알 수 있습니다. 이를 통해, 행의 위치를 변경한 행렬이 $A'$인 경우 $det(A) = - det(A')$ 임을 만족합니다.
2. 한 행에 상수를 곱한 뒤 다른 행에 더하기
행렬 A와 B가 다음과 같다고 가정해보겠습니다.
$$ A = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} , B = \begin{bmatrix} 1 & 3 \\ 0 & -2 \end{bmatrix} $$
B의 행렬은 A의 행렬 첫 번째 행에 -2를 곱한 뒤 두 번째 행에 더하여 얻은 결과입니다. 각각의 determinant를 구해보면, $ det(A) = -2, det(B) = -2 $로 동일한 값을 가집니다. 상수를 곱한 뒤 다른 행에 더하는 경우에는 determinant에 변화를 주지 않습니다.
3. 행에 공통적인 상수를 빼내기
행렬 A와 B가 다음과 같다고 가정해보겠습니다.
$$ A = \begin{bmatrix} 2 & 4 \\ 1 & 3 \end{bmatrix} , B = \begin{bmatrix} 1 & 2 \\ 1 & 3 \end{bmatrix} $$
B의 행렬은 A의 첫 번째 행을 2로 나눠준 행렬입니다. 두 개의 determinant를 구해보면, $det(A) = 2, det(B) = 1$의 결과를 얻을 수 있습니다. $det(B)$에 나눠준 2를 곱해주면 기존의 가지고 있던 $det(A)$와 동일한 값을 가지게 됩니다. 이를 통해, 공통 인수가 포함되어 있는 경우에는 앞으로 빼서 추후 곱해줄 수 있습니다. 수식으로 표현해보면, 아래와 같습니다.
$$ det(B) = c det(A) $$
위에서 소개한 3가지 방법을 활용해서 determinant를 구해보도록 해보겠습니다.
$$ A = \begin{bmatrix} 2 & -3 & 10 \\ 1 & 2 & -2 \\ 0 & 1 & -3 \end{bmatrix} $$
첫 번째 행과 두 번째 행을 교환
$$ det(A) = - \begin{vmatrix} 1 & 2 & -2 \\ 2 & -3 & 10 \\ 0 & 1 & -3 \end{vmatrix} $$
첫 번째 행에 -2를 곱한 뒤 두 번째 행에 더하기
$$ det(A) = - \begin{vmatrix} 1 & 2 & -2 \\ 0 & -7 & 14 \\ 0 & 1 & -3 \end{vmatrix} $$
두 번째 행에 공통 인자인 -7 앞으로 꺼내기
$$ det(A) = 7 \begin{vmatrix} 1 & 2 & -2 \\ 0 & 1 & -2 \\ 0 & 1 & -3 \end{vmatrix} $$
두 번째 행에 -1을 곱한 뒤 마지막 행에 더하기
$$ det(A) = 7 \begin{vmatrix} 1 & 2 & -2 \\ 0 & 1 & -2 \\ 0 & 0 & -1 \end{vmatrix} $$
$$ det(A) = 7(1)(1)(-1) = -7 $$
위에서 진행한 행 연산 공식은 열연산에서도 동일하게 적용 가능합니다. 위의 방법을 활용하여 삼각 행렬을 만들어서 빠르게 determinant를 구할 수 있습니다.
determinant 가 0인 특별한 경우
위에서도 언급했듯이, determinant를 구하는 이유는 선형 방정식에서 해가 존재하는지를 빠르게 확인하기 위함이었습니다. 다음의 특징을 가지는 경우에는 determinant가 0이 됩니다.
- 0으로 구성된 행 또는 열이 존재할 때
- 구성이 동일한 행 또는 열이 존재할 때
- 상수만큼 곱해서 동일 해지는 행 또는 열이 존재할 때
0으로 구성된 행 또는 열이 존재할 때
모든 값이 0으로 이뤄진 행이나 열이 존재한다면, determinant를 구하는 수식에 의해 0이 됩니다.
$$ det(A) = | A | = \sum_{j=1}^{n} a_{ij} C_{ij} = a_{i1} C_{i1} + a_{i2} C_{i2} + \dots + a_{in} C_{in} $$
모든 값이 0으로 이뤄진 행이나 열이 존재한다는 것은 위의 수식에서 모든 a_{ij} 가 0이므로, $det(A) = 0$을 만족하게 됩니다.
구성이 동일한 행 또는 열이 존재할 때
구성이 동일한 행 또는 열이 존재한다면, 행 연산 2번에 의해 0으로 구성된 행 또는 열로 만들 수 있습니다. 그러므로, 위에서 언급했던 0으로 구성된 행 또는 열이 존재하므로 $det(A) = 0$을 만족하게 됩니다.
상수만큼 곱해서 동일 해지는 행 또는 열이 존재할 때
이 경우에도 위의 경우와 동일하게 행 연산에 의해 0으로 구성된 행 또는 열을 만들 수 있습니다. 그러므로, $det(A) = 0$을 만족하게 됩니다.
위에서 언급한 특징을 가진 행렬이라면, determinant를 구하지 않아도 0인 사실을 빠르게 확인할 수 있습니다.
두 개의 행렬 곱의 determinant
두 개의 n차 정방 행렬 곱을 했을 때, 다음과 같은 성질을 만족하게 됩니다.
$$ det(AB) = det(A)det(B) $$
예시를 들어서 위의 식이 만족하는지 확인해보도록 하겠습니다.
먼저, 행렬 A와 B가 다음과 같다고 가정해보겠습니다.
$$ A = \begin{bmatrix} 1 & -2 & 2 \\ 0 & 3 & 2 \\ 1 & 0 & 1 \end{bmatrix} , B = \begin{bmatrix} 2 & 0 & 1 \\ 0 & -1 & -2 \\ 3 & 1 & -2 \end{bmatrix} $$
A와 B의 determinant를 구해보면, $det(A) = -7, det(B) = 11 $의 값을 얻을 수 있습니다.
$$ AB = \begin{bmatrix} 8 & 4 & 1 \\ 6 & -1 & -10 \\ 5 & 1 & -1 \end{bmatrix} $$
$det(AB)$의 값을 구해보면, -77을 얻게 됩니다. 위에서 얻은 $det(A)$와 $det(B)$의 곱과 동일합니다. 이를 통해, 위의 식이 만족한다는 것을 확인할 수 있습니다.
상수 배 곱한 행렬의 determinant
위에서 행렬 곱에 대한 determinant를 구했습니다. 이번에는 행렬에 상수항이 곱해진 경우에는 어떻게 determinant가 나오는지 확인해봅시다.
상수 배가 곱해진 경우에는 행 연산 3번 공식(행에 공통 상수 빼내기)을 통해 각 행에서 c라는 상수를 n개 뽑아낼 수 있습니다. 그러므로, 아래의 수식을 만족하게 됩니다.
$$ det(cA) = c^{n} det(A) $$
역행렬을 가지는 행렬의 determinant
고등학교 때도 역행렬을 가지는 경우에는 $ad-bc = 0$이라는 것을 배워 알고 있습니다. $A$라는 행렬이 $A^{-1}$이 존재한다고 가정해보겠습니다.
그렇다면, $A$와 $A^{-1}$의 곱은 $I$인 항등 행렬이 됩니다.
$$ A A^{-1} = I$$
이때, 두 행렬의 곱의 determinant는 각각의 determinant의 곱과 동일하므로 아래의 수식을 만족하게 됩니다.
$$ det(A)det(A^{-1}) = det(I) = 1 $$
항등 행렬의 경우 대각 성분이 1인 행렬이므로 determinant 값으로 1을 얻을 수 있습니다.
이를 통해, 2개의 결과를 얻을 수 있습니다.
$$ det(A) \neq 0 $$
$$ det(A^{-1}) = \frac{1}{det(A)} $$
전치 행렬과 determinant 관계
행렬 $A$가 정방 행렬이라고 했을 때, 전치 행렬($A^{T}$)의 determinant는 $A$의 determinant와 동일합니다. 이 개념은 $A$라는 행렬을 행 연산 또는 열연산을 통해 삼각 행렬 형태로 만들면 쉽게 동일하다는 것을 알 수 있습니다. 상삼각 행렬이든 하삼각 행렬이든 determinant를 구할 때 대각 성분의 곱으로 구할 수 있으므로, 다음의 수식을 만족합니다.
$$ det(A) = det(A^{T})$$
오늘은 determinant에 대한 개념에 대해서 다뤘습니다. 쉬운 개념이지만 예시들이 도움이 되셨길 바랍니다. 다음 시간에는 선형대수학에서 가장 중요한 개념인 고윳값과 고유 벡터에 대해서 다뤄볼 예정입니다. 그럼 다음 포스팅으로 찾아뵙도록 하겠습니다.