유사역행렬과 정사영행렬, 최소자승법의 기하학적 해석

행렬은 행렬의 열공간(span of column vectors, or column space)으로의 선형변환으로 해석할 수 있다.

주어진 벡터 x = \begin{bmatrix} x_1 & x_2 \end{bmatrix}^T를 행렬을 통해 선형변환할 때, 벡터 \vec{x}의 단위기저(\vec{e_1}, \vec{e_2})는 행렬의 열벡터(\vec{u}, \vec{v})로 변환된다.

$$ \vec{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = x_1 \begin{bmatrix} 1 \\ 0 \end{bmatrix} + x_2 \begin{bmatrix} 0 \\ 1 \end{bmatrix} = x_1 \vec{e_1} + x_2 \vec{e_2} $$

$$ A\vec{x} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} \vec{u} & \vec{v} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = x_1 \vec{u} + x_2 \vec{v} $$

행렬 간 곱셈이라고 다르지 않다.
\vec{e_i}가 열 i를 지정하는 지정자일 때 두 행렬 A와 X간 곱셈은 행렬 X를 행렬 A의 열벡터를 기저로 하여 다시 표현한 것이 된다.

$$
\begin{align*}
AX &= \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x_{a} & x_{b} \\ x_{c} & x_{d} \end{bmatrix}\\
&= \begin{bmatrix} \vec{u} & \vec{v} \end{bmatrix} \begin{bmatrix} \vec{x_1} & \vec{x_2} \end{bmatrix}\\
&= \begin{bmatrix} \vec{u} & \vec{v} \end{bmatrix} \vec{x_1} \vec{e_1} + \begin{bmatrix} \vec{u} & \vec{v} \end{bmatrix} \vec{x_2} \vec{e_2}\\
&= \begin{bmatrix} \vec{u} & \vec{v} \end{bmatrix} \begin{bmatrix} x_a \\ x_c \end{bmatrix} \vec{e_1} + \begin{bmatrix} \vec{u} & \vec{v} \end{bmatrix} \begin{bmatrix} x_b \\ x_d \end{bmatrix} \vec{e_2}\\
&= \begin{pmatrix} x_a \vec{u} + x_c \vec{v} \end{pmatrix} \vec{e_1} + \begin{pmatrix} x_b \vec{u} + x_d \vec{v} \end{pmatrix} \vec{e_2}
\end{align*}
$$

위 식에 따라 AX의 각 열벡터는 A의 열벡터에 대한 선형결합으로 표현되며 이는 다시 A 열벡터의 basis인 \vec{u}\vec{v}로 나타낼 수 있음을 알 수 있다.
A가 full rank 정사각행렬일 경우 두 열벡터 \vec{u}\vec{v}는 당연히 선형독립이라는 걸 참고하자.

블로그에 아름다운 시각화 자료가 있다.

1. 역행렬

반대로 역행렬은 행렬의 열공간으로부터 원래공간(단위기저가 \vec{e_1}, \vec{e_2}인)으로의 선형변환을 의미한다.
이 과정에서 단일 기저와 선형변환에 의해 변환된 기저 간 scaler가 determinant가 된다.
이 블로그에서 이에 대해 좋은 시각화자료를 안내한다.

$$ A^{-1} = det(A)^{-1} adj(A) $$

역행렬이 존재하지 않는다는 건 무엇을 의미할까?
이는 기존 공간에서 행렬의 열공간으로 사상할 때 열공간의 기저가 이루는 단위 넓이(det(A))가 0이라는 것을 의미한다.
다시 말해, A\vec{x} = \vec{b}에서 \vec{b}가 행렬의 열공간 내에 위치하지 않는다는 것을 말한다.
표현이 다소 어려울 수 있지만 우린 어떤 물건(3차원)을 손실없이 그림(2차원)으로 표현하는 게 불가능하다는 것을 이미 알고있다.

2. 유사역행렬

그렇다면 유사역행렬은 어떻게 해석할 수 있을까?
유사역행렬은 행렬의 열공간에 나타내지 못하는 벡터를 어떻게든 행렬의 열공간에 표현하려는 시도의 결과이다.
가장 단순한 시도로는 벡터를 행렬의 열공간에 사영(projection)하여 나타내는 것을 생각해볼 수 있는데, 이것이 바로 유사역행렬의 실체이다.
이에 따라 유사역행렬이 모든 행렬에 대해 유일하게 존재하고, 역행렬이 존재하는 경우 역행렬과 유사역행렬이 동치라는 것이 자명해진다.

이를 수식으로 확인해보자.
우선 본래의 문제, 주어진 벡터 \vec{x}\vec{b}로 변환하는 행렬 A에 대해 행렬 A의 역행렬은 다음과 같이 구할 수 있다.

$$
\begin{align*}
A\vec{x} &= \vec{b} \\
\vec{x} &= A^{-1} \vec{b}
\end{align*}
$$

그러나 A의 역행렬이 존재하지 않는 경우 해가 존재하지 않거나 유일하지 않다.
그러므로 아래와 같이 A의 열공간에 \vec{b}를 표현할 수 없다.
이에 위에서 언급했듯 유사역행렬을 계산하여 해를 계산(근사)한다.

먼저 위 그림처럼 \vec{b}에 대한 A의 열공간으로의 사영을 \vec{b'}라 하자.
그 경우 \vec{b}'는 A의 열공간에 속하게 되고 다음과 같이 A의 열벡터의 선형결합(A\vec{x})으로 표현된다.

$$
\begin{align*}
A\vec{x} &= \vec{b’} \\
\vec{x} &= A^{-1} \vec{b’}
\end{align*}
$$

이 때, A의 열공간과 \vec{h} = \vec{b} - \vec{b'}는 직교이며 이 둘의 선형결합은 0이다.
그러므로 A의 열공간과 \vec{b}의 관계는 다음과 같이 표현된다.

$$ A^{T} \vec{h} = A^{T} (\vec{b} – \vec{b’}) = A^{T} (\vec{b} – A\vec{x}) = 0 $$

$$ A^{T}A\vec{x} = A^{T}\vec{b} $$

$$ \vec{x} = (A^{T}A)^{-1}A^{T}\vec{b} = A^{\dagger}\vec{b} $$

이 때의 역행렬 A^{\dagger} = (A^T A)^{-1} A^T을 Moore-Penrose 유사역행렬이라 한다.

물론 위 식에서 틀린 부분이 있다.
A의 gram matrix A^T A가 가역행렬(non-invertible)이 아니라면, 즉 A가 rank-deficient 행렬이라면 위 방법으로는 유사역행렬을 계산할 수 없다.
하지만 특이값 분해(SVD)를 적용하면 임의의 행렬 A에 대해 다음과 같이 유사역행렬을 계산할 수 있다.

$$
\begin{align*}
A &= U \Sigma V^T \\
A^{\dagger} &= V \Sigma^{-1} U^T
\end{align*}
$$

이 때, U는 A^T A의 정규화된 고유벡터 행렬이고 V는 A A^T의 정규화된 고유벡터 행렬, \Sigma는 A의 특이값 행렬이다.
그러므로 \vec{x}는 이제 다음과 같이 쓸 수 있다.

$$ \vec{x} = V \Sigma^{-1} U^T b $$

이후로도 이 notation을 사용할 수 있으나 표기를 깔끔하게 하기 위해 기존 A^{\dagger} = (A^T A)^{-1} A^T 형태의 Moore-Penrose 역행렬을 사용하겠다.

Moore-Penrose 유사역행렬은 위 그림처럼 A의 열공간에 \vec{b}를 사영했을 때의 벡터 \vec{b}'에 대해 A\vec{x}=\vec{b'}를 풀어내는 방법으로 도출할 수 있다.

특이값 분해를 이용하여 유사역행렬을 기하학적으로 해석할 수도 있다.
애초에 특이값 분해는 임의의 행렬을 회전(rotation, U, V^T)과 당김(stretching, \Sigma)으로 분해하는 방법이기 때문에 임의의 행렬에 대한 역행렬은 회전과 당김의 조합에 대한 역행렬로 보면 된다.
특이행렬은 unitary 행렬이므로 역행렬은 곧 전치행렬이 되며 특이값 행렬은 대각행렬이기에 역행렬을 아주 간단하게 풀어낼 수 있다.

이 블로그에서 좋은 시각화 자료를 제공하고 있다.

3. 정사영

정사영행렬을 보기에 앞서 정사영부터 살펴보자
벡터 p에 대한 벡터 a의 정사영을 다음 그림처럼 나타낼 수 있다.

내적은 두 벡터 간 정사영을 사용하기에 벡터 a와 벡터 p의 내적을 계산하면

$$ \vec{a} \cdot \vec{p} = |\vec{a}| |\vec{p}| \cos{\theta} $$

이고, \cos{\theta}t|\vec{p}| / |\vec{a}|이므로

$$
\begin{align*}
\vec{a} \cdot \vec{p} &= |\vec{a}| |\vec{p}| \cos{\theta} \\
&= |\vec{a}| |\vec{p}| \frac{t|\vec{p}|}{|\vec{a}|} \\
&= t |\vec{p}| |\vec{p}| \\
&= t \vec{p} \cdot \vec{p}
\end{align*}
$$

그러므로 t는 다음과 같이 계산되고

$$ t = \frac{\vec{a} \cdot \vec{p}}{\vec{p} \cdot \vec{p}} $$

구하고자 하는 정사영은 다음과 같다.

$$ t \vec{p} = \frac{\vec{a} \cdot \vec{p}}{\vec{p} \cdot \vec{p}} \cdot \vec{p} $$

4. 정사영행렬

2에서 정의한 유사역행렬을 통해 정사영행렬을 간단히 구할 수 있다.

임의의 \vec{b}를 A의 열공간에 정사영시키려 할 때 1)\vec{b}를 유사역행렬을 통해 \vec{x}로 변환하고, 2)이를 다시 A를 통해 A의 열공간에 올려두면 되는 일이다.
그러므로 정사영행렬을 구하는 방법은 아래 그림처럼 단순하게 나타내진다.

위 그림에서 1, 2의 순서를 따라가면 결국 임의의 벡터 \vec{b}를 A의 열공간 위 벡터 \vec{b'}로 정사영하는 굵은 파란선을 만들 수 있다.
이제 수식으로 살펴보자.

$$
\begin{align*}
\vec{x} &= A^{\dagger} \vec{b} \\
A \vec{x} &= A A^{\dagger} \vec{b} = A (A^{T}A)^{-1}A^{T} \vec{b} = \vec{b’}
\end{align*}
$$

그러므로 임의의 벡터 \vec{b}를 행렬 A의 열공간에 정사영한 결과는 다음과 같다.

$$ \vec{b’} = A (A^{T}A)^{-1}A^{T} \vec{b} $$

조금 억지스럽지만 이 식을 아래처럼 바꿔보면 3에서 보았던 벡터 형태의 정사영 결과와 동일한 형태를 하고 있음을 알 수 있다.

$$ x’ = A (A^T A)^{-1} A^T x = \frac{A A^T x}{A^T A} = A \frac{A^T x}{A^T A} $$

물론 정사영행렬에 gram matrix 대신 SVD를 적용할 수도 있다.

$$ \vec{b’} = A V \Sigma^{T} U^T \vec{b} $$

당연히 V는 오른쪽 특이행렬, U는 왼쪽 특이행렬, \Sigma는 특이값 행렬이다. (inverse이기에 좌우가 바뀌었음에 주의하자)

이로서 임의의 행렬 A에 대해 유사역행렬과 정사영행렬은 유일하게 존재하며 행렬 A가 full rank 행렬(가역행렬)이라면 A^{\dagger} = A^{-1}가 되고 정사영행렬은 항등행렬이 됨(즉, \vec{b'}=\vec{b})을 알아보았다.

5. 최소자승법 (Ordinary Least Square, OLS)

정사영행렬이 사용되는 가장 좋은 예시가 있다.
바로 선형회귀이다.

독립변수 X와 종속변수 y가 주어질 때 선형회귀는 다음과 같이 표현된다.

$$ y = X\beta + \epsilon $$

\epsilon은 오차를 나타내는 term이며 \vec{\beta}는 각 독립변수의 가중치를 의미한다.
\epsilon은 데이터의 부정확성과 모델의 유연성을 고려하여 만든 random noise이므로 이를 제외하고나면 y = X\vec{\beta}의 단순한 식을 얻을 수 있다.
이제 \vec{\beta}를 계산하면 되는데, 안타깝게도 종속변수 y가 독립변수 X의 열공간에 존재하지 않으면 등식이 깨지고 만다.
이럴 때 사용하는 것이 정사영행렬이다.

위 그림처럼 독립변수 X로 표현이 불가능한 종속변수 y를 X의 열공간으로 정사영시켜 X\vec{\beta}를 종속변수 y에 대한 추정값으로 사용할 수 있다.
이 때, 추정 오차(MSE)는

$$ loss = ||X\vec{\beta} – \vec{y}||_2 $$

가 됨이 자명하다.
이는 파라미터 \vec{\beta}에 대한 2차식이므로 최우도추정(MLE)을 적용하면

$$
\begin{align*}
loss &= ||X\vec{\beta} – \vec{y}||_2 \\
&= (X\vec{\beta} – \vec{y})^T (X\vec{\beta} – \vec{y}) \\
&= \vec{\beta}^T X^T X\vec{\beta} – (X\vec{\beta})^T \vec{y} – \vec{y}^T X\vec{\beta} – \vec{y}^T \vec{y} \\
\frac{\partial}{\partial \beta} loss &= 2X^T X \vec{\beta} – 2X^T \vec{y} \\
&= 0
\end{align*}
$$

이고, 이에 따라 \vec{\beta}는 다음과 같이 결정된다.

$$ \beta = (X^T X)^{-1} X^T \vec{y} = X^{\dagger} \vec{y} $$

굳이 이렇게 식을 전개할 필요도 없이 위의 그림이나 정사영행렬 공식만으로 쉽게 알 수 있는 내용이다.
\vec{\beta}는 그림의 1번 관계를 통해 자명하게 결정되기 때문이다.

댓글 남기기