1. 고유값 분해
어떠한 시스템 A x = b \mathbf{A}\mathbf{x}=\mathbf{b} A x = b 가 주어졌을 때, 행렬 A \mathbf{A} A 가 다음과 같이 대각행렬로 주어지면 시스템의 풀이가 간편해진다.
A x = b → ( a 11 0 0 0 a 22 0 0 0 a 33 ) ( x 1 x 2 x 3 ) = ( b 1 b 2 b 3 ) → { x 1 = b 1 / a 1 x 2 = b 2 / a 2 x 3 = b 3 / a 3 \mathbf{A}\mathbf{x}=\mathbf{b} \rightarrow \begin{pmatrix} a_{11} & 0 & 0\\ 0 & a_{22} &0\\ 0 & 0 & a_{33} \end{pmatrix} \begin{pmatrix} x_1\\ x_2 \\ x_3 \end{pmatrix}= \begin{pmatrix} b_1\\ b_2 \\ b_3 \end{pmatrix} \rightarrow \begin{cases} x_1 = b_1/a_1\\ x_2 = b_2/a_2\\ x_3 = b_3/a_3 \end{cases} A x = b → ⎝ ⎜ ⎛ a 1 1 0 0 0 a 2 2 0 0 0 a 3 3 ⎠ ⎟ ⎞ ⎝ ⎜ ⎛ x 1 x 2 x 3 ⎠ ⎟ ⎞ = ⎝ ⎜ ⎛ b 1 b 2 b 3 ⎠ ⎟ ⎞ → ⎩ ⎪ ⎪ ⎨ ⎪ ⎪ ⎧ x 1 = b 1 / a 1 x 2 = b 2 / a 2 x 3 = b 3 / a 3
이러한 관점에서 어떤 행렬이 주어졌을 때 위와 같은 대각행렬로 바꿀 수 있다면, 그 행렬이 나타내는 시스템의 해석이나 풀이가 간단해질 수 있으며, 이를 대각화라고 한다.
A x = b \mathbf{A}\mathbf{x}=\mathbf{b} A x = b 가 주어졌을 때, A \mathbf{A} A 를 대각화하기 위해서 P − 1 A P \mathbf{P^{-1}}\mathbf{A}\mathbf{P} P − 1 A P 와 같은 닮음 변환을 많이 사용하는데, 이러한 닮음 변환은 여러 성질을 갖기 때문이다.
B = P − 1 A P \mathbf{B}=\mathbf{P^{-1}}\mathbf{A}\mathbf{P} B = P − 1 A P 이라고 할 때, A , B \mathbf{A}, \mathbf{B} A , B 는 서로 닮음이며 다음과 같은 성질을 갖는다.
r a n k ( A ) = r a n k ( B ) rank(\mathbf{A})=rank(\mathbf{B}) r a n k ( A ) = r a n k ( B )
n u l l i t y ( A ) = n u l l i t y ( B ) nullity(\mathbf{A})=nullity(\mathbf{B}) n u l l i t y ( A ) = n u l l i t y ( B )
A \mathbf{A} A 와 B \mathbf{B} B 의 고유값이 값음
이때 사용된 용어 및 앞으로 사용될 차원정리는 이전 글 에 설명되어 있으며, 이제 위의 3가지 성질을 증명해보자.
1번 성질을 증명하기 위해 먼저 어떤 가역행렬 P \mathbf{P} P 에 대해 r a n k ( P A ) = r a n k ( A ) rank(\mathbf{P}\mathbf{A})=rank(\mathbf{A}) r a n k ( P A ) = r a n k ( A ) 임을 보이자. 차원 정리에 의해 n u l l i t y ( P A ) = n u l l i t y ( A ) nullity(\mathbf{P}\mathbf{A})=nullity(\mathbf{A}) n u l l i t y ( P A ) = n u l l i t y ( A ) 임을 보이면 된다. 이는 P A , A \mathbf{P}\mathbf{A}, \mathbf{A} P A , A 의 null space이 같을 경우 성립할 수 있다. 먼저, v ∈ k e r ( P A ) → P A v = 0 → A v = A − 1 ⋅ 0 → A v = 0 \mathbf{v} \in ker(\mathbf{P}\mathbf{A}) \rightarrow \mathbf{P}\mathbf{A}\mathbf{v}=0 \rightarrow \mathbf{A}\mathbf{v}=\mathbf{A^{-1}} \cdot 0 \rightarrow \mathbf{A}\mathbf{v}= 0 v ∈ k e r ( P A ) → P A v = 0 → A v = A − 1 ⋅ 0 → A v = 0 이므로 v ∈ k e r ( A ) \mathbf{v} \in ker(\mathbf{A}) v ∈ k e r ( A ) 이며, v ∈ k e r ( A ) → A v = 0 → P A v = P ⋅ 0 → P A v = 0 \mathbf{v} \in ker(\mathbf{A}) \rightarrow \mathbf{A}\mathbf{v}=0 \rightarrow \mathbf{P}\mathbf{A}\mathbf{v}=\mathbf{P} \cdot 0 \rightarrow \mathbf{P}\mathbf{A}\mathbf{v}= 0 v ∈ k e r ( A ) → A v = 0 → P A v = P ⋅ 0 → P A v = 0 이므로 v ∈ k e r ( P A ) \mathbf{v} \in ker(\mathbf{P}\mathbf{A}) v ∈ k e r ( P A ) 이다. 따라서 P A , A \mathbf{P}\mathbf{A}, \mathbf{A} P A , A 의 null space이 같고, n u l l i t y ( P A ) = n u l l i t y ( A ) nullity(\mathbf{P}\mathbf{A})=nullity(\mathbf{A}) n u l l i t y ( P A ) = n u l l i t y ( A ) 이므로, 어떤 가역행렬 P \mathbf{P} P 에 대해 r a n k ( P A ) = r a n k ( A ) rank(\mathbf{P}\mathbf{A})=rank(\mathbf{A}) r a n k ( P A ) = r a n k ( A ) 이다.
같은 방법으로 r a n k ( A P ) = r a n k ( A ) rank(\mathbf{A}\mathbf{P})=rank(\mathbf{A}) r a n k ( A P ) = r a n k ( A ) 을 보일 수 있으며, 이 보조정리를 이용하여 1번 성질을 다음과 같이 구할 수 있다.
r a n k ( B ) = r a n k ( P − 1 A P ) = r a n k ( P P − 1 A P P − 1 ) ( 보조정리 ) = r a n k ( A ) \begin{aligned} rank(\mathbf{B}) & = rank(\mathbf{P^{-1}}\mathbf{A}\mathbf{P})\\ & = rank(\mathbf{P}\mathbf{P^{-1}}\mathbf{A}\mathbf{P}\mathbf{P^{-1}}) \;\;\;\;(보조정리) \\ & = rank(\mathbf{A}) \end{aligned} r a n k ( B ) = r a n k ( P − 1 A P ) = r a n k ( P P − 1 A P P − 1 ) ( 보 조 정 리 ) = r a n k ( A )
2번 성질은 1번 성질이 성립할 경우 차원정리에 의해 쉽게 도출이 가능하다.
{ r a n k ( A ) + n u l l i t y ( A ) = n r a n k ( B ) + n u l l i t y ( B ) = n → n u l l i t y ( A ) = n u l l i t y ( B ) \begin{cases} rank(\mathbf{A})+nullity(\mathbf{A})=n\\ rank(\mathbf{B})+nullity(\mathbf{B})=n \end{cases} \rightarrow nullity(\mathbf{A}) = nullity(\mathbf{B}) { r a n k ( A ) + n u l l i t y ( A ) = n r a n k ( B ) + n u l l i t y ( B ) = n → n u l l i t y ( A ) = n u l l i t y ( B )
3번 성질은 고유값을 구하는 특성방정식에서 유도할 수 있다.
d e t ( λ I − B ) = d e t ( λ I − P − 1 A P ) = d e t ( P − 1 ( λ I ) P − P − 1 A P ) = d e t ( P − 1 ( λ I − A ) P ) = d e t ( P − 1 ) d e t ( λ I − A ) d e t ( P ) = 1 d e t ( P − 1 ) d e t ( λ I − A ) d e t ( P ) = d e t ( λ I − A ) \begin{aligned} det(\lambda \mathbf{I}- \mathbf{B}) & = det(\lambda \mathbf{I}- \mathbf{P^{-1}}\mathbf{A}\mathbf{P} ) \\ & = det(\mathbf{P^{-1}} (\lambda \mathbf{I}) \mathbf{P}- \mathbf{P^{-1}}\mathbf{A}\mathbf{P} )\\ & = det(\mathbf{P^{-1}} (\lambda \mathbf{I}-\mathbf{A})\mathbf{P} )\\ & = det(\mathbf{P^{-1}})det(\mathbf{\lambda \mathbf{I}-\mathbf{A}})det(\mathbf{P})\\ & = \frac{1}{det(\mathbf{P^{-1}})}det(\mathbf{\lambda \mathbf{I}-\mathbf{A}})det(\mathbf{P})\\ & = det(\lambda \mathbf{I}- \mathbf{A}) \end{aligned} d e t ( λ I − B ) = d e t ( λ I − P − 1 A P ) = d e t ( P − 1 ( λ I ) P − P − 1 A P ) = d e t ( P − 1 ( λ I − A ) P ) = d e t ( P − 1 ) d e t ( λ I − A ) d e t ( P ) = d e t ( P − 1 ) 1 d e t ( λ I − A ) d e t ( P ) = d e t ( λ I − A )
이제 닮음 변환을 이용하여 행렬 A \mathbf{A} A 를 대각화해보자. 목표는 P − 1 A P = Λ \mathbf{P^{-1}}\mathbf{A}\mathbf{P}=\Lambda P − 1 A P = Λ 인 대칭행렬 Λ \Lambda Λ 과 가역행렬 P \mathbf{P} P 를 찾는 것이다. P − 1 A P = Λ \mathbf{P^{-1}}\mathbf{A}\mathbf{P}=\Lambda P − 1 A P = Λ 일 경우, A P = P Λ \mathbf{A}\mathbf{P}=\mathbf{P}\Lambda A P = P Λ 이며, 이를 풀어쓰면 다음과 같다.
A ( p 1 , ⋯ , p n ) = ( p 1 , ⋯ , p n ) ( λ 1 0 ⋱ 0 λ n ) \mathbf{A}(\mathbf{p_1}, \cdots, \mathbf{p_n}) = (\mathbf{p_1}, \cdots, \mathbf{p_n}) \begin{pmatrix} \lambda_{1} & & 0\\ & \ddots &\\ 0 & & \lambda_{n} \end{pmatrix} A ( p 1 , ⋯ , p n ) = ( p 1 , ⋯ , p n ) ⎝ ⎜ ⎛ λ 1 0 ⋱ 0 λ n ⎠ ⎟ ⎞
A p 1 = λ 1 p 1 ⋮ A p n = λ n p n \mathbf{A}\mathbf{p_1}=\lambda_{1}\mathbf{p_1}\\ \vdots\\ \mathbf{A}\mathbf{p_n}=\lambda_{n}\mathbf{p_n} A p 1 = λ 1 p 1 ⋮ A p n = λ n p n
위의 식은 고유값, 고유벡터의 정의와 같으며, 따라서 우리는 고유값을 대각 성분으로 하는 대각행렬 Λ \Lambda Λ 와 그에 해당하는 고유벡터로 이루어진 가역행렬 P \mathbf{P} P 로 대각화를 할 수 있다. 이때 고유값을 이용하므로 행렬 A \mathbf{A} A 는 n × n n \times n n × n 의 정방행렬이어야 한다. 고윳값 분해를 위해 주어진 행렬은 정방행렬이어야 하며, 고유값이 n n n 개 존재해야 한다.
특히 P \mathbf{P} P 가 P T = P − 1 \mathbf{P^T}=\mathbf{P^{-1}} P T = P − 1 인 직교행렬이라면 P − 1 A P = P T A P = Λ \mathbf{P^{-1}}\mathbf{A}\mathbf{P}=\mathbf{P^T}\mathbf{A}\mathbf{P}=\Lambda P − 1 A P = P T A P = Λ 이고, 이를 직교대각화라고 한다. 이때, A \mathbf{A} A 가 실수로 이루어진 대칭행렬인 것과 A \mathbf{A} A 가 대칭대각화 가능인 것은 동치이다. 그 증명은 다음과 같다.
A \mathbf{A} A 가 대칭대각화 가능이면, A \mathbf{A} A 는 대칭행렬
P T A P = Λ \mathbf{P^T}\mathbf{A}\mathbf{P}=\Lambda P T A P = Λ 를 만족하는 행렬 P \mathbf{P} P 가 존재하며, A = P Λ P T \mathbf{A}=\mathbf{P}\Lambda\mathbf{P^T} A = P Λ P T 이다(P T = P − 1 \mathbf{P^T}=\mathbf{P^{-1}} P T = P − 1 ). 따라서 A T = ( P Λ P T ) T = P Λ P T = A \mathbf{A^T}=(\mathbf{P}\Lambda\mathbf{P^T})^T=\mathbf{P}\Lambda\mathbf{P^T}=\mathbf{A} A T = ( P Λ P T ) T = P Λ P T = A 이므로 A \mathbf{A} A 는 대칭행렬이다(( A B ) T = B T A T (\mathbf{A}\mathbf{B})^T=\mathbf{B}^T\mathbf{A}^T ( A B ) T = B T A T ).
n × n n \times n n × n 행렬 A \mathbf{A} A 가 실수로 이루어진 대칭행렬이면, A \mathbf{A} A 는 대칭대각화 가능
n = 1 n=1 n = 1 인 경우, 위 명제가 성립 (A = [ a ] , P = [ 1 ] , P T A P = Λ \mathbf{A}=[a], P=[1], \mathbf{P^T}\mathbf{A}\mathbf{P}=\Lambda A = [ a ] , P = [ 1 ] , P T A P = Λ )
n = k n=k n = k 인 경우, 위 명제가 성립한다고 가정.
n = k + 1 n=k+1 n = k + 1 인 경우, 위 명제가 성립함을 보여 수학적 귀납법을 완성해보자.
먼저, 실수로 이루어진 n × n n \times n n × n 대칭행렬 A \mathbf{A} A 가 주어질 경우, A \mathbf{A} A 의 모든 고유값은 실수이다. 먼저, 행렬의 고유값을 구하는 특성방정식 d e t ( λ I − A ) = 0 det(\lambda \mathbf{I}- \mathbf{A})=0 d e t ( λ I − A ) = 0 을 풀어보면 결국 n차 다항식이 나오고, 실수와 복소수를 포함하면 고유값은 언제나 n개가 존재한다. 이제 A ∗ , v ∗ \mathbf{A^*}, \mathbf{v^*} A ∗ , v ∗ 를 행렬 또는 벡터 A , v \mathbf{A}, \mathbf{v} A , v 의 켤레전치라고 하자(켤레: 복소수 a ± b i a \pm bi a ± b i 의 켤래는 a ∓ b i a \mp bi a ∓ b i , 전치:transpose, 즉 켤레전치는 주어진 벡터 또는 행렬의 원소를 모두 켤레로 바꾸고 전치를 취한 것, ( A B ) ∗ = B ∗ A ∗ (\mathbf{A}\mathbf{B})^*=\mathbf{B}^*\mathbf{A}^* ( A B ) ∗ = B ∗ A ∗ , ( A 1 ⋯ A n ) ∗ = A n ∗ ⋯ A 1 ∗ , ( c A ) ∗ = c ˉ A ∗ (\mathbf{A_1}\cdots\mathbf{A_n})^*=\mathbf{A_n}^*\cdots\mathbf{A_1}^*, (c\mathbf{A})^* = \bar{c}\mathbf{A}^* ( A 1 ⋯ A n ) ∗ = A n ∗ ⋯ A 1 ∗ , ( c A ) ∗ = c ˉ A ∗ , c c c 는 스칼라). 이때 v , λ \mathbf{v}, \lambda v , λ 가 주어진 행렬 A \mathbf{A} A 의 임의의 고유벡터, 고유값이라고 하면, v ∗ A v = v ∗ λ v = λ v ∗ v \mathbf{v^*}\mathbf{A}\mathbf{v}=\mathbf{v^*}\lambda\mathbf{v}=\lambda\mathbf{v^*}\mathbf{v} v ∗ A v = v ∗ λ v = λ v ∗ v 이다. 여기서 v ∗ v \mathbf{v^*}\mathbf{v} v ∗ v 는 1 × 1 1 \times 1 1 × 1 이 되어 d I 1 × 1 \mathbf{d}\mathbf{I_{1 \times 1}} d I 1 × 1 로 쓸 수 있는데 서로 켤레관계인 복소수를 곱하면 양수인 실수가 되므로, d \mathbf{d} d 는 양수인 실수이다. 따라서 v ∗ A v = λ d I 1 × 1 → 1 d v ∗ A v = λ I 1 × 1 \mathbf{v^*}\mathbf{A}\mathbf{v}=\lambda\mathbf{d}\mathbf{I_{1 \times 1}} \rightarrow \frac{1}{\mathbf{d}}\mathbf{v^*}\mathbf{A}\mathbf{v}=\lambda\mathbf{I_{1 \times 1}} v ∗ A v = λ d I 1 × 1 → d 1 v ∗ A v = λ I 1 × 1 이며, 양변의 켤레전치를 구하면 ( 1 d v ∗ A v ) ∗ = ( λ I 1 × 1 ) ∗ → 1 d v ∗ A v = λ ˉ I 1 × 1 (\frac{1}{\mathbf{d}}\mathbf{v^*}\mathbf{A}\mathbf{v})^*=(\lambda\mathbf{I_{1 \times 1}})^* \rightarrow \frac{1}{\mathbf{d}}\mathbf{v^*}\mathbf{A}\mathbf{v}=\bar{\lambda}\mathbf{I_{1 \times 1}} ( d 1 v ∗ A v ) ∗ = ( λ I 1 × 1 ) ∗ → d 1 v ∗ A v = λ ˉ I 1 × 1 이다(실수의 켤레는 자기 자신과 같음, A \mathbf{A} A 는 실수로 이루어진 대칭행렬). 이는 고유값 λ \lambda λ 의 결레는 자기자신과 같음을 의미하며, 따라서 실수로 이루어진 n × n n \times n n × n 대칭행렬 A \mathbf{A} A 의 고유값 λ \lambda λ 는 실수이다.
이제 실수로 이루어진 n × n n \times n n × n 대칭행렬 A \mathbf{A} A 에서 실수 고유값 λ 1 , ⋯ , λ n \lambda_1, \cdots, \lambda_n λ 1 , ⋯ , λ n 을 구할 수 있으며, 이에 대한 고유벡터 v 1 , ⋯ , v n \mathbf{v_1}, \cdots, \mathbf{v_n} v 1 , ⋯ , v n 을 구할 수 있고, 그람-슈미트 방법 등을 통해 정규직교기저화 할 수 있다. 이렇게 얻은 정규직교기저들 v 1 , ⋯ , v n \mathbf{v_1}, \cdots, \mathbf{v_n} v 1 , ⋯ , v n 을 이용하여 행렬 U \mathbf{U} U 를 만들면 다음과 같다.
U T A U = U T A ( v 1 v 2 ⋯ v n ) ⋯ 블록행렬 = U T A ( v 1 v ′ ) = U T ( A v 1 A v ′ ) = U T ( λ 1 v 1 A v ′ ) = ( v 1 T v ′ T ) ( λ 1 v 1 A v ′ ) = ( λ 1 v 1 T v 1 v 1 T A v ′ λ 1 v ′ T v 1 v ′ T A v ′ ) = ( λ 1 0 0 v ′ T A v ′ ) = ( λ 1 0 0 B ) \begin{aligned} \mathbf{U}^T\mathbf{A}\mathbf{U} & = \mathbf{U}^T\mathbf{A} \left( \begin{array}{c|c} \mathbf{v_1} & \mathbf{v_2} & \cdots & \mathbf{v_n}\\ \end{array} \right) \;\;\;\;\;\;\; \cdots \;\;블록행렬 \\ & = \mathbf{U}^T\mathbf{A} \left( \begin{array}{c|c} \mathbf{v_1} & \mathbf{v'} \\ \end{array} \right) \\ & = \mathbf{U}^T \left( \begin{array}{c|c} \mathbf{A}\mathbf{v_1} & \mathbf{A}\mathbf{v'} \\ \end{array} \right) \\ & = \mathbf{U}^T \left( \begin{array}{c|c} \lambda_1\mathbf{v_1} & \mathbf{A}\mathbf{v'} \\ \end{array} \right) \\ & = \begin{pmatrix} \mathbf{v_1}^T\\ \hline \mathbf{v'}^T \end{pmatrix} \left( \begin{array}{c|c} \lambda_1\mathbf{v_1} & \mathbf{A}\mathbf{v'} \\ \end{array} \right) \\ & = \left( \begin{array}{c|c} \lambda_1\mathbf{v_1}^T\mathbf{v_1} & \mathbf{v_1}^T\mathbf{A}\mathbf{v'} \\ \hline \lambda_1\mathbf{v'}^T\mathbf{v_1} & \mathbf{v'}^T\mathbf{A}\mathbf{v'} \end{array} \right) \\ & = \left( \begin{array}{c|c} \lambda_1 & 0 \\ \hline 0 & \mathbf{v'}^T\mathbf{A}\mathbf{v'} \end{array} \right) \\ & = \left( \begin{array}{c|c} \lambda_1 & 0 \\ \hline 0 & \mathbf{B} \end{array} \right) \end{aligned} U T A U = U T A ( v 1 v 2 ⋯ v n ) ⋯ 블 록 행 렬 = U T A ( v 1 v ′ ) = U T ( A v 1 A v ′ ) = U T ( λ 1 v 1 A v ′ ) = ( v 1 T v ′ T ) ( λ 1 v 1 A v ′ ) = ( λ 1 v 1 T v 1 λ 1 v ′ T v 1 v 1 T A v ′ v ′ T A v ′ ) = ( λ 1 0 0 v ′ T A v ′ ) = ( λ 1 0 0 B )
이때, 마지막 단계에서 v i \mathbf{v_i} v i 들은 서로 정규직교하기 때문에 v 1 T v 1 = 1 \mathbf{v_1}^T\mathbf{v_1}=1 v 1 T v 1 = 1 이며, v ′ T v 1 = 0 \mathbf{v'}^T\mathbf{v_1}=0 v ′ T v 1 = 0 (v ′ \mathbf{v'} v ′ 에는 v 1 \mathbf{v_1} v 1 가 없기 때문), U T A U \mathbf{U}^T\mathbf{A}\mathbf{U} U T A U 는 ( U T A U ) T = U T A U (\mathbf{U}^T\mathbf{A}\mathbf{U})^T=\mathbf{U}^T\mathbf{A}\mathbf{U} ( U T A U ) T = U T A U 인 대칭행렬이므로 대칭성을 보이기 위해 오른쪽 위의 v 1 T A v ′ \mathbf{v_1}^T\mathbf{A}\mathbf{v'} v 1 T A v ′ 또한 0이다.
또한 U T A U \mathbf{U}^T\mathbf{A}\mathbf{U} U T A U 는 대칭행렬이므로 오른쪽 아래의 B \mathbf{B} B 또한 대칭행렬이며, 위에서 n = k n=k n = k 인 경우, 명제가 성립한다고 가정하였으므로 Q T B Q = Λ B \mathbf{Q}^T\mathbf{B}\mathbf{Q}=\mathbf{\Lambda_B} Q T B Q = Λ B 와 같이 대칭대각화가 가능하다. 이를 이용하여 다음과 같이 생각하면 n = k + 1 n=k+1 n = k + 1 인 경우에도 대칭대각화가 가능함을 보일 수 있어 수학적 귀납법에 의해 위 명제는 성립한다.
( 1 0 0 Q T ) ( λ 1 0 0 B ) ( 1 0 0 Q ) = ( λ 1 0 0 Q T B Q ) = ( λ 1 0 0 Λ B ) ⋯ 대각행렬 = ( 1 0 0 Q T ) P T A P ( 1 0 0 Q ) = T T U T A U T = P T A P = Λ \begin{aligned} \left( \begin{array}{c|c} 1 & 0 \\ \hline 0 & \mathbf{Q}^T \end{array} \right) \left( \begin{array}{c|c} \lambda_1 & 0 \\ \hline 0 & \mathbf{B} \end{array} \right) \left( \begin{array}{c|c} 1 & 0 \\ \hline 0 & \mathbf{Q} \end{array} \right) & = \left( \begin{array}{c|c} \lambda_1 & 0 \\ \hline 0 & \mathbf{Q}^T\mathbf{B}\mathbf{Q} \end{array} \right) \\ & = \left( \begin{array}{c|c} \lambda_1 & 0 \\ \hline 0 & \mathbf{\Lambda_B} \end{array} \right) \;\;\;\;\;\;\;\; \cdots \;\;대각행렬\\ & = \left( \begin{array}{c|c} 1 & 0 \\ \hline 0 & \mathbf{Q}^T \end{array} \right) \mathbf{P}^T\mathbf{A}\mathbf{P} \left( \begin{array}{c|c} 1 & 0 \\ \hline 0 & \mathbf{Q} \end{array} \right) \\ & = \mathbf{T}^T\mathbf{U}^T\mathbf{A}\mathbf{U}\mathbf{T} \\ & = \mathbf{P}^T\mathbf{A}\mathbf{P} \\ & = \mathbf{\Lambda} \end{aligned} ( 1 0 0 Q T ) ( λ 1 0 0 B ) ( 1 0 0 Q ) = ( λ 1 0 0 Q T B Q ) = ( λ 1 0 0 Λ B ) ⋯ 대 각 행 렬 = ( 1 0 0 Q T ) P T A P ( 1 0 0 Q ) = T T U T A U T = P T A P = Λ
여기서 T , U \mathbf{T}, \mathbf{U} T , U 는 둘 다 직교 행렬이므로 T T U T , U T \mathbf{T}^T\mathbf{U}^T, \mathbf{U}\mathbf{T} T T U T , U T 또한 직교이며, U T = P ( T T U T = P T ) \mathbf{U}\mathbf{T}=\mathbf{P}\;\;(\mathbf{T}^T\mathbf{U}^T=\mathbf{P}^T) U T = P ( T T U T = P T ) 라고 쓰면 P T A P = Λ \mathbf{P}^T\mathbf{A}\mathbf{P}= \mathbf{\Lambda} P T A P = Λ 라고 할 수 있다.
따라서 실수로 이루어진 n × n n \times n n × n 행렬 A \mathbf{A} A 는 직교 대각화가 가능하다.
우리는 실수로 이루어진 n × n n \times n n × n 대칭행렬 A \mathbf{A} A 에서 실수 고유값 λ 1 , ⋯ , λ n \lambda_1, \cdots, \lambda_n λ 1 , ⋯ , λ n 을 구할 수 있으며, 이에 대한 고유벡 v 1 , ⋯ , v n \mathbf{v_1}, \cdots, \mathbf{v_n} v 1 , ⋯ , v n 을 구할 수 있고, 그람-슈미트 방법 등을 통해 정규직교기저화 할 수 있다. 이렇게 얻은 정규직교기저들 v 1 , ⋯ , v n \mathbf{v_1}, \cdots, \mathbf{v_n} v 1 , ⋯ , v n 을 이용하여 행렬 P \mathbf{P} P 를 만들 수 있고, 우리는 위에서 고유값과 고유벡터를 통해 P − 1 A P = Λ \mathbf{P^{-1}}\mathbf{A}\mathbf{P}=\Lambda P − 1 A P = Λ 같이 대각화 할 수 있음을 보였다. 다만 여기서 만든 행렬 P \mathbf{P} P 는 정규직교기저들로 이루어져 있으므로 P \mathbf{P} P 는 직교행렬이고 P − 1 A P = P T A P = Λ \mathbf{P^{-1}}\mathbf{A}\mathbf{P}=\mathbf{P}^T\mathbf{A}\mathbf{P}=\Lambda P − 1 A P = P T A P = Λ 이며, 직교대각화 역시 고유값과 고유벡터의 정규직교기저들로 수행할 수 있다.
특히 P T A P = Λ → A = P Λ P T \mathbf{P}^T\mathbf{A}\mathbf{P}=\Lambda \rightarrow \mathbf{A}=\mathbf{P}\Lambda\mathbf{P}^T P T A P = Λ → A = P Λ P T 를 풀어쓰면 다음과 같다.
A = P Λ P T = ( v 1 , ⋯ , v n ) ( λ 1 0 0 0 λ 2 0 0 0 λ 3 ) ( v 1 T ⋮ v n T ) = ∑ i = 1 n λ i v i v i T \mathbf{A}=\mathbf{P}\Lambda\mathbf{P}^T=(\mathbf{v_1}, \cdots, \mathbf{v_n}) \begin{pmatrix} \lambda_1 & 0 & 0\\ 0 & \lambda_2 & 0\\ 0 & 0 & \lambda_3 \end{pmatrix} \begin{pmatrix} \mathbf{v_1}^T\\ \vdots \\ \mathbf{v_n} ^T \end{pmatrix} = \sum^{n}_{i=1}{\lambda_i\mathbf{v_i}\mathbf{v_i}^T} A = P Λ P T = ( v 1 , ⋯ , v n ) ⎝ ⎜ ⎛ λ 1 0 0 0 λ 2 0 0 0 λ 3 ⎠ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛ v 1 T ⋮ v n T ⎠ ⎟ ⎟ ⎞ = i = 1 ∑ n λ i v i v i T
만약 고유값 λ i \lambda_i λ i 를 크기 순으로 정렬할 수 있다면 작은 고유값에 해당하는 term은 0으로 무시할 수 있고(v i \mathbf{v_i} v i 또한 크기가 1인 벡터이므로 원소들이 그리 크지 않음), 이를 통해 행렬 A \mathbf{A} A 를 압축할 수 있다.
2. 특이값 분해
위에서 고유값 분해를 통해 행렬 A \mathbf{A} A 를 A = P Λ P − 1 \mathbf{A}=\mathbf{P}\mathbf{\Lambda}\mathbf{P}^{-1} A = P Λ P − 1 와 같이 대각행렬을 포함한 행렬들의 곱으로 분해할 수 있었으며, 특히 대각행렬 Λ \mathbf{\Lambda} Λ 의 대각 성분은 A \mathbf{A} A 의 고유값들, 행렬 P \mathbf{P} P 의 열백터들은 각 고유값에 해당하는 고유벡터들이었다. 하지만 이러한 고유값 분해는 A \mathbf{A} A 의 고유값을 사용해야하기 때문에 A \mathbf{A} A 가 정방행렬이어야 한다거나, 혹은 직교대각화를 위해 대칭행렬이어야 한다라는 조건이 붙는다. 특이값 분해(SVD, Singular Value Decomposition) 는 이러한 조건 없이 임의의 m × n m \times n m × n 행렬 A \mathbf{A} A 를 다음과 같이 분해하는 방법이다.
A = U Σ V T \mathbf{A} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T A = U Σ V T
이때, A \mathbf{A} A 는 임의의 m × n m \times n m × n 행렬, U \mathbf{U} U 는 m × m m \times m m × m 의 직교행렬, V \mathbf{V} V 는 n × n n \times n n × n 의 직교행렬, Σ \mathbf{\Sigma} Σ 는 m × n m \times n m × n 의 대각행렬이다. 특이값 분해에서도 각 행렬의 구성은 고유값, 고유벡터들과 깊은 연관이 있다. V T \mathbf{V}^T V T 는 n × n n \times n n × n 의 직교행렬이므로 A = U Σ V T → A V = U Σ \mathbf{A} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T \rightarrow \mathbf{A}\mathbf{V} = \mathbf{U}\mathbf{\Sigma} A = U Σ V T → A V = U Σ 로 쓸 수 있다. 이제 이러한 식을 만족하는 행렬 U , Σ , V \mathbf{U},\mathbf{\Sigma},\mathbf{V} U , Σ , V 를 찾을 것이다.
먼저, A T A \mathbf{A}^T\mathbf{A} A T A 를 생각해보면, ( A T A ) T = A T A (\mathbf{A}^T\mathbf{A})^T=\mathbf{A}^T\mathbf{A} ( A T A ) T = A T A 이므로 대칭행렬임을 알 수 있다. 따라서 위에서 보았듯이 A T A = V D V T \mathbf{A}^T\mathbf{A}=\mathbf{V}\mathbf{D}\mathbf{V}^T A T A = V D V T 와 같이 직교 대각화가 가능하다. A T A \mathbf{A}^T\mathbf{A} A T A 의 각 고유값 λ i \lambda_i λ i 에 대해서 ∣ A x ∣ 2 = A x ⋅ A x = x ⋅ A T A x = x ⋅ λ i x = λ i ( x ⋅ x ) = λ i ∣ x ∣ 2 \mid \mathbf{A}\mathbf{x} \mid ^2 = \mathbf{A}\mathbf{x} \cdot \mathbf{A}\mathbf{x} = \mathbf{x}\cdot\mathbf{A}^T\mathbf{A}\mathbf{x}= \mathbf{x}\cdot\lambda_i\mathbf{x}=\lambda_i(\mathbf{x} \cdot \mathbf{x})=\lambda_i\mid \mathbf{x} \mid ^2 ∣ A x ∣ 2 = A x ⋅ A x = x ⋅ A T A x = x ⋅ λ i x = λ i ( x ⋅ x ) = λ i ∣ x ∣ 2 이며, 양변이 양수가 되어야 하므로 고유값 λ i \lambda_i λ i 는 양수가 되어야 한다 (대칭행렬의 고유값이므로 실수이다).
그리고 r a n k ( A T A ) = r a n k ( A ) rank(\mathbf{A}^T\mathbf{A})=rank(\mathbf{A}) r a n k ( A T A ) = r a n k ( A ) 인데, n u l l ( A T A ) ⊆ n u l l ( A ) , n u l l ( A ) ⊆ n u l l ( A T A ) null(\mathbf{A}^T\mathbf{A}) \sube null(\mathbf{A}), null(\mathbf{A}) \sube null(\mathbf{A}^T\mathbf{A}) n u l l ( A T A ) ⊆ n u l l ( A ) , n u l l ( A ) ⊆ n u l l ( A T A ) 각각을 보이면 A T A , A \mathbf{A}^T\mathbf{A}, \mathbf{A} A T A , A 의 null space가 동일함을 보일 수 있고, 차원 정리에 의해 r a n k ( A T A ) = r a n k ( A ) rank(\mathbf{A}^T\mathbf{A})=rank(\mathbf{A}) r a n k ( A T A ) = r a n k ( A ) 가 성립한다. 어떤 벡터 x ∈ n u l l ( A ) \mathbf{x} \in null(\mathbf{A}) x ∈ n u l l ( A ) 에 대해 A T A x = A T 0 = 0 \mathbf{A}^T\mathbf{A}\mathbf{x}=\mathbf{A}^T\mathbf{0}=\mathbf{0} A T A x = A T 0 = 0 이므로 n u l l ( A T A ) ⊆ n u l l ( A ) null(\mathbf{A}^T\mathbf{A}) \sube null(\mathbf{A}) n u l l ( A T A ) ⊆ n u l l ( A ) 이고, x ∈ n u l l ( A T A ) \mathbf{x} \in null(\mathbf{A}^T\mathbf{A}) x ∈ n u l l ( A T A ) 에 대해 A T A x = 0 → x ⋅ A T A x = 0 → A x ⋅ A x = 0 → ∣ A x ∣ 2 = 0 \mathbf{A}^T\mathbf{A}\mathbf{x}=\mathbf{0} \rightarrow \mathbf{x} \cdot\mathbf{A}^T\mathbf{A}\mathbf{x}=\mathbf{0} \rightarrow \mathbf{A}\mathbf{x} \cdot \mathbf{A}\mathbf{x}=\mathbf{0} \rightarrow \mid \mathbf{A}\mathbf{x} \mid ^2 =\mathbf{0} A T A x = 0 → x ⋅ A T A x = 0 → A x ⋅ A x = 0 → ∣ A x ∣ 2 = 0 이므로 n u l l ( A ) ⊆ n u l l ( A T A ) null(\mathbf{A}) \sube null(\mathbf{A}^T\mathbf{A}) n u l l ( A ) ⊆ n u l l ( A T A ) 이다.
따라서 다음과 같이 쓸 수 있다.
r a n k ( A T A ) = r a n k ( A ) = r a n k ( D ) ⋯ 닮음 = k \begin{aligned} rank(\mathbf{A}^T\mathbf{A}) & = rank(\mathbf{A}) \\ & = rank(\mathbf{D}) \;\;\;\;\;\;\; \cdots 닮음 \\ & = k \end{aligned} r a n k ( A T A ) = r a n k ( A ) = r a n k ( D ) ⋯ 닮 음 = k
위에서 보였던 고유값 λ i \lambda_i λ i 는 양수가 되어야 한다는 점에서 대각행렬 D \mathbf{D} D 의 고유값은 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ n ≥ 0 \lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n \geq 0 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ n ≥ 0 이며(큰 순으로 정렬이 가능하다), r a n k ( D ) = k rank(\mathbf{D})=k r a n k ( D ) = k 라는 점에서 λ k + 1 , ⋯ , λ n = 0 \lambda_{k+1}, \cdots, \lambda_{n}=0 λ k + 1 , ⋯ , λ n = 0 이 되어야 한다(r a n k ( D ) = k rank(\mathbf{D})=k r a n k ( D ) = k 이면 D \mathbf{D} D 열백터 중 k k k 개만 선형독립이어야 하며, D \mathbf{D} D 는 대각행렬임).
행렬 V \mathbf{V} V 은 ( v 1 , ⋯ , v n ) (\mathbf{v_1}, \cdots, \mathbf{v_n}) ( v 1 , ⋯ , v n ) 이며, 0이 아닌 고유값에 대한 단위고유벡터들은 ( v 1 , ⋯ , v k ) (\mathbf{v_1}, \cdots, \mathbf{v_k}) ( v 1 , ⋯ , v k ) 로 쓸 수 있다. 이때, V \mathbf{V} V 는 A T A \mathbf{A}^T\mathbf{A} A T A 를 직교대각화 한 것으로 각 v i \mathbf{v_i} v i 는 서로 직교하며, A v i ⋅ A v j = v i ⋅ A T A v j = v i ⋅ λ j v j = λ j ( v i ⋅ v j ) = 0 \mathbf{A}\mathbf{v_i} \cdot \mathbf{A}\mathbf{v_j}=\mathbf{v_i} \cdot \mathbf{A}^T\mathbf{A}\mathbf{v_j}=\mathbf{v_i} \cdot \lambda_j\mathbf{v_j} =\lambda_j(\mathbf{v_i} \cdot \mathbf{v_j})=0 A v i ⋅ A v j = v i ⋅ A T A v j = v i ⋅ λ j v j = λ j ( v i ⋅ v j ) = 0 이 되어 A v i \mathbf{A}\mathbf{v_i} A v i 들도 서로 직교한다. 또한 ∣ A v i ∣ 2 = A v i ⋅ A v i = λ i ( v i ⋅ v i ) = λ i → ∣ A v i ∣ = λ i \mid \mathbf{A}\mathbf{v_i} \mid^2=\mathbf{A}\mathbf{v_i} \cdot \mathbf{A}\mathbf{v_i} = \lambda_i(\mathbf{v_i} \cdot \mathbf{v_i})=\lambda_i \rightarrow \mid \mathbf{A}\mathbf{v_i} \mid =\sqrt{\lambda_i} ∣ A v i ∣ 2 = A v i ⋅ A v i = λ i ( v i ⋅ v i ) = λ i → ∣ A v i ∣ = λ i 이고(고유값들은 실수이며 양수), 이를 이용하면 ( 1 λ 1 A v 1 , ⋯ , 1 λ k A v k ) = ( u 1 , ⋯ , u k ) (\frac{1}{\sqrt{\lambda_1}}\mathbf{A}\mathbf{v_1}, \cdots, \frac{1}{\sqrt{\lambda_k}}\mathbf{A}\mathbf{v_k})=(\mathbf{u_1}, \cdots, \mathbf{u_k}) ( λ 1 1 A v 1 , ⋯ , λ k 1 A v k ) = ( u 1 , ⋯ , u k ) 와 같은 새로운 정규직교기저들을 구성할 수 있다. 이들이 SVD 결과 식에 나오는 행렬 U \mathbf{U} U 를 구성하는 벡터들이 되는데, U \mathbf{U} U 는 m × m m \times m m × m 행렬이므로 m − k m-k m − k 개의 벡터가 부족하지만 u 1 , ⋯ , u k \mathbf{u_1}, \cdots, \mathbf{u_k} u 1 , ⋯ , u k 로부터 m − k m-k m − k 개의 정규직교기저를 생성하는 방법이 존재한다.
예를들어 u 1 T , ⋯ , u k T \mathbf{u_1}^T, \cdots, \mathbf{u_k}^T u 1 T , ⋯ , u k T 들을 행벡터로 하는 행렬 B \mathbf{B} B 를 만들면 이는 k × m k \times m k × m 행렬이고, 차원정리에 의해 r a n k ( B ) + n u l l i t y ( B ) = m rank(\mathbf{B})+nullity(\mathbf{B})=m r a n k ( B ) + n u l l i t y ( B ) = m 이다. 이때, r a n k ( B ) = d i m ( r o w ( B ) ) = k rank(\mathbf{B})=dim(row(\mathbf{B}))=k r a n k ( B ) = d i m ( r o w ( B ) ) = k 이며, n u l l i t y ( B ) = m − k nullity(\mathbf{B})=m-k n u l l i t y ( B ) = m − k 이므로 행렬 B \mathbf{B} B 의 null space는 m − k m-k m − k 개의 기저를 포함하고 있음을 알 수 있다. B \mathbf{B} B 의 null space는 B x = 0 \mathbf{B}\mathbf{x}=\mathbf{0} B x = 0 의 해가 이루는 공간이며, B x = ( u 1 ⋅ x , ⋯ , u k ⋅ x ) T = 0 \mathbf{B}\mathbf{x}=(\mathbf{u_1} \cdot \mathbf{x}, \cdots, \mathbf{u_k} \cdot \mathbf{x})^T=\mathbf{0} B x = ( u 1 ⋅ x , ⋯ , u k ⋅ x ) T = 0 이므로 x \mathbf{x} x 들이 u 1 , ⋯ , u k \mathbf{u_1}, \cdots, \mathbf{u_k} u 1 , ⋯ , u k 들과 직교함을 알 수 있다. 따라서 n u l l ( B ) null(\mathbf{B}) n u l l ( B ) 의 단위기저벡터 w 1 , ⋯ w m − k \mathbf{w}_1, \cdots \mathbf{w}_{m-k} w 1 , ⋯ w m − k 를 구함으로써, u 1 , ⋯ , u k , w 1 , ⋯ w m − k \mathbf{u_1}, \cdots, \mathbf{u_k}, \mathbf{w}_1, \cdots \mathbf{w}_{m-k} u 1 , ⋯ , u k , w 1 , ⋯ w m − k 와 같이 총 m m m 개의 정규직교기저를 생성할 수 있다.
이렇게 생성한 정규직교기저 u 1 , ⋯ , u k , w 1 , ⋯ w m − k \mathbf{u_1}, \cdots, \mathbf{u_k}, \mathbf{w}_1, \cdots \mathbf{w}_{m-k} u 1 , ⋯ , u k , w 1 , ⋯ w m − k 를 이용하여 행렬 U \mathbf{U} U 를 구성하고 다음과 같은 행렬 Σ \mathbf{\Sigma} Σ 를 생각해보자.
U Σ = ( u 1 ⋯ u k w 1 , ⋯ w m − k ) m × m ( λ 1 0 ⋯ 0 0 ⋱ λ k ⋮ ⋮ 0 ⋱ 0 ⋯ 0 ) m × n = ( λ 1 u 1 , ⋯ , λ k u k , 0 , ⋯ , 0 ) m × n = ( A v 1 , ⋯ , A v k , A v k + 1 , ⋯ , A v n ) = A V \begin{aligned} \mathbf{U}\mathbf{\Sigma} & = \left( \begin{array}{ccc|c} \mathbf{u_1} & \cdots & \mathbf{u_k} & \mathbf{w}_1, \cdots \mathbf{w}_{m-k}\\ \end{array} \right)_{m \times m} \begin{pmatrix} \sqrt{\lambda_{1}} & 0 & & \cdots & & 0\\ 0 & \ddots & & & & \\ & & \sqrt{\lambda_{k}} & & & \vdots \\ \vdots & & & 0 \\ & & & & \ddots \\ 0 & & \cdots & & & 0 \end{pmatrix}_{m \times n} \\ & = (\sqrt{\lambda_{1}}\mathbf{u_1}, \cdots, \sqrt{\lambda_{k}}\mathbf{u_k}, 0, \cdots, 0)_{m \times n} \\ & = (\mathbf{A}\mathbf{v_1}, \cdots, \mathbf{A}\mathbf{v_k}, \mathbf{A}\mathbf{v_{k+1}}, \cdots, \mathbf{A}\mathbf{v_n}) \\ & = \mathbf{A}\mathbf{V} \end{aligned} U Σ = ( u 1 ⋯ u k w 1 , ⋯ w m − k ) m × m ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ λ 1 0 ⋮ 0 0 ⋱ λ k ⋯ ⋯ 0 ⋱ 0 ⋮ 0 ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎞ m × n = ( λ 1 u 1 , ⋯ , λ k u k , 0 , ⋯ , 0 ) m × n = ( A v 1 , ⋯ , A v k , A v k + 1 , ⋯ , A v n ) = A V
행렬 Σ \mathbf{\Sigma} Σ 는 대각성분이 A T A \mathbf{A}^T\mathbf{A} A T A 의 고유값의 제곱근 및 0으로 이루어진 대각행렬이며, 결과적으로 U Σ = A V → U Σ V T = A \mathbf{U}\mathbf{\Sigma} = \mathbf{A}\mathbf{V} \rightarrow \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T = \mathbf{A} U Σ = A V → U Σ V T = A 가 되어 SVD가 수행된다. 여기서 λ i = σ i \sqrt{\lambda_i}=\sigma_i λ i = σ i 라고 쓰며 이 값들을 특이값이라고 하고, 그에 대응되는 U , V T \mathbf{U},\mathbf{V}^T U , V T 의 벡터들, u 1 , ⋯ , u k \mathbf{u_1}, \cdots, \mathbf{u_k} u 1 , ⋯ , u k 및 v 1 T , ⋯ , v k T \mathbf{v_1}^T, \cdots, \mathbf{v_k}^T v 1 T , ⋯ , v k T 들을 왼쪽, 오른쪽 특이벡터라고 한다.
또한 위의 전개에서 w 1 , ⋯ w m − k \mathbf{w}_1, \cdots \mathbf{w}_{m-k} w 1 , ⋯ w m − k 및 v k + 1 , ⋯ v n \mathbf{v}_{k+1}, \cdots \mathbf{v}_{n} v k + 1 , ⋯ v n 은 0과 곱해져 사라지므로 다음과 같이 m × k m \times k m × k 의 직교행렬 U ′ \mathbf{U'} U ′ , k × n k \times n k × n 의 직교행렬 V ′ T \mathbf{V'}^T V ′ T , k × k k \times k k × k 의 대각행렬 Σ ′ \mathbf{\Sigma'} Σ ′ 로 다음과 같이 축소된 SVD 또한 가능하다.
U ′ Σ ′ = ( u 1 ⋯ u k ) m × k ( λ 1 0 ⋱ 0 λ k ) k × k = ( λ 1 u 1 , ⋯ , λ k u k ) m × k = ( A v 1 , ⋯ , A v k ) = A V ′ \begin{aligned} \mathbf{U'}\mathbf{\Sigma'} & = \left( \begin{array}{ccc} \mathbf{u_1} & \cdots & \mathbf{u_k}\\ \end{array} \right)_{m \times k} \begin{pmatrix} \sqrt{\lambda_{1}} & & 0\\ & \ddots & \\ 0 & & \sqrt{\lambda_{k}} \end{pmatrix}_{k \times k} \\ & = (\sqrt{\lambda_{1}}\mathbf{u_1}, \cdots, \sqrt{\lambda_{k}}\mathbf{u_k})_{m \times k} \\ & = (\mathbf{A}\mathbf{v_1}, \cdots, \mathbf{A}\mathbf{v_k}) \\ & = \mathbf{A}\mathbf{V'} \end{aligned} U ′ Σ ′ = ( u 1 ⋯ u k ) m × k ⎝ ⎜ ⎛ λ 1 0 ⋱ 0 λ k ⎠ ⎟ ⎞ k × k = ( λ 1 u 1 , ⋯ , λ k u k ) m × k = ( A v 1 , ⋯ , A v k ) = A V ′
여기서 고유값분해에서와 마찬가지로 작은 고유값에 해당하는 term을 0으로 두어 데이터 압축에도 활용할 수 있다.
3. 특이값 분해의 활용
3.1. 최소제곱법
특이값 분해는 임의의 임의의 m × n m \times n m × n 행렬 A \mathbf{A} A 를 A = U Σ V T = U ′ Σ ′ V ′ T \mathbf{A} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T = \mathbf{U'}\mathbf{\Sigma'}\mathbf{V'}^T A = U Σ V T = U ′ Σ ′ V ′ T 와 같이 분해할 수 있다는 점에서 다양한 활용성을 갖는다. 특히 ∣ A x − b ∣ \mid \mathbf{A}\mathbf{x}-\mathbf{b} \mid ∣ A x − b ∣ 가 최소가 되는 x \mathbf{x} x 를 찾는 최소제곱문제에도 적용 가능하다.
A \mathbf{A} A 가 가역행렬일 경우 A − 1 = ( U ′ Σ ′ V ′ T ) − 1 = V ′ Σ ′ − 1 U ′ T \mathbf{A}^{-1}=(\mathbf{U'}\mathbf{\Sigma'}\mathbf{V'}^T)^{-1}=\mathbf{V'}\mathbf{\Sigma'}^{-1}\mathbf{U'}^T A − 1 = ( U ′ Σ ′ V ′ T ) − 1 = V ′ Σ ′ − 1 U ′ T 으로 최소제곱문제가 쉽게 해결된다. 가역행렬이 아닐 경우 V ′ Σ ′ − 1 U ′ T \mathbf{V'}\mathbf{\Sigma'}^{-1}\mathbf{U'}^T V ′ Σ ′ − 1 U ′ T 가 A \mathbf{A} A 의 역행렬은 아니지만 여전히 최소제곱문제의 해를 도출하는데, V ′ Σ ′ − 1 U ′ T \mathbf{V'}\mathbf{\Sigma'}^{-1}\mathbf{U'}^T V ′ Σ ′ − 1 U ′ T 를 A \mathbf{A} A 의 유사역행렬(pseudo inverse) 라고 한다.
이제 V ′ Σ ′ − 1 U ′ T \mathbf{V'}\mathbf{\Sigma'}^{-1}\mathbf{U'}^T V ′ Σ ′ − 1 U ′ T 가 정말 최소제곱문제의 해를 도출하는지 살펴보자. 예상되는 최소제곱문제의 해는 x ^ = V ′ Σ ′ − 1 U ′ T b \mathbf{\hat{x}}=\mathbf{V'}\mathbf{\Sigma'}^{-1}\mathbf{U'}^T\mathbf{b} x ^ = V ′ Σ ′ − 1 U ′ T b 이다.
x ^ = V ′ Σ ′ − 1 U ′ T b → V ′ T x ^ = Σ ′ − 1 U ′ T b → Σ ′ V ′ T x ^ = U ′ T b → U ′ Σ ′ V ′ T x ^ = U ′ U ′ T b → A x ^ = U ′ U ′ T b \begin{aligned} & \;\;\;\;\;\;\;\; \mathbf{\hat{x}}=\mathbf{V'}\mathbf{\Sigma'}^{-1}\mathbf{U'}^T\mathbf{b} \\ & \rightarrow \;\; \mathbf{V'}^T\mathbf{\hat{x}}=\mathbf{\Sigma'}^{-1}\mathbf{U'}^T\mathbf{b} \\ & \rightarrow \;\; \mathbf{\Sigma'}\mathbf{V'}^T\mathbf{\hat{x}}=\mathbf{U'}^T\mathbf{b} \\ & \rightarrow \;\; \mathbf{U'}\mathbf{\Sigma'}\mathbf{V'}^T\mathbf{\hat{x}}=\mathbf{U'}\mathbf{U'}^T\mathbf{b} \\ & \rightarrow \;\; \mathbf{A}\mathbf{\hat{x}}=\mathbf{U'}\mathbf{U'}^T\mathbf{b} \end{aligned} x ^ = V ′ Σ ′ − 1 U ′ T b → V ′ T x ^ = Σ ′ − 1 U ′ T b → Σ ′ V ′ T x ^ = U ′ T b → U ′ Σ ′ V ′ T x ^ = U ′ U ′ T b → A x ^ = U ′ U ′ T b
위의 식은 QR decomposition 에서 최소제곱문제가 해결됨을 보이기 위해 전개했던 식과 유사하다. U ′ U ′ T b \mathbf{U'}\mathbf{U'}^T\mathbf{b} U ′ U ′ T b 는 QR decomposition에서 설명했듯이 column space C o l ( U ′ ) Col(\mathbf{U'}) C o l ( U ′ ) 로의 b \mathbf{b} b 의 투영 b ∥ C o l ( U ′ ) \mathbf{b}^{\parallel Col(\mathbf{U'})} b ∥ C o l ( U ′ ) 이며, C o l ( U ′ ) = C o l ( A ) Col(\mathbf{U'})=Col(\mathbf{A}) C o l ( U ′ ) = C o l ( A ) 이므로 U ′ U ′ T b = b ∥ C o l ( U ′ ) = b ∥ C o l ( A ) \mathbf{U'}\mathbf{U'}^T\mathbf{b}=\mathbf{b}^{\parallel Col(\mathbf{U'})}=\mathbf{b}^{\parallel Col(\mathbf{A}) } U ′ U ′ T b = b ∥ C o l ( U ′ ) = b ∥ C o l ( A ) 이 되어 계산된 벡터 x ^ \mathbf{\hat{x}} x ^ 가 주어진 최소제곱문제의 최적해가 된다 (C o l ( A ) Col(\mathbf{A}) C o l ( A ) 가 곧 A x \mathbf{A}\mathbf{x} A x 의 공간이다).
여기서 C o l ( U ′ ) = C o l ( A ) Col(\mathbf{U'})=Col(\mathbf{A}) C o l ( U ′ ) = C o l ( A ) 인 것과 더불어 R o w ( V ′ T ) = R o w ( A ) Row(\mathbf{V'^T})=Row(\mathbf{A}) R o w ( V ′ T ) = R o w ( A ) 인데, 이는 SVD 정의 식을 전개함으로써 도출이 가능하다.
A = U ′ Σ ′ V ′ T = ( u 1 ⋯ u k ) m × k ( λ 1 0 ⋱ 0 λ k ) k × k ( v 1 T ⋮ v k T ) k × n = ( λ 1 u 1 , ⋯ , λ k u k ) m × k ( v 1 T ⋮ v k T ) k × n \begin{aligned} \mathbf{A} & = \mathbf{U'}\mathbf{\Sigma'}\mathbf{V'^T}\\ & = \left( \begin{array}{ccc} \mathbf{u_1} & \cdots & \mathbf{u_k}\\ \end{array} \right)_{m \times k} \begin{pmatrix} \sqrt{\lambda_{1}} & & 0\\ & \ddots & \\ 0 & & \sqrt{\lambda_{k}} \end{pmatrix}_{k \times k} \begin{pmatrix} \mathbf{v_1}^T\\ \vdots \\ \mathbf{v_k}^T \end{pmatrix}_{k \times n}\\ & = (\sqrt{\lambda_{1}}\mathbf{u_1}, \cdots, \sqrt{\lambda_{k}}\mathbf{u_k})_{m \times k} \begin{pmatrix} \mathbf{v_1}^T\\ \vdots \\ \mathbf{v_k}^T \end{pmatrix}_{k \times n} \end{aligned} A = U ′ Σ ′ V ′ T = ( u 1 ⋯ u k ) m × k ⎝ ⎜ ⎛ λ 1 0 ⋱ 0 λ k ⎠ ⎟ ⎞ k × k ⎝ ⎜ ⎜ ⎛ v 1 T ⋮ v k T ⎠ ⎟ ⎟ ⎞ k × n = ( λ 1 u 1 , ⋯ , λ k u k ) m × k ⎝ ⎜ ⎜ ⎛ v 1 T ⋮ v k T ⎠ ⎟ ⎟ ⎞ k × n
r a n k ( A ) = d i m ( R o w ( A ) ) rank(\mathbf{A}) = dim(Row(\mathbf{A})) r a n k ( A ) = d i m ( R o w ( A ) ) 인데, 위 전개에서 행렬 A \mathbf{A} A 의 행들은 v 1 T , ⋯ , v k T \mathbf{v_1}^T, \cdots, \mathbf{v_k}^T v 1 T , ⋯ , v k T 의 선형결합으로 이루어져 있으므로 R o w ( A ) ⊆ R o w ( V ′ T ) Row(\mathbf{A}) \sube Row(\mathbf{V'^T}) R o w ( A ) ⊆ R o w ( V ′ T ) 라고 할 수 있다. 그런데 r a n k ( A T A ) = r a n k ( A ) = k rank(\mathbf{A}^T\mathbf{A})=rank(\mathbf{A})=k r a n k ( A T A ) = r a n k ( A ) = k 이고, v 1 T , ⋯ , v k T \mathbf{v_1}^T, \cdots, \mathbf{v_k}^T v 1 T , ⋯ , v k T 각각은 선형독립이므로, r a n k ( V ′ T ) = d i m ( R o w ( V ′ T ) ) = k rank(\mathbf{V'^T})=dim(Row(\mathbf{V'^T}))=k r a n k ( V ′ T ) = d i m ( R o w ( V ′ T ) ) = k 이다. 따라서 R o w ( A ) ⊆ R o w ( V ′ T ) , d i m ( R o w ( A ) ) = d i m ( R o w ( V ′ T ) ) Row(\mathbf{A}) \sube Row(\mathbf{V'^T}), \; dim(Row(\mathbf{A})) = dim(Row(\mathbf{V'^T})) R o w ( A ) ⊆ R o w ( V ′ T ) , d i m ( R o w ( A ) ) = d i m ( R o w ( V ′ T ) ) 가 되어 R o w ( A ) = R o w ( V ′ T ) Row(\mathbf{A})=Row(\mathbf{V'^T}) R o w ( A ) = R o w ( V ′ T ) 이다. 이와 비슷하게 행렬 A \mathbf{A} A 의 열들은 행들은 u 1 , ⋯ , u k \mathbf{u_1}, \cdots, \mathbf{u_k} u 1 , ⋯ , u k 의 선형결합으로 이루어져 있으므로 C o l ( U ′ ) = C o l ( A ) Col(\mathbf{U'})=Col(\mathbf{A}) C o l ( U ′ ) = C o l ( A ) 이다.
위에서는 ∣ A x − b ∣ \mid \mathbf{A}\mathbf{x}-\mathbf{b} \mid ∣ A x − b ∣ 를 최소로 만드는 최소제곱법을 살펴보았지만, 사실 A x = 0 \mathbf{A}\mathbf{x}=\mathbf{0} A x = 0 이라는 문제를 해결하기 위해 ∣ A x ∣ \mid \mathbf{A}\mathbf{x} \mid ∣ A x ∣ 를 최소로 만드는 최소제곱법 또한 많이 활용된다(물론 영벡터라는 자명한 해를 구하고자 함은 아니기 때문에 보통 ∣ x ∣ = 1 \mid \mathbf{x} \mid=1 ∣ x ∣ = 1 라는 제약조건이 붙음). 만약 A \mathbf{A} A 에 어떤 오른쪽 특이벡터를 곱한다면, V \mathbf{V} V 는 직교행렬이므로 A v i = σ i u i \mathbf{A}\mathbf{v_i}=\mathbf{\sigma_i}\mathbf{u_i} A v i = σ i u i 의 형태가 된다. 이때, 0인 특이값이 있다면 A x = 0 \mathbf{A}\mathbf{x}=\mathbf{0} A x = 0 를 만족하는 정확한 해를 찾을 수 있고, 만약 0인 특이값이 없어 정확한 해를 찾을 수 없다면 최소의 특이값에 대응되는 오른쪽 특이벡터가 ∣ A x ∣ \mid \mathbf{A}\mathbf{x} \mid ∣ A x ∣ 를 최소로 만드는 해이다. 이에 대한 증명은 아래에서 소개한다(아래에서 기술될 내용을 이용하면 쉽게 파생되어 이 글에서는 아래 내용을 이용하지만, 이 최소제곱법 해만을 증명하려고 한다면 굳이 아래와 같이 복잡하게 할 필요는 없음).
3.2. Rank-r 근사
SVD를 통해 찾아낸 특이값과 특이벡터 들을 활용하면 어떤 행렬 A \mathbf{A} A 에 대한 Rank-r r r 근사 (r ≤ k , r a n k ( A ) = k r \leq k,\;\; rank(\mathbf{A})=k r ≤ k , r a n k ( A ) = k )를 찾을 수 있다. 이는 주어진 행렬 A \mathbf{A} A 의 rank보다 작은 rank를 가지는 행렬 A ′ \mathbf{A'} A ′ 로 A \mathbf{A} A 를 근사하는 것이며, 근사는 A ′ \mathbf{A'} A ′ 와 A \mathbf{A} A 사이의 차이에 대한 norm을 최소로 한다는 것을 의미한다. 어떤 행렬에 대한 norm ∣ A ∣ \left| \mathbf{A} \right| ∣ A ∣ 를 정의하는 방법은 여러가지가 있지만 여기서는 다음과 같은 Frobenius norm을 사용한다.
A = ( a 1 T ⋮ a m T ) , ∣ A ∣ F = ∑ i ∑ j A i j = ( A 11 2 + A 12 2 + ⋯ + A 1 n 2 ) + ⋯ + ( A m 1 2 + A m 2 2 + ⋯ + A m n 2 ) = ∣ a 1 ∣ 2 + ⋯ + ∣ a m ∣ 2 \mathbf{A}= \begin{pmatrix} \mathbf{a_1}^T\\ \vdots \\ \mathbf{a_m}^T \end{pmatrix},\;\;\; \begin{aligned} \left| \mathbf{A} \right|_F & = \sqrt{\sum_{i}{\sum_{j}{A_{ij}}}} \\ & = (A_{11}^2 + A_{12}^2 + \cdots + A_{1n}^2) + \cdots + (A_{m1}^2 + A_{m2}^2 + \cdots + A_{mn}^2) \\ & = \left| \mathbf{a_1} \right|^2 + \cdots + \left| \mathbf{a_m} \right|^2 \end{aligned} A = ⎝ ⎜ ⎜ ⎛ a 1 T ⋮ a m T ⎠ ⎟ ⎟ ⎞ , ∣ A ∣ F = i ∑ j ∑ A i j = ( A 1 1 2 + A 1 2 2 + ⋯ + A 1 n 2 ) + ⋯ + ( A m 1 2 + A m 2 2 + ⋯ + A m n 2 ) = ∣ a 1 ∣ 2 + ⋯ + ∣ a m ∣ 2
이때, A i j A_{ij} A i j 는 행렬 A \mathbf{A} A 의 성분들이다. 원래의 rank보다 작은 rank로 근사할 경우 행렬의 크기를 줄일 수 있고, 주요 성분 만이 남아 행렬의 분석에도 도움이 될 수 있다. 예를 들어 rank가 1인 행렬의 경우 m × n m \times n m × n 크기의 행렬을 벡터곱 u v T \mathbf{u}\mathbf{v}^T u v T (u \mathbf{u} u : 길이 m m m , v \mathbf{v} v : 길이 n n n )으로 표현이 가능하며, 이때 사용되는 원소는 m + n m+n m + n 개뿐이다.
A ′ \mathbf{A'} A ′ 을 A \mathbf{A} A 에 대한 최적의 Rank-r r r 근사 (r ≤ k , r a n k ( A ) = k r \leq k,\;\; rank(\mathbf{A})=k r ≤ k , r a n k ( A ) = k )라고 해보자. 이는 ∣ A − A ′ ∣ F 2 \left| \mathbf{A}- \mathbf{A'} \right|_F^2 ∣ A − A ′ ∣ F 2 가 최소가 됨을 의미하며, 위의 norm의 정의에 의해 ∣ A − A ′ ∣ F 2 = \left| \mathbf{A}- \mathbf{A'} \right|_F^2= ∣ A − A ′ ∣ F 2 = (A − A ′ \mathbf{A}- \mathbf{A'} A − A ′ 의 첫번째 행벡터) + ... + (A − A ′ \mathbf{A}- \mathbf{A'} A − A ′ 의 m번째 행벡터) 이다. Rank-r r r 행렬 A ′ \mathbf{A'} A ′ 가 포함하는 r r r 개의 기저는 어떠한 공간 V V V 를 생성하며, A ′ \mathbf{A'} A ′ 의 행은 공간 V V V 에 포함되어 있다. 따라서 ∣ A − A ′ ∣ F 2 \left| \mathbf{A}- \mathbf{A'} \right|_F^2 ∣ A − A ′ ∣ F 2 를 최소로 하기 위해서 A ′ \mathbf{A'} A ′ 의 행벡터들은 다음과 같이 결정되어야 한다.
A ′ = ( 공간 V 에서 a 1 에 가장 가까운 벡터 ⋮ 공간 V 에서 a m 에 가장 가까운 벡터 ) \mathbf{A'}= \begin{pmatrix} 공간\;V에서\;\mathbf{a_1}에\;가장\;가까운\;벡터\\ \vdots \\ 공간\;V에서\;\mathbf{a_m}에\;가장\;가까운\;벡터 \end{pmatrix} A ′ = ⎝ ⎜ ⎜ ⎛ 공 간 V 에 서 a 1 에 가 장 가 까 운 벡 터 ⋮ 공 간 V 에 서 a m 에 가 장 가 까 운 벡 터 ⎠ ⎟ ⎟ ⎞
이때 어떤 벡터 a \mathbf{a} a 는 어떤 공간 V V V 에 대해 a = a ⊥ V + a ∥ V \mathbf{a}=\mathbf{a}^{\perp V}+\mathbf{a}^{\parallel V} a = a ⊥ V + a ∥ V 와 같이 표현될 수 있고, 공간 V V V 에서 a \mathbf{a} a 에 가장 가까운 벡터는 a ∥ V \mathbf{a}^{\parallel V} a ∥ V , 공간 V V V 과 벡터 a \mathbf{a} a 사이의 거리는 ∣ a ⊥ V ∣ \left| \mathbf{a}^{\perp V} \right| ∣ ∣ ∣ a ⊥ V ∣ ∣ ∣ 이다. 따라서 ∣ A − A ′ ∣ F 2 = \left| \mathbf{A}- \mathbf{A'} \right|_F^2= ∣ A − A ′ ∣ F 2 = (a 1 \mathbf{a_1} a 1 에서 공간 V V V 사이의 거리)2 ^2 2 + ... + (a m \mathbf{a_m} a m 에서 공간 V V V 사이의 거리)2 ^2 2 이 된다.
따라서 주어진 ∣ A − A ′ ∣ F 2 \left| \mathbf{A}- \mathbf{A'} \right|_F^2 ∣ A − A ′ ∣ F 2 는 A \mathbf{A} A 의 각 행들에서 공간 V V V 사이의 거리의 제곱의 합으로 주어지며, 이러한 공간 V V V 는 A \mathbf{A} A 로부터 계산되는 r r r 개의 특이벡터들이 span하는 공간이다. 또한 ∣ A − A ′ ∣ F 2 \left| \mathbf{A}- \mathbf{A'} \right|_F^2 ∣ A − A ′ ∣ F 2 는 특이벡터들에 대응되는 특이값을 이용하여 ∣ A − A ′ ∣ F 2 = ∣ A ∣ F 2 − σ 1 − ⋯ − σ r \left| \mathbf{A}- \mathbf{A'} \right|_F^2=\left| \mathbf{A} \right|_F^2-\sigma_1-\cdots-\sigma_r ∣ A − A ′ ∣ F 2 = ∣ A ∣ F 2 − σ 1 − ⋯ − σ r 이다(아래에서 증명함).
a i ∥ V = a i ∥ v 1 + ⋯ + a i ∥ v r = ( a i ⋅ v 1 ) v 1 + ⋯ + ( a i ⋅ v r ) v r \mathbf{a_i}^{\parallel V}=\mathbf{a_i}^{\parallel \mathbf{v_1}}+\cdots+\mathbf{a_i}^{\parallel \mathbf{v_r}}=(\mathbf{a_i} \cdot \mathbf{v_1})\mathbf{v_1} + \cdots + (\mathbf{a_i} \cdot \mathbf{v_r})\mathbf{v_r} a i ∥ V = a i ∥ v 1 + ⋯ + a i ∥ v r = ( a i ⋅ v 1 ) v 1 + ⋯ + ( a i ⋅ v r ) v r 로 쓸 수 있으며, 행렬 A \mathbf{A} A 에 대한 Rank-r r r 근사 A ′ \mathbf{A'} A ′ 은 다음과 같이 쓸 수 있다.
A ′ = ( ( a 1 ⋅ v 1 ) v 1 T ⋮ ( a m ⋅ v 1 ) v 1 T ) + ⋯ + ( ( a 1 ⋅ v r ) v r T ⋮ ( a m ⋅ v r ) v r T ) = σ 1 ( u 1 ) ( v 1 T ) + ⋯ + σ r ( u r ) ( v r T ) = ( u 1 ⋯ u r ) ( σ 1 ⋱ σ r ) ( v 1 ⋮ v r ) = U ˉ Σ ˉ V T ˉ \begin{aligned} \mathbf{A'} & = \begin{pmatrix} (\mathbf{a_1} \cdot \mathbf{v_1})\mathbf{v_1}^T\\ \vdots \\ (\mathbf{a_m} \cdot \mathbf{v_1})\mathbf{v_1}^T \end{pmatrix} + \cdots + \begin{pmatrix} (\mathbf{a_1} \cdot \mathbf{v_r})\mathbf{v_r}^T\\ \vdots \\ (\mathbf{a_m} \cdot \mathbf{v_r})\mathbf{v_r}^T \end{pmatrix}\\ & = \sigma_1 \begin{pmatrix} \\ \mathbf{u_1} \\ \; \end{pmatrix} \begin{pmatrix} &\mathbf{v_1}^T & \end{pmatrix} + \cdots + \sigma_r \begin{pmatrix} \\ \mathbf{u_r} \\ \; \end{pmatrix} \begin{pmatrix} &\mathbf{v_r}^T & \end{pmatrix}\\ & = \left( \begin{array}{c|c|c} & & \\ & & \\ \mathbf{u_1} & \cdots & \mathbf{u_r} \\ & & \\ & & \\ \end{array} \right) \begin{pmatrix} \sigma_1 & & \\ & \ddots & \\ & & \sigma_r \end{pmatrix} \begin{pmatrix} & \mathbf{v_1} & \\ \hline & \vdots & \\ \hline & \mathbf{v_r} & \end{pmatrix}\\ & = \bar{\mathbf{U}}\bar{\mathbf{\Sigma}}\bar{\mathbf{V}^T} \end{aligned} A ′ = ⎝ ⎜ ⎜ ⎛ ( a 1 ⋅ v 1 ) v 1 T ⋮ ( a m ⋅ v 1 ) v 1 T ⎠ ⎟ ⎟ ⎞ + ⋯ + ⎝ ⎜ ⎜ ⎛ ( a 1 ⋅ v r ) v r T ⋮ ( a m ⋅ v r ) v r T ⎠ ⎟ ⎟ ⎞ = σ 1 ⎝ ⎜ ⎛ u 1 ⎠ ⎟ ⎞ ( v 1 T ) + ⋯ + σ r ⎝ ⎜ ⎛ u r ⎠ ⎟ ⎞ ( v r T ) = ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ u 1 ⋯ u r ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ⎞ ⎝ ⎜ ⎛ σ 1 ⋱ σ r ⎠ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛ v 1 ⋮ v r ⎠ ⎟ ⎟ ⎞ = U ˉ Σ ˉ V T ˉ
즉, 행렬 A \mathbf{A} A 에 대한 Rank-r r r 근사는 행렬 A \mathbf{A} A 의 SVD에서 일부의 특이값 및 특이벡터만 취한 것으로 볼 수 있으며, 앞에서 설명한 SVD 활용 데이터 압축과도 연관지어 생각할 수 있다.
위에서 ( a i ⋅ v i ) v i T (\mathbf{a_i} \cdot \mathbf{v_i})\mathbf{v_i}^T ( a i ⋅ v i ) v i T 들로 표현된 행렬이 갑자기 σ i , u i \sigma_i, \mathbf{u_i} σ i , u i 로 표현되었으나, 이는 SVD 유도과정에서 U Σ = A V \mathbf{U}\mathbf{\Sigma}=\mathbf{A}\mathbf{V} U Σ = A V 를 전개해보면 알 수 있다.
이제 앞에서 생략한 증명을 살펴보자.
먼저 어떤 공간 V V V 의 정규직교기저가 v 1 , ⋯ , v r \mathbf{v_1}, \cdots, \mathbf{v_r} v 1 , ⋯ , v r 이고, a 1 , ⋯ , a m \mathbf{a_1}, \cdots, \mathbf{a_m} a 1 , ⋯ , a m 이 행렬 A \mathbf{A} A 의 행이라고 할 때, (a 1 \mathbf{a_1} a 1 에서 공간 V V V 사이의 거리)2 ^2 2 + ... + (a m \mathbf{a_m} a m 에서 공간 V V V 사이의 거리)2 ^2 2 =∣ A ∣ F 2 − ∣ A v 1 ∣ 2 − ∣ A v 2 ∣ 2 − ⋯ − ∣ A v r ∣ 2 \left| \mathbf{A} \right|_F^2- \left| \mathbf{A}\mathbf{v_1} \right|^2-\left| \mathbf{A}\mathbf{v_2} \right|^2-\cdots-\left| \mathbf{A}\mathbf{v_r} \right|^2 ∣ A ∣ F 2 − ∣ A v 1 ∣ 2 − ∣ A v 2 ∣ 2 − ⋯ − ∣ A v r ∣ 2 임을 보인다.
a i = a i ⊥ V + a i ∥ V \mathbf{a_i}=\mathbf{a_i}^{\perp V}+\mathbf{a_i}^{\parallel V} a i = a i ⊥ V + a i ∥ V 이며, 피타고라스 정리에 의해 ∣ a i ⊥ V ∣ 2 = ∣ a i ∣ 2 − ∣ a i ∥ V ∣ 2 \left| \mathbf{a_i}^{\perp V} \right|^2 = \left| \mathbf{a_i} \right|^2-\left| \mathbf{a_i}^{\parallel V} \right|^2 ∣ ∣ ∣ a i ⊥ V ∣ ∣ ∣ 2 = ∣ a i ∣ 2 − ∣ ∣ ∣ a i ∥ V ∣ ∣ ∣ 2 이다. 따라서 구하고자 하는 a i \mathbf{a_i} a i 부터 공간 V V V 사이의 제곱 거리의 합은 다음과 같이 쓸 수 있다.
( ∣ a 1 ∣ 2 − ∣ a 1 ∥ V ∣ 2 ) + ⋯ + ( ∣ a m ∣ 2 − ∣ a m ∥ V ∣ 2 ) = ( ∣ a 1 ∣ 2 + ⋯ + ∣ a m ∣ 2 ) − ( ∣ a 1 ∥ V ∣ 2 + ⋯ + ∣ a m ∥ V ∣ 2 ) = ∣ A ∣ F 2 − ( ( ∣ a 1 ∥ v 1 ∣ 2 + ⋯ + ∣ a 1 ∥ v r ∣ 2 ) + ⋯ + ( ∣ a m ∥ v 1 ∣ 2 + ⋯ + ∣ a m ∥ v r ∣ 2 ) ) = ∣ A ∣ F 2 − ( ( ( a 1 ⋅ v 1 ) 2 + ⋯ + ( a 1 ⋅ v r ) 2 ) + ⋯ + ( ( a m ⋅ v 1 ) 2 + ⋯ + ( a m ⋅ v r ) 2 ) ) = ∣ A ∣ F 2 − ( ( ( a 1 ⋅ v 1 ) 2 + ⋯ + ( a m ⋅ v 1 ) 2 ) + ⋯ + ( ( a 1 ⋅ v r ) 2 + ⋯ + ( a m ⋅ v r ) 2 ) ) = ∣ A ∣ F 2 − ∣ A v 1 ∣ 2 − ⋯ − ∣ A v r ∣ 2 \begin{aligned} (\left| \mathbf{a_1} \right|^2-\left| \mathbf{a_1}^{\parallel V}\right|^2)+ \cdots + (\left| \mathbf{a_m} \right|^2-\left| \mathbf{a_m}^{\parallel V}\right|^2) & = (\left| \mathbf{a_1} \right|^2+\cdots+\left| \mathbf{a_m} \right|^2) - (\left| \mathbf{a_1}^{\parallel V}\right|^2+\cdots+\left| \mathbf{a_m}^{\parallel V}\right|^2) \\ & = \left| \mathbf{A} \right|^2_F-\left((\left| \mathbf{a_1}^{\parallel v_1}\right|^2+\cdots+\left| \mathbf{a_1}^{\parallel v_r}\right|^2) + \cdots + (\left| \mathbf{a_m}^{\parallel v_1}\right|^2+\cdots+\left| \mathbf{a_m}^{\parallel v_r}\right|^2)\right) \\ & = \left| \mathbf{A} \right|^2_F-\left(((\mathbf{a_1} \cdot \mathbf{v_1})^2+\cdots+(\mathbf{a_1} \cdot \mathbf{v_r})^2)+\cdots+((\mathbf{a_m} \cdot \mathbf{v_1})^2+\cdots+(\mathbf{a_m} \cdot \mathbf{v_r})^2)\right) \\ & = \left| \mathbf{A} \right|^2_F-\left(((\mathbf{a_1} \cdot \mathbf{v_1})^2+\cdots+(\mathbf{a_m} \cdot \mathbf{v_1})^2)+\cdots+((\mathbf{a_1} \cdot \mathbf{v_r})^2+\cdots+(\mathbf{a_m} \cdot \mathbf{v_r})^2)\right) \\ & = \left| \mathbf{A} \right|^2_F-\left| \mathbf{A}\mathbf{v_1} \right|^2-\cdots-\left| \mathbf{A}\mathbf{v_r} \right|^2 \end{aligned} ( ∣ a 1 ∣ 2 − ∣ ∣ ∣ ∣ a 1 ∥ V ∣ ∣ ∣ ∣ 2 ) + ⋯ + ( ∣ a m ∣ 2 − ∣ ∣ ∣ ∣ a m ∥ V ∣ ∣ ∣ ∣ 2 ) = ( ∣ a 1 ∣ 2 + ⋯ + ∣ a m ∣ 2 ) − ( ∣ ∣ ∣ ∣ a 1 ∥ V ∣ ∣ ∣ ∣ 2 + ⋯ + ∣ ∣ ∣ ∣ a m ∥ V ∣ ∣ ∣ ∣ 2 ) = ∣ A ∣ F 2 − ( ( ∣ ∣ ∣ ∣ a 1 ∥ v 1 ∣ ∣ ∣ ∣ 2 + ⋯ + ∣ ∣ ∣ ∣ a 1 ∥ v r ∣ ∣ ∣ ∣ 2 ) + ⋯ + ( ∣ ∣ ∣ ∣ a m ∥ v 1 ∣ ∣ ∣ ∣ 2 + ⋯ + ∣ ∣ ∣ ∣ a m ∥ v r ∣ ∣ ∣ ∣ 2 ) ) = ∣ A ∣ F 2 − ( ( ( a 1 ⋅ v 1 ) 2 + ⋯ + ( a 1 ⋅ v r ) 2 ) + ⋯ + ( ( a m ⋅ v 1 ) 2 + ⋯ + ( a m ⋅ v r ) 2 ) ) = ∣ A ∣ F 2 − ( ( ( a 1 ⋅ v 1 ) 2 + ⋯ + ( a m ⋅ v 1 ) 2 ) + ⋯ + ( ( a 1 ⋅ v r ) 2 + ⋯ + ( a m ⋅ v r ) 2 ) ) = ∣ A ∣ F 2 − ∣ A v 1 ∣ 2 − ⋯ − ∣ A v r ∣ 2
이제 a 1 , ⋯ , a m \mathbf{a_1}, \cdots, \mathbf{a_m} a 1 , ⋯ , a m 이 행렬 A \mathbf{A} A 의 행, v 1 , ⋯ , v k \mathbf{v_1}, \cdots, \mathbf{v_k} v 1 , ⋯ , v k 및 σ 1 , ⋯ , σ k \sigma_1, \cdots, \sigma_k σ 1 , ⋯ , σ k 가 행렬 A \mathbf{A} A 의 오른쪽 특이벡터와 특이값이라고 할때, r ≤ k r \leq k r ≤ k 인 r r r 개의 특이벡터 v 1 , ⋯ , v r \mathbf{v_1}, \cdots, \mathbf{v_r} v 1 , ⋯ , v r 가 span하는 공간 V V V 가 (a 1 \mathbf{a_1} a 1 에서 공간 V V V 사이의 거리)2 ^2 2 + ... + (a m \mathbf{a_m} a m 에서 공간 V V V 사이의 거리)2 ^2 2 를 최소화하고, 그 최솟값은 ∣ A ∣ F 2 − σ 1 2 − σ 2 2 − ⋯ − σ r 2 \left| \mathbf{A} \right|_F^2- \sigma_1^2-\sigma_2^2-\cdots-\sigma_r^2 ∣ A ∣ F 2 − σ 1 2 − σ 2 2 − ⋯ − σ r 2 임을 보인다.
우선 앞에서 증명한 내용에 의해 공간 V V V 에 대한 제곱거리 합은 다음과 같다.
∣ A ∣ F 2 − σ 1 2 − σ 2 2 − ⋯ − σ r 2 \left| \mathbf{A} \right|_F^2- \sigma_1^2-\sigma_2^2-\cdots-\sigma_r^2 ∣ A ∣ F 2 − σ 1 2 − σ 2 2 − ⋯ − σ r 2
이는 U Σ = A V \mathbf{U}\mathbf{\Sigma}=\mathbf{A}\mathbf{V} U Σ = A V 에서 알 수 있으며, 하나의 벡터성분만 보자면 σ i u i = A v i \sigma_i\mathbf{u_i}=\mathbf{A}\mathbf{v_i} σ i u i = A v i 인데 양변을 제곱하며 크기를 구하면 u i \mathbf{u_i} u i 는 단위벡터이므로 크기는 σ i 2 \sigma_i^2 σ i 2 이 된다.
이제 이 값이 최소임을 증명하기 위해 임의의 r차원 벡터 공간 W = s p a n ( w 1 , ⋯ , w r ) W=span(\mathbf{w_1}, \cdots, \mathbf{w_r)} W = s p a n ( w 1 , ⋯ , w r ) 을 도입하여 W W W 까지의 제곱거리합이 위의 값보다 작지 않다는 것을 보인다. W W W 까지의 제곱거리합은 다음과 같다.
∣ A ∣ F 2 − ∣ A w 1 ∣ 2 − ⋯ − ∣ A w r ∣ 2 = ∣ A ∣ F 2 − ∣ A W ∣ F 2 \left| \mathbf{A} \right|^2_F-\left| \mathbf{A}\mathbf{w_1} \right|^2-\cdots-\left| \mathbf{A}\mathbf{w_r} \right|^2 = \left| \mathbf{A} \right|^2_F- \left| \mathbf{A}\mathbf{W} \right|^2_F ∣ A ∣ F 2 − ∣ A w 1 ∣ 2 − ⋯ − ∣ A w r ∣ 2 = ∣ A ∣ F 2 − ∣ A W ∣ F 2
따라서 ∣ A W ∣ F 2 ≤ σ 1 2 + σ 2 2 + ⋯ + σ r 2 \left| \mathbf{A}\mathbf{W} \right|^2_F \leq \sigma_1^2+\sigma_2^2+\cdots+\sigma_r^2 ∣ A W ∣ F 2 ≤ σ 1 2 + σ 2 2 + ⋯ + σ r 2 임을 보여야한다. SVD에 의해 A = U Σ V T \mathbf{A}=\mathbf{U}\mathbf{\Sigma}\mathbf{V}^T A = U Σ V T 이며, U , V \mathbf{U},\mathbf{V} U , V 는 직교행렬이므로 벡터를 곱했을때 norm을 보존한다. 즉, ∣ A W ∣ F 2 = ∣ U Σ V T W ∣ F 2 = ∣ Σ V T W ∣ F 2 \left| \mathbf{A}\mathbf{W} \right|^2_F=\left| \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T\mathbf{W} \right|^2_F=\left| \mathbf{\Sigma}\mathbf{V}^T\mathbf{W} \right|^2_F ∣ A W ∣ F 2 = ∣ ∣ ∣ U Σ V T W ∣ ∣ ∣ F 2 = ∣ ∣ ∣ Σ V T W ∣ ∣ ∣ F 2 이다. 여기서 V T W = X \mathbf{V}^T\mathbf{W}=\mathbf{X} V T W = X 라고 하자.
x 1 , ⋯ , x r \mathbf{x_1}, \cdots, \mathbf{x_r} x 1 , ⋯ , x r 이 행렬 X \mathbf{X} X 의 열이라고 할 때, x i = V T w i → V x i = V V T w i \mathbf{x_i}=\mathbf{V}^T\mathbf{w_i}\rightarrow\mathbf{V}\mathbf{x_i}=\mathbf{V}\mathbf{V}^T\mathbf{w_i} x i = V T w i → V x i = V V T w i 이며, QR decomposition에서 보았듯이 이는 V V V 로의 투영 w i ∥ V \mathbf{w_i}^{\parallel V} w i ∥ V 이다. 길이가 1인 단위행렬 w i \mathbf{w_i} w i 를 투영한 것이므로 ∣ V x i ∣ 2 ≤ 1 |\mathbf{V}\mathbf{x_i}|^2\leq1 ∣ V x i ∣ 2 ≤ 1 이고, V \mathbf{V} V 는 직교행렬이므로 벡터를 곱했을때 norm을 보존하여 ∣ x i ∣ 2 ≤ 1 |\mathbf{x_i}|^2\leq1 ∣ x i ∣ 2 ≤ 1 이다. 따라서 ∣ X ∣ F 2 ≤ r \left| \mathbf{X} \right|^2_F\leq r ∣ X ∣ F 2 ≤ r 이다(행렬의 제곱크기는 열벡터들의 제곱크기의 합이므로).
y 1 , ⋯ , y k \mathbf{y_1}, \cdots, \mathbf{y_k} y 1 , ⋯ , y k 이 행렬 X \mathbf{X} X 의 행이라고 하면 y i = v i T W → y i = W T v i \mathbf{y_i}=\mathbf{v_i}^T\mathbf{W}\rightarrow\mathbf{y_i}=\mathbf{W}^T\mathbf{v_i} y i = v i T W → y i = W T v i 가 되어 동일한 과정으로 ∣ y i ∣ 2 ≤ 1 |\mathbf{y_i}|^2\leq1 ∣ y i ∣ 2 ≤ 1 이다.
∣ Σ X ∣ F 2 = σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 \left| \mathbf{\Sigma}\mathbf{X} \right|^2_F=\sigma_1^2|\mathbf{y_1}|^2+\cdots+\sigma_k^2|\mathbf{y_k}|^2 ∣ Σ X ∣ F 2 = σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 이고, ∣ X ∣ F 2 ≤ r \left| \mathbf{X} \right|^2_F\leq r ∣ X ∣ F 2 ≤ r 이므로 ∣ y 1 ∣ 2 + ⋯ + ∣ y k ∣ 2 ≤ r |\mathbf{y_1}|^2+\cdots+|\mathbf{y_k}|^2\leq r ∣ y 1 ∣ 2 + ⋯ + ∣ y k ∣ 2 ≤ r 이다. 따라서 다음과 같다(σ 1 ≥ σ 2 ≥ ⋯ ≥ σ k \sigma_1\geq\sigma_2\geq\cdots\geq\sigma_k σ 1 ≥ σ 2 ≥ ⋯ ≥ σ k ).
σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 ≤ σ 1 ∣ 2 y 1 ∣ 2 + ⋯ + σ r 2 ∣ y r ∣ 2 + σ r 2 ∣ y r + 1 ∣ 2 + ⋯ + + σ r 2 ∣ y k ∣ 2 = ( ( σ 1 2 − σ r 2 ) ∣ y 1 ∣ 2 + ⋯ + ( σ r 2 − σ r 2 ) ∣ y r ∣ 2 ) + ( σ r 2 ∣ y 1 ∣ 2 + ⋯ + σ r 2 ∣ y k ∣ 2 ) ≤ ( ( σ 1 2 − σ r 2 ) + ⋯ + ( σ r 2 − σ r 2 ) ) + σ r 2 ( ∣ y 1 ∣ 2 + ⋯ + ∣ y k ∣ 2 ) ≤ ( σ 1 2 + ⋯ + σ r 2 − r σ r 2 ) + σ r 2 r = σ 1 2 + ⋯ + σ r 2 \begin{aligned} \sigma_1^2|\mathbf{y_1}|^2+\cdots+\sigma_k^2|\mathbf{y_k}|^2 & \leq \sigma_1|^2\mathbf{y_1}|^2+\cdots+\sigma_r^2|\mathbf{y_r}|^2+\sigma_r^2|\mathbf{y_{r+1}}|^2+\cdots+ +\sigma_r^2|\mathbf{y_k}|^2 \\ & = ((\sigma_1^2-\sigma_r^2)|\mathbf{y_1}|^2+\cdots+(\sigma_r^2-\sigma_r^2)|\mathbf{y_r}|^2)+(\sigma_r^2|\mathbf{y_1}|^2+\cdots+\sigma_r^2|\mathbf{y_k}|^2)\\ & \leq ((\sigma_1^2-\sigma_r^2)+\cdots+(\sigma_r^2-\sigma_r^2))+\sigma_r^2(|\mathbf{y_1}|^2+\cdots+|\mathbf{y_k}|^2)\\ & \leq (\sigma_1^2+\cdots+\sigma_r^2-r\sigma_r^2)+\sigma_r^2r\\ & = \sigma_1^2+\cdots+\sigma_r^2 \end{aligned} σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 ≤ σ 1 ∣ 2 y 1 ∣ 2 + ⋯ + σ r 2 ∣ y r ∣ 2 + σ r 2 ∣ y r + 1 ∣ 2 + ⋯ + + σ r 2 ∣ y k ∣ 2 = ( ( σ 1 2 − σ r 2 ) ∣ y 1 ∣ 2 + ⋯ + ( σ r 2 − σ r 2 ) ∣ y r ∣ 2 ) + ( σ r 2 ∣ y 1 ∣ 2 + ⋯ + σ r 2 ∣ y k ∣ 2 ) ≤ ( ( σ 1 2 − σ r 2 ) + ⋯ + ( σ r 2 − σ r 2 ) ) + σ r 2 ( ∣ y 1 ∣ 2 + ⋯ + ∣ y k ∣ 2 ) ≤ ( σ 1 2 + ⋯ + σ r 2 − r σ r 2 ) + σ r 2 r = σ 1 2 + ⋯ + σ r 2
따라서 ∣ A W ∣ F 2 = ∣ U Σ V T W ∣ F 2 = ∣ Σ V T W ∣ F 2 = ∣ Σ X ∣ F 2 ≤ σ 1 2 + ⋯ + σ r 2 \left| \mathbf{A}\mathbf{W} \right|^2_F=\left| \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T\mathbf{W} \right|^2_F=\left| \mathbf{\Sigma}\mathbf{V}^T\mathbf{W} \right|^2_F=\left| \mathbf{\Sigma}\mathbf{X} \right|^2_F \leq \sigma_1^2+\cdots+\sigma_r^2 ∣ A W ∣ F 2 = ∣ ∣ ∣ U Σ V T W ∣ ∣ ∣ F 2 = ∣ ∣ ∣ Σ V T W ∣ ∣ ∣ F 2 = ∣ Σ X ∣ F 2 ≤ σ 1 2 + ⋯ + σ r 2 가 되어 증명이 완료된다.
이제 ∣ A x ∣ \mid \mathbf{A}\mathbf{x} \mid ∣ A x ∣ 를 최소로 만드는 최소제곱문제의 최적해가 가장 작은 특이값에 대응되는 오른쪽 특이벡터라는 것을 증명해보자. 이를 위하여 임의의 벡터 w \mathbf{w} w 에 대해서 ∣ A w ∣ ≤ ∣ A v k ∣ ≤ σ k |\mathbf{A}\mathbf{w}| \leq |\mathbf{A}\mathbf{v_k}| \leq \mathbf{\sigma_k} ∣ A w ∣ ≤ ∣ A v k ∣ ≤ σ k 가 만족함을 보여야 한다. 이는 W \mathbf{W} W 를 생성할 때 한 개의 임의의 벡터만 사용되었다고 생각하고 위 과정을 진행한 뒤에, 위 부등식에서 다음과 같이 전개하여 증명할 수 있다.
σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 ≥ σ k 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 = σ k 2 ( ∣ y 1 ∣ 2 + ⋯ + ∣ y k ∣ 2 ) ⋯ 제약조건 ∣ w ∣ = 1 = σ k 2 \begin{aligned} \sigma_1^2|\mathbf{y_1}|^2+\cdots+\sigma_k^2|\mathbf{y_k}|^2 & \geq \sigma_k^2|\mathbf{y_1}|^2+\cdots+\sigma_k^2|\mathbf{y_k}|^2 \\ & = \sigma_k^2(|\mathbf{y_1}|^2+\cdots+|\mathbf{y_k}|^2) \;\;\;\;\;\;\;\;\; \cdots 제약조건\;\; |\mathbf{w}|=1\\ & = \sigma_k^2 \end{aligned} σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 ≥ σ k 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 = σ k 2 ( ∣ y 1 ∣ 2 + ⋯ + ∣ y k ∣ 2 ) ⋯ 제 약 조 건 ∣ w ∣ = 1 = σ k 2
따라서 ∣ A W ∣ F 2 = ∣ U Σ V T W ∣ F 2 = ∣ Σ V T W ∣ F 2 = ∣ Σ X ∣ F 2 = σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 ≥ σ k 2 \left| \mathbf{A}\mathbf{W} \right|^2_F=\left| \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T\mathbf{W} \right|^2_F=\left| \mathbf{\Sigma}\mathbf{V}^T\mathbf{W} \right|^2_F=\left| \mathbf{\Sigma}\mathbf{X} \right|^2_F =\sigma_1^2|\mathbf{y_1}|^2+\cdots+\sigma_k^2|\mathbf{y_k}|^2 \geq \sigma_k^2 ∣ A W ∣ F 2 = ∣ ∣ ∣ U Σ V T W ∣ ∣ ∣ F 2 = ∣ ∣ ∣ Σ V T W ∣ ∣ ∣ F 2 = ∣ Σ X ∣ F 2 = σ 1 2 ∣ y 1 ∣ 2 + ⋯ + σ k 2 ∣ y k ∣ 2 ≥ σ k 2 이고, 양변에 루트를 취하면 ∣ A W ∣ F ≥ σ k \left| \mathbf{A}\mathbf{W} \right|_F \geq \sigma_k ∣ A W ∣ F ≥ σ k 가 되어 가장 작은 특이값에 대응되는 오른쪽 특이벡터를 A \mathbf{A} A 에 곱했을 때, 임의의 벡터 w \mathbf{w} w 를 곱했을 때보다 작거나 같은 값을 얻을 수 있음을 알 수 있다.