Singular Value Decomposition (SVD)
rectangular 행렬 이 주어졌을 때, SVD는 아래와 같이 정의됩니다.
이 때, SVD를 구성하는 각 행렬들은 아래와 같은 특징을 가집니다.
•
→ 의 orthonormal basis에 해당하는 orthonormal column들로 이루어진 행렬
•
→ 의 orthonormal basis에 해당하는 orthonormal column으로 이루어진 행렬
•
→ 의 내림차순으로 정렬된 singular value값들을 entries로 가지는 diagonal matrix
시각적으로 표현하면 아래와 같다.
이와 같이 표현할 경우, , 로 축소되어 표현되며, 이를 Reduced form of SVD라고한다.
Another Perspective of SVD
앞서 배운 Gram-Schmidt orthogonalization을 활용하면, 쉽게 2개의 orthonormal basis 집합을 구할 수 있다.
에 해당하는 , 에 해당하는
그러나 이러한 orthonormal basis는 unique하지 않으며 여러가지 형태로 존재할 수 있다. 각 벡터 는 아래와 같은 식을 만족한다.
앞서 다룬, EVD에서의 와 굉장히 유사한 형태인것을 확인할 수 있다. 단지, EVD의 경우 양변의 orthonormal vector들의 dimension이 동일했던 것 대비, SVD에서는 양변의 orthonormal vector들의 dimension이 동일하지 않다.
Singular Values of an Matrix
행렬 를 행렬로 가정하면, 이 때, 는 symmetric하기 때문에 orthogonally diagonalizable 합니다. (이전 챕터에서 다루었음) 을 해당하는 eigenvector를 구성하는 orthonormal basis라고 가정한다면, 아래 조건을 만족합니다.
행렬 의 singular value는 행렬 의 eigenvector 값의 square root로 정의할 수 있다. 이는 벡터 의 길이로도 해석할 수 있다.
임의의 행렬 의 rank 구하는 방법
•
행렬 를 row-reduction 한 후에 echelon form으로 만들어 pivot의 개수 구하기
•
행렬 에 해당하는 eigenvalue, eigenvector를 구한 후 0이 아닌 개의 singular values를 구하면, 이 의 orthogonal basis가 되고, 을 만족하게 된다.
몇몇의 경우에 한해서, 행렬 의 rank는 내부 원소의 조그마한 변화에도 민감하다.
컴퓨터로 row-reduction하는 경우 echelon form으로 변환하는 과정에서 round off-error가 발생하기 때문에 정확하게 되지 않게 된다. 따라서 첫번째 방법이 잘 동작하지 않게 된다.
실제 상황에서는 2번째 방법을 채택하여 큰 행렬에 대해서 rank를 구한다.
Computing SVD
먼저, eigendecomposition을 구하기 위해 를 형성한다.
이 때, 는 symmetric이기 때문에 orthogonally diagonalizable 합니다.
이에 맞추어 eigendecomposition을 실행하면,
각각의 term 는 에 의해 span되는 subspace로의 projection matrix로 해석할 수 있으며, 이 것은 eigenvalue 로 Scale 됩니다.
이 때, 행렬 에 대한 특징을 2가지로 정리할 수 있습니다.
•
Symmetric →
•
Positive-(semi-)definite → 아래 성질을 만족
위의 s.p.d 조건을 통해 항상 orthogonal한 eigenvector 행렬 를 찾을 수 있으며, 로 표현되는 eigenvalues는 항상 positive하다는 것을 알 수 있습니다!
정리하면, 임의의 rectangular matrix 에 대해 SVD는 항상 존재합니다. 이 행렬 를 가지고 만든 s.p.d matrix 는 항상 EVD 가능하며, SVD와 동일합니다.