촐레스키 분해

우리가 기계 학습에서 자주 마주치는 특수한 형태의 행렬들을 분해하는 방법은 여러 가지가 있다. 양의 실수(positive real numbers)의 세계에서는 숫자를 동일한 성분으로 분해해 주는 제곱근 연산이 있다(예: $9 = 3 \cdot 3$ ). 행렬의 경우, 우리는 양의 크기(positive quantities)를 가진 대상에 대해 제곱근과 유사한 연산을 계산하도록 주의를 기울여야 한다. 대칭이고 양의 정부호인 행렬(3.2.3절 참조)에 대해서는, 제곱근과 동등한 역할을 하는 여러 연산 중 하나를 선택할 수 있다. 촐레스키 분해(Cholesky decomposition/factorization)는 실전에서 유용한, 대칭이고 양의 정부호인 행렬에 대한 제곱근 동등 연산을 제공한다.

정리 4.18 (촐레스키 분해). 대칭이고 양의 정부호인 행렬 $A$ 는 곱 $A = LL^\top$ 로 분해될 수 있다. 여기서 $L$ 은 대각 성분들이 양수인 하삼각 행렬(lower-triangular matrix)이다.

$$ \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{bmatrix} = \begin{bmatrix} l_{11} & \cdots & 0 \\ \vdots & \ddots & \vdots \\ l_{n1} & \cdots & l_{nn} \end{bmatrix} \begin{bmatrix} l_{11} & \cdots & l_{n1} \\ \vdots & \ddots & \vdots \\ 0 & \cdots & l_{nn} \end{bmatrix} \quad (4.44) $$

$L$ 은 $A$ 의 촐레스키 인자(Cholesky factor)라고 불리며, $L$ 은 유일하다.

예제 4.10 (촐레스키 분해 계산)

대칭이고 양의 정부호인 행렬 $A \in \mathbb{R}^{3 \times 3}$ 을 고려하자. 우리는 이 행렬의 촐레스키 분해 $A = LL^\top$ 를 찾는 데 관심이 있다. 즉,

$$ A = \begin{bmatrix} a_{11} & a_{21} & a_{31} \\ a_{21} & a_{22} & a_{32} \\ a_{31} & a_{32} & a_{33} \end{bmatrix} = LL^\top = \begin{bmatrix} l_{11} & 0 & 0 \\ l_{21} & l_{22} & 0 \\ l_{31} & l_{32} & l_{33} \end{bmatrix} \begin{bmatrix} l_{11} & l_{21} & l_{31} \\ 0 & l_{22} & l_{32} \\ 0 & 0 & l_{33} \end{bmatrix} \quad (4.45) $$

우변을 전개하여 곱하면 다음과 같은 결과를 얻는다.

$$ A = \begin{bmatrix} l_{11}^2 & l_{21}l_{11} & l_{31}l_{11} \\ l_{31}l_{11} & l_{21}^2 + l_{22}^2 & l_{31}l_{21} + l_{32}l_{22} \\ l_{31}l_{11} & l_{31}l_{21} + l_{32}l_{22} & l_{31}^2 + l_{32}^2 + l_{33}^2 \end{bmatrix} \quad (4.46) $$

식 (4.45)의 좌변( $A$ )과 식 (4.46)의 우변( $LL^\top$ 전개식)을 비교해보면 대각 성분 $l_{ii}$ 에 간단한 패턴이 있음을 알 수 있다.

$$ l_{11} = \sqrt{a_{11}}, \quad l_{22} = \sqrt{a_{22} - l_{21}^2}, \quad l_{33} = \sqrt{a_{33} - (l_{31}^2 + l_{32}^2)} \quad (4.47) $$

마찬가지로 대각선 아래의 성분들( $i > j$ 인 $l_{ij}$ )에 대해서도 반복되는 패턴이 있다.

$$ l_{21} = \frac{1}{l_{11}}a_{21}, \quad l_{31} = \frac{1}{l_{11}}a_{31}, \quad l_{32} = \frac{1}{l_{22}}(a_{32} - l_{31}l_{21}) \quad (4.48) $$

이로써 우리는 임의의 대칭 양의 정부호 $3 \times 3$ 행렬에 대한 촐레스키 분해를 구성하였다. 핵심적인 깨달음은 $A$ 의 값 $a_{ij}$ 와 이전에 계산된 $L$ 의 값 $l_{ij}$ 가 주어졌을 때, $L$ 의 성분 $l_{ij}$ 가 무엇이어야 하는지를 역으로 계산(backward calculate)할 수 있다는 것이다.

촐레스키 분해는 기계 학습의 기저를 이루는 수치 계산에 있어 중요한 도구이다. 여기서 대칭 양의 정부호 행렬은 자주 다뤄지는데, 예를 들어 다변량 가우시안 변수의 공분산 행렬(6.5절 참조)은 대칭이며 양의 정부호이다. 이 공분산 행렬의 촐레스키 분해는 우리가 가우스 분포로부터 샘플을 생성할 수 있게 해준다. 또한 이것은 확률 변수의 선형 변환을 수행할 수 있게 해주는데, 이는 변분 오토인코더(VAE, Jimenez Rezende et al., 2014; Kingma and Welling, 2014)와 같은 심층 확률 모델에서 그라디언트를 계산할 때 매우 많이 활용된다.
촐레스키 분해는 또한 행렬식을 매우 효율적으로 계산할 수 있게 해준다. 촐레스키 분해 $A = LL^\top$ 이 주어졌을 때, 우리는 $\det(A) = \det(L)\det(L^\top) = \det(L)^2$ 임을 안다. $L$ 은 삼각 행렬이므로, 그 행렬식은 단순히 대각 성분들의 곱이며, 따라서 $\det(A) = \prod_i l_{ii}^2$ 이 된다. 따라서 많은 수치 소프트웨어 패키지들은 계산을 더 효율적으로 만들기 위해 촐레스키 분해를 사용한다.