좌특이벡터
좌특이벡터 (Left Singular Vector)
1. 개요
좌특이벡터(Left Singular Vector)는 임의의 행렬 $A$에 대한 특이값 분해(Singular Value Decomposition, SVD)에서 결과 행렬 $U$를 구성하는 열벡터들로, 행렬 $A$에 의해 변환된 출력 공간(공역)의 정규직교 기저(Orthonormal Basis)를 형성하는 벡터를 의미한다.
2. 수학적 정의 및 도출
행렬 $A \in \mathbb{R}^{m \times n}$가 주어졌을 때, 특이값 분해는 다음과 같이 정의된다. $$A = U\Sigma V^T$$
여기서 $U$는 $m \times m$ 직교 행렬(Orthogonal Matrix)이며, 이 $U$의 각 열벡터 $\mathbf{u}_i$가 바로 좌특이벡터이다.
2.1. 직교성 (Orthogonality)
좌특이벡터들로 구성된 행렬 $U$는 직교 행렬이므로, 다음의 성질을 만족한다. $$U^T U = I$$ 이는 모든 좌특이벡터 $\mathbf{u}_i$가 서로 직교하며($\mathbf{u}_i \cdot \mathbf{u}_j = 0, i \neq j$), 각 벡터의 크기가 1인 단위 벡터($\|\mathbf{u}_i\| = 1$)임을 의미한다. 이러한 정규직교성 덕분에 좌특이벡터는 출력 공간의 효율적인 좌표축 역할을 수행한다.
2.2. $AA^T$와의 관계
좌특이벡터는 행렬 $A$와 그 전치 행렬 $A^T$의 곱인 $AA^T$의 고유벡터(Eigenvector)로 정의된다. $$AA^T \mathbf{u}_i = \lambda_i \mathbf{u}_i$$ 이때 고유값 $\lambda_i$는 특이값 $\sigma_i$의 제곱과 같다 ($\lambda_i = \sigma_i^2$). 따라서 좌특이벡터는 $AA^T$라는 대칭 행렬의 고유값 분해를 통해 도출할 수 있다.
2.3. 특이값($\Sigma$)과의 연결 관계
특이값 $\sigma_i$는 행렬 $A$가 입력 벡터를 출력 공간으로 보낼 때 발생하는 '신축률'을 의미한다. 좌특이벡터 $\mathbf{u}_i$와 우특이벡터 $\mathbf{v}_i$ 사이에는 다음과 같은 관계식이 성립한다. $$A\mathbf{v}_i = \sigma_i \mathbf{u}_i$$ 이는 우특이벡터 $\mathbf{v}_i$ 방향의 입력이 행렬 $A$에 의해 변환되면, 좌특이벡터 $\mathbf{u}_i$ 방향으로 투영되며 그 크기가 $\sigma_i$배만큼 확장 또는 축소됨을 수학적으로 보여준다.
참고: 경제적 SVD (Economy SVD) 실제 계산에서는 메모리 효율을 위해 $\sigma_i > 0$인 성분(랭크 $r$)만을 포함하는 경제적 SVD를 주로 사용한다. 이 경우 $U$는 $m \times r$ 행렬이 되며, 여전히 $U^T U = I$를 만족하지만 $UU^T \neq I$가 될 수 있다.
3. 열공간(Column Space)과의 관계
좌특이벡터는 행렬 $A$의 열공간(Column Space, $\text{col}(A)$)을 분석하는 핵심 도구이다.
- 기저 형성: $\sigma_i > 0$인 좌특이벡터 $\mathbf{u}_1, \dots, \mathbf{u}_r$ (여기서 $r$은 행렬의 랭크)은 행렬 $A$의 열공간에 대한 정규직교 기저를 형성한다.
- 최적 근사: 가장 큰 특이값 $\sigma_1$에 대응하는 좌특이벡터 $\mathbf{u}_1$은 $A$의 열벡터들이 가장 많이 분포해 있는 방향, 즉 데이터의 분산이 가장 큰 방향을 가리킨다.
- 영공간과의 관계: $\sigma_i = 0$인 좌특이벡터들은 $A^T$의 영공간(Null Space)을 형성하며, 이는 $A$의 열공간과 직교한다.
4. 기하학적 의미
기하학적으로 행렬 $A$에 의한 선형 변환은 회전 $\rightarrow$ 스케일링 $\rightarrow$ 회전의 세 단계로 해석할 수 있다.
- 입력 공간: 우특이벡터 $V$가 입력 공간의 정규직교 기저를 정의한다.
- 변환 과정: $V^T$에 의해 좌표축이 회전하고, $\Sigma$에 의해 각 축 방향으로 크기가 조정된다.
- 출력 공간: 마지막으로 $U$에 의해 다시 회전하며, 이때 좌특이벡터 $U$는 변환된 결과물이 놓이는 출력 공간의 새로운 좌표축이 된다.
5. 우특이벡터와의 비교
| 구분 | 좌특이벡터 (Left Singular Vector) | 우특이벡터 (Right Singular Vector) |
|---|---|---|
| 기호 | $U$ 의 열벡터 ($\mathbf{u}_i$) | $V$ 의 열벡터 ($\mathbf{v}_i$) |
| 관련 행렬 | $AA^T$ 의 고유벡터 | $A^T A$ 의 고유벡터 |
| 공간적 의미 | 출력 공간(공역)의 기저 | 입력 공간(정의역)의 기저 |
| 대응 공간 | 열공간 (Column Space) | 행공간 (Row Space) |
| 차원 | $m$ 차원 ($\mathbb{R}^m$) | $n$ 차원 ($\mathbb{R}^n$) |
6. SVD 전체 과정 내 위치 (도식도)
graph LR
A[입력 행렬 A] --> SVD{SVD 분해}
SVD --> V[우특이벡터 V]
SVD --> Sigma[특이값 Σ]
SVD --> U[좌특이벡터 U]
V -- "입력 공간의 기저" --> Space1[Row Space]
Sigma -- "축별 확대/축소" --> Scale[Scaling]
U -- "출력 공간의 기저" --> Space2[Column Space]
Space1 --> Scale --> Space2
7. 주요 활용 사례
- 주성분 분석 (PCA): 중심화된 데이터 행렬 $X$를 SVD 했을 때 얻어지는 우특이벡터($V$)가 주성분 방향이 되며, 이때의 좌특이벡터($U$)는 데이터 포인트들을 주성분 공간으로 투영한 좌표(Score)와 관련이 있다. 즉, $X = U\Sigma V^T$에서 $U\Sigma$가 주성분 점수 행렬이 된다.
- 잠재 의미 분석 (LSI): 문서-단어 행렬 $A$를 SVD 하여 좌특이벡터를 통해 문서 간의 잠재적인 주제(Topic) 공간을 구축한다. PCA와 LSI는 모두 SVD를 기반으로 하며, 다음과 같은 관계를 갖는다. $$\text{PCA/LSI Projection} \approx X V_k = U_k \Sigma_k$$ (여기서 $k$는 선택된 상위 성분의 수이며, $U_k \Sigma_k$는 저차원 잠재 공간으로 투영된 데이터의 좌표를 의미한다.)
- 이미지 압축: 상위 $k$개의 특이값과 그에 대응하는 좌특이벡터, 우특이벡터만을 사용하여 원래 행렬을 근사함으로써 데이터 용량을 획기적으로 줄인다.
- 노이즈 제거: 작은 특이값에 대응하는 좌특이벡터 성분을 제거함으로써 신호에서 잡음을 분리한다.
8. 계산 예제
8.1. 수치 계산 과정
행렬 $A = \begin{pmatrix} 1 & 1 \\ 0 & 1 \\ 1 & 0 \end{pmatrix}$ 가 주어졌을 때 좌특이벡터를 구하는 과정은 다음과 같다.
- $AA^T$ 계산: $$AA^T = \begin{pmatrix} 1 & 1 \\ 0 & 1 \\ 1 & 0 \end{pmatrix} \begin{pmatrix} 1 & 0 & 1 \\ 1 & 1 & 0 \end{pmatrix} = \begin{pmatrix} 2 & 1 & 1 \\ 1 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix}$$
- 특성방정식 $\det(AA^T - \lambda I) = 0$ 풀이: $$\det \begin{pmatrix} 2-\lambda & 1 & 1 \\ 1 & 1-\lambda & 0 \\ 1 & 0 & 1-\lambda \end{pmatrix} = 0 \implies -\lambda^3 + 4\lambda^2 - 3\lambda = 0$$ 이를 통해 고유값 $\lambda_1 = 3, \lambda_2 = 1, \lambda_3 = 0$을 얻는다.
- 고유벡터 도출:
- $\lambda_1 = 3$ 일 때: $(AA^T - 3I)\mathbf{u}_1 = 0 \implies \mathbf{u}_1 = \frac{1}{\sqrt{3}}\begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix}$
- $\lambda_2 = 1$ 일 때: $(AA^T - 1I)\mathbf{u}_2 = 0 \implies \mathbf{u}_2 = \frac{1}{\sqrt{2}}\begin{pmatrix} 0 \\ 1 \\ -1 \end{pmatrix}$
- $\lambda_3 = 0$ 일 때: $(AA^T - 0I)\mathbf{u}_3 = 0 \implies \mathbf{u}_3 = \frac{1}{\sqrt{6}}\begin{pmatrix} -2 \\ 1 \\ 1 \end{pmatrix}$ 이 $\mathbf{u}_1, \mathbf{u}_2, \mathbf{u}_3$가 행렬 $A$의 좌특이벡터가 된다.
8.2. Python NumPy 구현 코드
import numpy as np
# 1. 행렬 A 정의 (3x2 행렬)
A = np.array([[1, 1],
[0, 1],
[1, 0]])
# 2. SVD 수행
# U: 좌특이벡터 행렬, S: 특이값 배열, Vt: 우특이벡터의 전치 행렬
U, S, Vt = np.linalg.svd(A)
print("좌특이벡터 행렬 (U):")
print(U)
print("\n특이값 (Sigma):")
print(S)
# 검증: AA^T의 고유벡터와 U의 열벡터가 일치하는지 확인
AAT = A @ A.T
eigenvalues, eigenvectors = np.linalg.eigh(AAT)
# np.linalg.eigh는 고유값을 오름차순으로 반환하므로,
# np.linalg.svd의 내림차순 결과와 맞추기 위해 슬라이싱으로 순서를 뒤집음
sorted_eigenvectors = eigenvectors[:, ::-1]
print("\nAA^T의 고유벡터 (내림차순 정렬):")
print(sorted_eigenvectors)
print("\nU 행렬의 열벡터와 일치 여부 (절대값 기준):")
print(np.allclose(np.abs(U), np.abs(sorted_eigenvectors)))
이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.