본문 바로가기

카테고리 없음

특이값분해(Singular Value Decomposition, SVD)

○ Full singular value decomposition(SVD)

Reference)
SVD와 PCA, 그리고 잠재의미분석(LSA)
Singular Value Decomposition Tutorial

직사각형 행렬 $A$는 직교성 행렬 $U$와 대각행렬 $S$그리고 직교성 행렬의 전치행렬인 $V$로 분해된다.

$A_{mn}=U_{mm}S_{mn}V_{nn}^T$

이 때 $U^{T}U=I$, $V^{T}V=I$일 때, $U$는 $AA^{T}$의 직교성 eigenvectors($m,m$ 차원), $V$는 $A^{T}A$의 직교성 eigenvecter($n,n$ 차원) $S$는 $U$또는 $V$의 eigenvalue의 제곱근을 대각행렬로 갖는다.

예시를 들어보자 $A$가 하기와 같을 때

$A = \begin{bmatrix}
3 & 1 & 1 \\
-1 & 3 & 1 \\
\end{bmatrix}$

$U$를 찾기 위해서 우리는 $AA^{T}$를 구해야하므로,

$A^{T} = \begin{bmatrix}
3 & -1 \\
1 & 3 \\
1 & 1 \\
\end{bmatrix}$

그러므로,

$AA^{T} = \begin{bmatrix} 3 & 1 & 1 \\ -1 & 3 & 1 \\ \end{bmatrix}\begin{bmatrix} 3 & -1 \\ 1 & 3 \\ 1 & 1 \\ \end{bmatrix} = \begin{bmatrix} 11 & 1 \\ 11 & 1 \\ \end{bmatrix}$

다음, 우리는 $AA^{T}$에 해당하는 eigenvalues 와 eigenvectors를 찾아야합니다. 이는 $AA^{T}\vec{\upsilon }=\lambda\vec{\upsilon }$으로 표현되므로,

$\begin{bmatrix}
 11 & 1 \\
 1 & 11 \\
\end{bmatrix}\begin{bmatrix}
x_{1} \\
x_{2} \\
\end{bmatrix}=\lambda I\begin{bmatrix}
x_{1} \\
x_{2} \\
\end{bmatrix}$

좌변으로 정리하면,

$\begin{bmatrix}
 11 - \lambda & 1 \\
 1 & 11 - \lambda \\
\end{bmatrix}\begin{bmatrix}
x_{1} \\
x_{2} \\
\end{bmatrix}=0$

이 때, eigenvector가 0이 아니므로 좌항의 역행렬이 존재하면 안된다. 따라서 $det(좌항)=0$, 

$\begin{vmatrix}
11-\lambda & 1 \\
1 & 11-\lambda \\
\end{vmatrix}=0$

$(11-\lambda)(11-\lambda)-1 \cdot 1=0$

$(\lambda-10)(\lambda-12)=0$

$\therefore \lambda=10, \lambda=12$

이제 $\lambda$를 원래 식에 대입하면 $\lambda=10$일 때,

$(11-10)x_{1} + x_{2}=0, \: \therefore x_{1} = -x_{2}$

다양한 값들이 가능하지만 작고 쉬운 값인 $x_{1}=1$과 $x_{2}=-1$ 를 취하면 eigenvector는 $\begin{bmatrix}
1 & -1 \\
\end{bmatrix} $가 된다.

또한 $\lambda=12$일 때,

$(11-12)x_{1} + x_{2}=0, \: \therefore x_{1} = x_{2}$

같은 이유로 $x_{1}=1$과 $x_{2}=1$ 를 취하면 eigenvector는 $\begin{bmatrix}
1 & 1 \\
\end{bmatrix} $가 된다.

이제 eigenvalue($\lambda$)의 내림차순으로 eigenvector가 열에 나열된다.

$\lambda = 12 \rightarrow  \begin{bmatrix}
1 & 1 \\
1 & -1 \\
\end{bmatrix} \leftarrow \lambda = 10$

이후 eigenvalue가 가장 큰 첫번째 열을 기준으로 Gram-Schmidt orthonormalization process를 진행한다.

Gram-Schmidt orthonormalization process 이미지화

1열인 $\vec{v_{1}}$의 normalize를 수행하면

$\vec{u_{1}} = \frac{\vec{v_{1}}}{\vec{v_{1}}} = \frac{[1,1]}{\sqrt{1^{2}+1^{2}}} = \frac{[1,1]}{\sqrt{2}}=\begin{bmatrix}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\
\end{bmatrix}$

이 후 $\vec{\omega_{2}}=\vec{v_{2}}-\vec{u_{1}}\cdot\vec{v_{2}}\ast \vec{u_{1}}$ 에 대입하여

$\begin{bmatrix}
1 & -1 \\
\end{bmatrix}-\begin{bmatrix}
1/\sqrt{2} & 1/\sqrt{2} \\
\end{bmatrix}\cdot\begin{bmatrix}
1 & -1 \\
\end{bmatrix}\ast \begin{bmatrix}
1/\sqrt{2} & 1/\sqrt{2} \\
\end{bmatrix}$

$\begin{bmatrix}
1 & -1 \\
\end{bmatrix}-0\ast \begin{bmatrix}
1/\sqrt{2} & 1/\sqrt{2} \\
\end{bmatrix}=\begin{bmatrix}
1 & -1 \\
\end{bmatrix}-\begin{bmatrix}
0 & 0 \\
\end{bmatrix} = \begin{bmatrix}
1 & -1 \\
\end{bmatrix}$

이후 normalize

$\vec{u_{2}}=\frac{\vec{\omega_{2}}}{|\vec{\omega_{2}}|} = \begin{bmatrix}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\
\end{bmatrix}$

$$\therefore U=\begin{bmatrix}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\
\end{bmatrix}$$

같은 방식으로 $V$에 대해서도 $A^{T}A$를 기반으로 진행하면 다음과 같이 된다. (상세 수식은 reference 참고)

$V=\begin{bmatrix}
 \frac{1}{\sqrt{6}} & \frac{2}{\sqrt{5}} &  \frac{1}{\sqrt{30}} \\
 \frac{2}{\sqrt{6}} & -\frac{1}{\sqrt{5}} & \frac{2}{\sqrt{30}} \\
 \frac{1}{\sqrt{6}} & 0 &  -\frac{5}{\sqrt{30}} \\
\end{bmatrix}$

$V^{T}=\begin{bmatrix}
 \frac{1}{\sqrt{6}} & \frac{2}{\sqrt{6}} &  \frac{1}{\sqrt{6}} \\
 \frac{2}{\sqrt{5}} & -\frac{1}{\sqrt{5}} & 0 \\
 \frac{1}{\sqrt{30}} & \frac{2}{\sqrt{30}} &  -\frac{5}{\sqrt{30}} \\
\end{bmatrix}$

$S$의 경우는 0이 아닌 eigenvalues에 대해 제곱근을 씌워서 내림차순으로 $U$의 차원인 $m$만큼 대각행렬을 구성하면 된다. 0이 아닌 $U$와 $V$의 eigenvalues는 항상 수가 같다. 따라서 어느 eigenvalues를 사용하는가는 문제가 되지 않는다. 따라서 차원을 일치시키기 위해 $m-n$만큼 0 열을 추가해주어야한다. 

$S = \begin{bmatrix}
\sqrt{12} & 0 & 0 \\
0 & \sqrt{10} & 0 \\
\end{bmatrix}$

따라서 직각 행렬 $A$는 다음과 같이 분해된다

$A_{mn}=U_{mm}S_{mn}V_{nn}^{T} = \begin{bmatrix}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\
\end{bmatrix} \begin{bmatrix}
\sqrt{12} & 0 & 0 \\
0 & \sqrt{10} & 0 \\
\end{bmatrix} \begin{bmatrix}
 \frac{1}{\sqrt{6}} & \frac{2}{\sqrt{6}} &  \frac{1}{\sqrt{6}} \\
 \frac{2}{\sqrt{5}} & -\frac{1}{\sqrt{5}} & 0 \\
 \frac{1}{\sqrt{30}} & \frac{2}{\sqrt{30}} &  -\frac{5}{\sqrt{30}} \\
\end{bmatrix}$

$A_{mn}=U_{mm}S_{mn}V_{nn}^{T} = \begin{bmatrix}
\frac{\sqrt{12}}{\sqrt{2}}& \frac{\sqrt{10}}{\sqrt{2}} & 0 \\
\frac{\sqrt{12}}{\sqrt{2}} & -\frac{\sqrt{10}}{\sqrt{2}} & 0 \\
\end{bmatrix} \begin{bmatrix}
 \frac{1}{\sqrt{6}} & \frac{2}{\sqrt{6}} &  \frac{1}{\sqrt{6}} \\
 \frac{2}{\sqrt{5}} & -\frac{1}{\sqrt{5}} & 0 \\
 \frac{1}{\sqrt{30}} & \frac{2}{\sqrt{30}} &  -\frac{5}{\sqrt{30}} \\
\end{bmatrix}=\begin{bmatrix}
3 & 1 & 1 \\
-1 & 3 & 1 \\
\end{bmatrix}$

이후 기준으로 잡고자하는 차원($n$ 또는 $m$)에 보고자하는 eigenvalue의 수만큼 $U^{T}$나 $V$를 차원을 축소한 후 내적하여 해당 eigenvector를 기준으로 맞추어서 데이터를 사용한다.


○ Reduced Singular Value Decomposition

문헌 추출과 단어 유사도 비교 등 Latent Semantic Indexing or Latent Semantic Analysis라고 불리는 수학 기법이다. 일반적으로 단어 x 문서 행렬을 선형 독립 구성 요소로 분해하여 기저의 핵심만 사용한다. 이를 통해 노이즈가 많은 상관 관계에서 각 차원을 따라 데이터의 기본 구조에 가장 근접하는 값의 집합만 추출된다. 이 요소들은 매우 작기 때문에 결과적으로 작은 원본보다 훨씬 적은 차원으로 원본을 기술한다. 이러한 차원 감소는 유사한 하부구조는 더 유사해지고 다른 하부구조는 더욱 달라지는 이점이 있다. 예를 들어 특정 주제의 문서들 간 같은 단어가 등장하지 않더라도 서로 유사해진다.

Truncated SVD, 상위 k개의 특이값(singular value)만 취한 후 일반화 시킨다.