Vector $\mathbf{x}$ 와 Matrix $A$가 주어졌을 때,
$\mathbf{x}^\top A^\top A \mathbf{x}$의 minimum (or lower bound)를 구하는 방법에 대해
Singular Value Decomposition(SVD)와 Eigenvalue Decomposition(EVD)을 이용하는 방법.
$\underset{\mathbf{x}}{\text{argmin }}\mathbf{x}^\top A^\top A\mathbf{x}$는
Total Least Squares 등에서 많이 애용되는 형태의 최소화 문제임.
SVD를 이용한 lower bound 계산 방법
SVD는 matrix을 세 개의 행렬로 분해하는 방법임.
행렬 $A$의 SVD는 다음과 같이 표현됨:
$$A = U \Sigma V^\top$$
여기서
- $U$는 $m \times m$ orthogonal matrix,
- $\Sigma$ 는 $m \times n$ diagonal matrix로 대각 성분은 $A$의 singular values,
- $V$ 는 $n \times n$ orthogonal matrix임.
행렬 $A$ 에 대해 $A^\top A$를 계산하면:
$$A^\top A = (U \Sigma V^\top)^\top (U \Sigma V^\top) = V \Sigma^\top U^\top U \Sigma V^\top = V \Sigma^\top \Sigma V^\top$$
여기서 $\Sigma_A = \Sigma^\top \Sigma$ 라고 정의함:
$$A^\top A = V \Sigma_A V^\top$$
이제 $\mathbf{x}^\top A^\top A \mathbf{x}$를 고려함:
$$\mathbf{x}^\top A^\top A \mathbf{x} = \mathbf{x}^\top V \Sigma_A V^\top \mathbf{x}$$
여기서 $\mathbf{y} = V^\top \mathbf{x}$라고 정의하면,
- $V$ 는 orthogonal matrix이므로
- $|| \mathbf{y} || = || \mathbf{x} ||$가 성립함.
2022.11.17 - [.../Math] - [LA] Orthogonal matrix (직교행렬)
[LA] Orthogonal matrix (직교행렬)
Orthogonal MatrixMatrix의 row vector (and column vector)들이자기자신을 제외한 나머지 row vector (and column vector)들과 orthonormal인 square matrix.$$A^{-1}=A^\top \\ A^\top A = I \\ \mathbf{a}_i^\top \mathbf{a}_j = \mathbf{a}_i \cdot \mat
dsaint31.tistory.com
[LA] Diagonalization, Orthogonal Diagonalization, and Symmetric Matrix
Diagonalizable (대각화)sqaure matrix가 $n$개의 eigenvalue를 가지고, 이들 각각의 eigenvalue들이 각자의 multiplicity에 해당하는 dimension을 가지는 eigne space를 가지고 있는 경우에 해당.각기 다른 eigenvalue의 eigen
dsaint31.tistory.com
2024.02.15 - [.../Math] - [LA] Singular Value (특이값)
[LA] Singular Value (특이값)
Singular Value DecompositionRank가 $n$인 matrix $S\in \mathbb{R}^{m\times n}\text{ where }m\ge n$ 에서orthonormal vector set$\{\textbf{v}_1, \dots, \textbf{v}_n\}, \{\textbf{u}_1, \dots \textbf{u}_n\}$ 와positive scalr set $\{\sigma_1, \dots, \sigma_n
dsaint31.tistory.com
따라서:
$$\mathbf{x}^\top A^\top A \mathbf{x} = \mathbf{y}^\top \Sigma_A \mathbf{y}$$
$\Sigma_A$ 는 $A$의 singular values의 제곱을 대각선으로 갖는 diagonal matrix임.
따라서:
$$\mathbf{y}^\top \Sigma_A \mathbf{y} = \sum_{i=1}^n \sigma_i^2 y_i^2$$
이제 lower bound를 구하기 위해 $A$의 최소 singular value $\sigma_{\min}$ 을 고려함.
이 경우 최소값은 $\mathbf{y}$가 최소 singular value에 해당하는 고유벡터와 정렬될 때 발생함.
따라서:
$$\mathbf{x}^\top A^\top A \mathbf{x} \geq \sigma_{\min}^2 || \mathbf{x} ||^2$$
최소값을 갖는 벡터 $\mathbf{x}$ 는
- $\mathbf{x} = V \mathbf{y}$에서
- $\mathbf{y}$ 가 최소 singular value에 해당하는 $\Sigma_A $의 eigenvector(고유벡터)일 때 얻어짐.
즉, $\mathbf{y}$ 가 $\mathbf{e}_{\min}$ (최소 singular value에 해당하는 eigenvector)일 때
$\mathbf{x} = V \mathbf{e}_{\min} $임.
EVD를 이용한 lower bound 계산 방법
EVD는 대칭 행렬을 orthogonal matrix와 diagonal matrix로 분해하는 방법임.
$A^\top A$는 대칭 행렬이므로, EVD를 통해 다음과 같이 표현됨:
$$A^\top A = V \Lambda V^\top$$
여기서
- $V$ 는 $A^\top A$ 의 eigenvectors들로 이루어진 $n \times n$ orthogonal matrix,
- $\Lambda$ 는 $A^\top A$ 의 eigenvalues들을 대각선으로 갖는 $n \times n$ diagonal matrix임.
이제 $\mathbf{x}^\top A^\top A \mathbf{x}$를 고려함:
$$\mathbf{x}^\top A^\top A \mathbf{x} = \mathbf{x}^\top (V \Lambda V^\top) \mathbf{x}$$
여기서 $\mathbf{y} = V^\top \mathbf{x}$라고 정의하면,
$V$ 는 orthogonal matrix이므로 $ | \mathbf{y} | = | \mathbf{x} | $가 성립함.
따라서:
$$\mathbf{x}^\top A^\top A \mathbf{x} = \mathbf{y}^\top \Lambda \mathbf{y}$$
$\Lambda$ 는 $A^\top A$의 eigenvalues들을 대각선으로 갖는 diagonal matrix임.
따라서:
$$\mathbf{y}^\top \Lambda \mathbf{y} = \sum_{i=1}^n \lambda_i y_i^2$$
이제 lower bound를 구하기 위해 $A^\top A$의 최소 eigenvalue $\lambda_{\min}$을 고려함.
이 경우 최소값은 $\mathbf{y}$ 가 최소 eigenvalue에 해당하는 고유벡터와 정렬될 때 발생함.
따라서:
$$\mathbf{x}^\top A^\top A \mathbf{x} \geq \lambda_{\min} | \mathbf{x} |^2$$
최소값을 갖는 벡터 $\mathbf{x}$ 는
- $\mathbf{x} = V \mathbf{y}$에서
- $\mathbf{y}$가 최소 eigenvalue에 해당하는 $\Lambda$ 의 고유벡터일 때 얻어짐.
즉, $\mathbf{y}$ 가 $\mathbf{e}_{\min}$ (최소 eigenvalue에 해당하는 표준 기저 벡터)일 때 $\mathbf{x} = V \mathbf{e}_{\min} $임.
결론
벡터 $\mathbf{x}$와 행렬 $A$ 가 주어졌을 때,
$\mathbf{x}^\top A^\top A \mathbf{x}$ 의 lower bound는 두 가지 방법으로 구할 수 있음.
SVD를 이용하면
- $\mathbf{x}^\top A^\top A \mathbf{x} \geq \sigma_{\min}^2 || \mathbf{x} ||^2$이 성립하고,
- 여기서 $\sigma_{\min}$ 은 $A$ 의 최소 singular value임.
- 최소값을 갖는 벡터 $\mathbf{x}$ 는 $V \mathbf{e}_{\min} $임.
EVD를 이용하면
- $\mathbf{x}^\top A^\top A \mathbf{x} \geq \lambda_{\min} || \mathbf{x} ||^2$이 성립하고,
- 여기서 $\lambda_{\min}$은 $A^\top A$ 의 최소 eigenvalue임.
- 최소값을 갖는 벡터 $\mathbf{x}$ 는 $V \mathbf{e}_{\min} $임.
따라서, $\mathbf{x}^\top A^\top A \mathbf{x}$ 의 lower bound를 구할 때 SVD와 EVD 모두 유용한 도구임.
다만, EVD는 수치적으로 불안정할 수 있으므로 주의가 필요함.
Python 예제 코드
다음은 Python의 numpy 라이브러리를 사용하여 $\mathbf{x}^\top A^\top A \mathbf{x}$의 lower bound를 SVD와 EVD를 통해 구하는 예제 코드임.
import numpy as np
# 임의의 행렬 A와 벡터 x
A = np.array([[1, 2], [3, 4], [5, 6]])
x = np.array([1, 0])
# SVD를 이용한 lower bound 계산
U, Sigma, VT = np.linalg.svd(A)
sigma_min = np.min(Sigma)
lower_bound_svd = sigma_min**2 * np.linalg.norm(x)**2
print(f"SVD를 이용한 lower bound: {lower_bound_svd}")
# 최소값을 갖는 벡터 x 계산
e_min_svd = np.zeros_like(x)
e_min_svd[np.argmin(Sigma)] = 1
x_min_svd = VT.T @ e_min_svd
print(f"최소값을 갖는 벡터 x (SVD): {x_min_svd}")
# EVD를 이용한 lower bound 계산
ATA = np.dot(A.T, A)
eigenvalues, V = np.linalg.eigh(ATA)
lambda_min = np.min(eigenvalues)
lower_bound_evd = lambda_min * np.linalg.norm(x)**2
print(f"EVD를 이용한 lower bound: {lower_bound_evd}")
# 최소값을 갖는 벡터 x 계산
e_min_evd = np.zeros_like(x)
e_min_evd[np.argmin(eigenvalues)] = 1
x_min_evd = V @ e_min_evd
print(f"최소값을 갖는 벡터 x (EVD): {x_min_evd}")
위 코드에서는
- numpy의
svd
함수와eigh
함수를 사용하여 각각 SVD와 EVD를 수행하고, - 이를 통해 $\mathbf{x}^\top A^\top A \mathbf{x}$ 의 lower bound를 계산함.
SVD를 이용한 lower bound는 최소 singular value를 사용하고,
EVD를 이용한 lower bound는 최소 eigenvalue를 사용함.
또한, 최소값을 갖는 벡터 $\mathbf{x}$를 각각의 방법을 통해 구함.
같이 읽어보면 좋은 자료들
2024.06.22 - [Programming/ML] - [Fitting] Total Least Square Regression
[Fitting] Total Least Square Regression
Total Least Squares (TLS) RegressionTotal Least Squares (TLS) 회귀는 데이터의 모든 방향에서의 오차를 최소화하는 회귀 방법임.이는 특히 독립 변수와 종속 변수 모두에 오차가 포함되어 있는 경우에 유용함.
dsaint31.tistory.com
'... > Linear Algebra' 카테고리의 다른 글
[LA] Rank: Matrix의 속성 (0) | 2024.07.08 |
---|---|
[LA] Matrix Multiplication for Cross Product (0) | 2024.06.28 |
[LA] Span (생성) (0) | 2024.05.29 |
[LA] Matrix-Vector Multiplication (0) | 2024.05.29 |
[LA] Linear Transformation (1) | 2024.04.03 |