Lecture 33. 좌·우 역행렬과 의사역행렬 Left and Right Inverses, the Pseudoinverse — 서술
L3에서 역행렬을 배울 때 우리는 조건을 달았다. 정방행렬이어야 하고 랭크가 꽉 차야
한다 고. 그런데 현실의 데이터 행렬은 거의 언제나 직사각형이다. 관측이 미지수보다
많거나(과결정), 적거나(부족결정) 둘 중 하나다.
그러면 이런 행렬은 되돌릴 수 없는 것인가. 완전히 되돌릴 수는 없다.
그러나 가장 그럴듯하게 되돌릴 수는 있다.
그리고 이 이야기에는 반전이 있다. 우리는 이미 그 일을 해 본 적이 있다.
L16에서 배운 최소제곱법이 바로 그것이었다. 그때는 "해가 없을 때 가장 가까운 답을 찾는
방법"이라고만 알았지만, 사실 그때 이미 역행렬 비슷한 것을 만들고 있었다.
1. 랭크에 따른 네 경우 ¶ A A A 가 m × n m \times n m × n 이고 랭크가 r r r 이라 하자. 랭크는 독립인 행의 개수이자 독립인 열의
개수이므로(L13) 양쪽 모두에 갇힌다.
r ≤ m (행이 m 개뿐이다) , r ≤ n (열이 n 개뿐이다) r \le m
\quad\text{(행이 } m \text{ 개뿐이다)},
\qquad
r \le n
\quad\text{(열이 } n \text{ 개뿐이다)} r ≤ m ( 행이 m 개뿐이다 ) , r ≤ n ( 열이 n 개뿐이다 ) (1) 의 두 부등식이 각각 등호이냐 아니냐에 따라 경우가 넷으로 갈린다.
L8에서 이미 이 표를 본 적이 있다. 그때는 해가 몇 개인가 를 물었다.
r = m ⟺ 모든 b 에 해가 있다 , r = n ⟺ 해가 있다면 유일하다 r = m \ \Longleftrightarrow\ \text{모든 } \vv{b} \text{ 에 해가 있다},
\qquad
r = n \ \Longleftrightarrow\ \text{해가 있다면 유일하다} r = m ⟺ 모든 b 에 해가 있다 , r = n ⟺ 해가 있다면 유일하다 (2) 의 두 조건이 각각 만족되느냐에 따라 넷이 나온다.
r = m = n r=m=n r = m = n 이면 언제나 유일한 해가 있고, r = n < m r=n<m r = n < m 이면 해가 없을 수 있고,
r = m < n r=m<n r = m < n 이면 해가 무한히 많고, 둘 다 아니면 두 문제가 한꺼번에 온다.
이번에는 같은 표를 역행렬 쪽에서 다시 본다.
Figure 1: A + A A^{+}A A + A 와 A A + AA^{+} A A + 가 각각 무엇이 되는지가 네 경우를 가른다.
I I I 가 되면 그쪽으로는 완전히 되돌아온 것이고, P P P 가 되면 갈 수 있는 데까지만 간 것이다.
2. 좌역행렬 — 최소제곱의 정체 ¶ 열이 독립인 경우(r = n ≤ m r = n \le m r = n ≤ m )부터 보자. 관측이 미지수보다 많은, 가장 흔한 상황이다.
A T A A^{\mathsf T}A A T A 가 가역인 이유¶ 먼저 확인할 것이 있다. A T A A^{\mathsf T}A A T A 를 뒤집으려면 그것이 가역이어야 한다.
L27에서 이미 증명했지만 다시 적어 두자. 에너지를 계산하면
x T ( A T A ) x = ( A x ) T ( A x ) = ∥ A x ∥ 2 ≥ 0 \vv{x}^{\mathsf T}\!\left(A^{\mathsf T}A\right)\!\vv{x}
= (A\vv{x})^{\mathsf T}(A\vv{x})
= \lVert A\vv{x} \rVert^2
\ \ge\ 0 x T ( A T A ) x = ( A x ) T ( A x ) = ∥ A x ∥ 2 ≥ 0 이다. (4) 의 값이 0이 되는 것은 A x = 0 A\vv{x} = \vv{0} A x = 0 일 때뿐인데,
열이 독립이면 그런 x \vv{x} x 는 0 \vv{0} 0 밖에 없다. 따라서 A T A A^{\mathsf T}A A T A 는
양의 정부호이고, 고윳값이 전부 양수이므로 가역이다.
좌역행렬을 만든다 ¶ 이제 A left + = ( A T A ) − 1 A T A^{+}_{\text{left}} = (A^{\mathsf T}A)^{-1}A^{\mathsf T} A left + = ( A T A ) − 1 A T 라고 두자.
왼쪽에서 곱해 보면
A left + A = ( A T A ) − 1 A T A = ( A T A ) − 1 ( A T A ) = I n A^{+}_{\text{left}}A
= \left(A^{\mathsf T}A\right)^{-1}A^{\mathsf T}A
= \left(A^{\mathsf T}A\right)^{-1}\!\left(A^{\mathsf T}A\right)
= I_n A left + A = ( A T A ) − 1 A T A = ( A T A ) − 1 ( A T A ) = I n 이다. (5) 의 계산은 괄호를 다시 묶은 것이 전부다.
왼쪽에서는 완전히 되돌아온다.
그러면 오른쪽은 어떤가. 순서를 바꿔 보면
A A left + = A ( A T A ) − 1 A T A\,A^{+}_{\text{left}}
= A\left(A^{\mathsf T}A\right)^{-1}A^{\mathsf T} A A left + = A ( A T A ) − 1 A T 가 되는데, 여기서는 괄호를 다시 묶을 수가 없다. A A A 가 정방이 아니면
A − 1 A^{-1} A − 1 이 없기 때문이다. 그래서 I I I 가 되지 않는다.
그런데 이 행렬을 우리는 안다 ¶ (6) 의 식을 다시 보자. L15에서 부분공간으로의 투영을 다룰 때
정확히 같은 행렬이 나왔다.
P = A ( A T A ) − 1 A T P = A\left(A^{\mathsf T}A\right)^{-1}A^{\mathsf T} P = A ( A T A ) − 1 A T (7) 의 P P P 는 A A A 의 열공간으로의 투영행렬 이었다.
정말 그런지 두 성질을 직접 확인해 보자. 제곱하면 가운데에서 A T A A^{\mathsf T}A A T A 와
그 역행렬이 만나 사라진다.
P 2 = A ( A T A ) − 1 A T A ( A T A ) − 1 ⏟ = I A T = A ( A T A ) − 1 A T = P P^2
= A\left(A^{\mathsf T}A\right)^{-1}
\underbrace{A^{\mathsf T}A\left(A^{\mathsf T}A\right)^{-1}}_{= I}
A^{\mathsf T}
= A\left(A^{\mathsf T}A\right)^{-1}A^{\mathsf T}
= P P 2 = A ( A T A ) − 1 = I A T A ( A T A ) − 1 A T = A ( A T A ) − 1 A T = P 전치를 취하면 ( M − 1 ) T = ( M T ) − 1 \left(M^{-1}\right)^{\mathsf T} = \left(M^{\mathsf T}\right)^{-1} ( M − 1 ) T = ( M T ) − 1 과
A T A A^{\mathsf T}A A T A 가 대칭이라는 사실이 함께 작동한다.
P T = A [ ( A T A ) − 1 ] T A T = A [ ( A T A ) T ] − 1 A T = A ( A T A ) − 1 A T = P P^{\mathsf T}
= A\left[\left(A^{\mathsf T}A\right)^{-1}\right]^{\mathsf T}A^{\mathsf T}
= A\left[\left(A^{\mathsf T}A\right)^{\mathsf T}\right]^{-1}A^{\mathsf T}
= A\left(A^{\mathsf T}A\right)^{-1}A^{\mathsf T}
= P P T = A [ ( A T A ) − 1 ] T A T = A [ ( A T A ) T ] − 1 A T = A ( A T A ) − 1 A T = P (8) 의 식과 (9) 의 식이 보인 두 성질이 곧 "직교투영"의 정의다.
고윳값은 0과 1뿐이다. 한 번 투영한 것을 또 투영해도 그대로이기 때문이다(L21).
그리고 이것은 L16의 공식이다 ¶ 한 걸음 더 가자. b \vv{b} b 에 좌역행렬을 곱하면
x ^ = A left + b = ( A T A ) − 1 A T b \hat{\vv{x}}
= A^{+}_{\text{left}}\,\vv{b}
= \left(A^{\mathsf T}A\right)^{-1}A^{\mathsf T}\vv{b} x ^ = A left + b = ( A T A ) − 1 A T b 인데, (10) 의 오른쪽은 L16의 최소제곱 공식과 글자 하나까지 같다.
정규방정식 A T A x ^ = A T b A^{\mathsf T}A\hat{\vv{x}} = A^{\mathsf T}\vv{b} A T A x ^ = A T b 를 풀어 쓴 것이 바로 그것이다.
L16의 앵커를 그대로 가져와 확인해 보자.
A = [ 1 1 1 2 1 3 ] , b = [ 1 3 2 ] A = \begin{bmatrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{bmatrix},
\qquad
\vv{b} = \begin{bmatrix} 1 \\ 3 \\ 2 \end{bmatrix} A = ⎣ ⎡ 1 1 1 1 2 3 ⎦ ⎤ , b = ⎣ ⎡ 1 3 2 ⎦ ⎤ (11) 의 행렬에서 A T A = [ 3 6 6 14 ] A^{\mathsf T}A = \begin{bmatrix} 3 & 6 \\ 6 & 14\end{bmatrix} A T A = [ 3 6 6 14 ]
이고 A T b = ( 6 , 13 ) A^{\mathsf T}\vv{b} = (6,\ 13) A T b = ( 6 , 13 ) 이므로, 좌역행렬을 곱한 결과는 이렇게 나온다.
x ^ = [ 1 0.5 ] , p = A x ^ = [ 1.5 2 2.5 ] , e = b − p = [ − 0.5 1 − 0.5 ] \hat{\vv{x}} = \begin{bmatrix} 1 \\ 0.5 \end{bmatrix},
\qquad
\vv{p} = A\hat{\vv{x}} = \begin{bmatrix} 1.5 \\ 2 \\ 2.5 \end{bmatrix},
\qquad
\vv{e} = \vv{b} - \vv{p} = \begin{bmatrix} -0.5 \\ 1 \\ -0.5 \end{bmatrix} x ^ = [ 1 0.5 ] , p = A x ^ = ⎣ ⎡ 1.5 2 2.5 ⎦ ⎤ , e = b − p = ⎣ ⎡ − 0.5 1 − 0.5 ⎦ ⎤ (12) 의 세 벡터는 L16에서 손으로 구한 값과 하나도 다르지 않다.
검산도 그대로다. A T e = ( 0 , 0 ) A^{\mathsf T}\vv{e} = (0,\ 0) A T e = ( 0 , 0 ) 이므로 잔차는 열공간에 수직이다.
Figure 2: 왼쪽은 L16에서 본 그림이고 오른쪽은 같은 숫자를 R 3 \R^3 R 3 에서 본 것이다.
b \vv{b} b 는 평면 밖에 있고 p = A A + b \vv{p} = AA^{+}\vv{b} p = A A + b 는 평면 위에 있으며,
그 차이인 e \vv{e} e 는 평면에 수직이다.
3. 우역행렬 — 가장 짧은 해를 고른다 ¶ 이번에는 행이 독립인 경우(r = m ≤ n r = m \le n r = m ≤ n )다. 미지수가 관측보다 많은 상황이고,
(2) 의 조건에 따라 해가 무한히 많다.
해가 없어서 곤란한 것이 아니라 너무 많아서 곤란하다. 그중 하나를 골라야 한다.
우역행렬 ¶ 이번에는 A A T AA^{\mathsf T} A A T 가 가역이다. (4) 의 논증을 A T A^{\mathsf T} A T 에
적용하면 되는데, 행이 독립이라는 것이 곧 A T A^{\mathsf T} A T 의 열이 독립이라는 뜻이기
때문이다. 그래서 A right + = A T ( A A T ) − 1 A^{+}_{\text{right}} = A^{\mathsf T}(AA^{\mathsf T})^{-1} A right + = A T ( A A T ) − 1 로 두면
A A right + = A A T ( A A T ) − 1 = I m A\,A^{+}_{\text{right}}
= A A^{\mathsf T}\!\left(AA^{\mathsf T}\right)^{-1}
= I_m A A right + = A A T ( A A T ) − 1 = I m 이 된다. (13) 의 계산도 괄호를 다시 묶은 것뿐이다.
이번에는 오른쪽에서 완전히 되돌아온다. 곧 x = A right + b \vv{x} = A^{+}_{\text{right}}\vv{b} x = A right + b 가
A x = b A\vv{x} = \vv{b} A x = b 를 정말로 만족한다. 근사가 아니라 진짜 해다.
그런데 왜 하필 이 해인가 ¶ 해가 무한히 많은데 이 공식은 그중 하나를 골라 준다. 무엇을 기준으로 고르는가.
L8에서 완전해의 모양을 배웠다. 특수해 하나에 영공간의 아무 원소나 더하면 된다.
x = x p + x n , x n ∈ N ( A ) \vv{x} = \vv{x}_p + \vv{x}_n,
\qquad \vv{x}_n \in N(A) x = x p + x n , x n ∈ N ( A ) (14) 의 해집합은 영공간을 평행이동한 것 이다. 직선이거나 평면이거나
그 이상인 덩어리인데, 그 위의 모든 점이 똑같이 정답이다.
그중 하나를 고르는 자연스러운 규칙이 하나 있다. 가장 짧은 것을 고르는 것이다.
증명은 짧다. x + \vv{x}^{+} x + 는 A T A^{\mathsf T} A T 의 열들의 조합이므로 행공간에 있다.
여기에 영공간의 원소 x n \vv{x}_n x n 을 더한 것도 해인데, 행공간과 영공간은 직교하므로
(L14) 피타고라스가 성립한다.
∥ x + + x n ∥ 2 = ∥ x + ∥ 2 + ∥ x n ∥ 2 ≥ ∥ x + ∥ 2 \lVert \vv{x}^{+} + \vv{x}_n \rVert^2
= \lVert \vv{x}^{+} \rVert^2 + \lVert \vv{x}_n \rVert^2
\ \ge\ \lVert \vv{x}^{+} \rVert^2 ∥ x + + x n ∥ 2 = ∥ x + ∥ 2 + ∥ x n ∥ 2 ≥ ∥ x + ∥ 2 (15) 의 부등식에서 등호는 x n = 0 \vv{x}_n = \vv{0} x n = 0 일 때만 성립한다.
어느 방향으로 움직여도 길어지기만 한다.
앵커로 확인 ¶ A = [ 1 1 1 1 2 3 ] , b = [ 6 14 ] A = \begin{bmatrix} 1 & 1 & 1 \\ 1 & 2 & 3 \end{bmatrix},
\qquad
\vv{b} = \begin{bmatrix} 6 \\ 14 \end{bmatrix} A = [ 1 1 1 2 1 3 ] , b = [ 6 14 ] (16) 의 방정식은 해가 무한히 많다. 영공간이 ( 1 , − 2 , 1 ) (1,-2,1) ( 1 , − 2 , 1 ) 방향의 직선이기
때문이다. 우역행렬이 고르는 해는 x + = ( 1 , 2 , 3 ) \vv{x}^{+} = (1,\ 2,\ 3) x + = ( 1 , 2 , 3 ) 이고 길이가 3.7417 이다.
직선을 따라 움직여 보면 길이가 늘기만 한다.
해 ∥ x ∥ \lVert\vv{x}\rVert ∥ x ∥ ( − 1 , 6 , 1 ) (-1,\ 6,\ 1) ( − 1 , 6 , 1 ) 6.164 ( 0 , 4 , 2 ) (0,\ 4,\ 2) ( 0 , 4 , 2 ) 4.472 ( 1 , 2 , 3 ) \mathbf{(1,\ 2,\ 3)} ( 1 , 2 , 3 ) 3.742 \mathbf{3.742} 3.742 ( 2 , 0 , 4 ) (2,\ 0,\ 4) ( 2 , 0 , 4 ) 4.472 ( 3 , − 2 , 5 ) (3,\ -2,\ 5) ( 3 , − 2 , 5 ) 6.164
그리고 x + ⋅ ( 1 , − 2 , 1 ) = 1 − 4 + 3 = 0 \vv{x}^{+} \cdot (1,-2,1) = 1 - 4 + 3 = 0 x + ⋅ ( 1 , − 2 , 1 ) = 1 − 4 + 3 = 0 이다. 영공간에 수직이다.
Figure 3: 해집합은 직선이고, 그 위에서 원점에 가장 가까운 점이 x + \vv{x}^{+} x + 다.
원점에서 그 점으로 가는 화살표는 직선에 수직이다.
투영이 또 나왔다. 2절에서는 b \vv{b} b 를 열공간에 투영했고, 여기서는
원점을 해집합에 투영 했다.
L15의 그림이 두 번 다 밑에 깔려 있다. 좌역행렬이든 우역행렬이든 하는 일은
"닿을 수 있는 가장 가까운 점을 고른다"는 것 하나다.
4. 일반형 — SVD로 만든다 ¶ 이제 랭크가 모자라는 경우(r < m r < m r < m 이고 r < n r < n r < n )가 남았다. 이때는
A T A A^{\mathsf T}A A T A 도 A A T AA^{\mathsf T} A A T 도 가역이 아니므로 앞의 두 공식이 전부 무너진다.
여기서 L29가 구해 준다. SVD에는 조건이 없었다.
A = U Σ V T , Σ = diag ( σ 1 , … , σ r , 0 , … , 0 ) A = U\Sigma V^{\mathsf T},
\qquad
\Sigma = \diag(\sigma_1, \dots, \sigma_r, 0, \dots, 0) A = U Σ V T , Σ = diag ( σ 1 , … , σ r , 0 , … , 0 ) (17) 의 분해를 되돌리려면 각 조각을 되돌리면 된다. U U U 와 V V V 는 직교행렬이라
전치가 곧 역행렬이고(L17), 가운데의 Σ \Sigma Σ 만 어떻게 할지 정하면 된다.
A + = V Σ + U T , ( Σ + ) i i = { 1 / σ i σ i > 0 0 σ i = 0 A^{+} = V\Sigma^{+}U^{\mathsf T},
\qquad
\left(\Sigma^{+}\right)_{ii} =
\begin{cases}
1/\sigma_i & \sigma_i > 0 \\
0 & \sigma_i = 0
\end{cases} A + = V Σ + U T , ( Σ + ) ii = { 1/ σ i 0 σ i > 0 σ i = 0 (18) 의 정의에서 눈여겨볼 곳은 아래 줄이다. 0을 0으로 둔다.
1 / 0 1/0 1/0 을 쓸 수는 없으니 어쩔 수 없는 선택인데, 이 한 줄이 의사역행렬의 성격을 전부
결정한다.
Σ + \Sigma^{+} Σ + 는 Σ \Sigma Σ 의 전치 모양 이라는 점도 짚어 두자. Σ \Sigma Σ 가
m × n m \times n m × n 이면 Σ + \Sigma^{+} Σ + 는 n × m n \times m n × m 이다. 그래야 A + A^{+} A + 가 n × m n \times m n × m 이 되어
A A A 와 반대 방향으로 갈 수 있다.
그러면 Σ \Sigma Σ 와 Σ + \Sigma^{+} Σ + 를 곱하면 무엇이 되는가. 순서를 바꿔 두 번 계산해 보자.
Σ + Σ = [ I r 0 0 0 ] n × n , Σ Σ + = [ I r 0 0 0 ] m × m \Sigma^{+}\Sigma = \begin{bmatrix} I_r & 0 \\ 0 & 0 \end{bmatrix}_{n \times n},
\qquad
\Sigma\Sigma^{+} = \begin{bmatrix} I_r & 0 \\ 0 & 0 \end{bmatrix}_{m \times m} Σ + Σ = [ I r 0 0 0 ] n × n , Σ Σ + = [ I r 0 0 0 ] m × m (19) 의 두 행렬은 크기가 다르지만 생김새는 같다. 앞 r r r 칸만 살리고
나머지는 죽이는 투영 이다. 여기에 V V V 와 U U U 를 씌우면
A + A = V Σ + Σ V T , A A + = U Σ Σ + U T A^{+}A = V\Sigma^{+}\Sigma V^{\mathsf T},
\qquad
AA^{+} = U\Sigma\Sigma^{+}U^{\mathsf T} A + A = V Σ + Σ V T , A A + = U Σ Σ + U T 가 된다. (20) 의 왼쪽은 행공간으로의 투영 이고 오른쪽은
열공간으로의 투영 이다. 1절의 표에 있던 P P P 두 개가 여기서 정체를 드러낸다.
그리고 r = n r = n r = n 이면 왼쪽이 I n I_n I n 이 되고, r = m r = m r = m 이면 오른쪽이 I m I_m I m 이 된다.
네 경우가 이 한 쌍의 식에서 전부 나온다.
앞의 둘이 특수한 경우다 ¶ (18) 의 정의는 앞에서 만든 좌·우역행렬을 포함한다. 확인해 보자.
열이 독립이면 r = n r = n r = n 이라 σ 1 , … , σ n \sigma_1, \dots, \sigma_n σ 1 , … , σ n 이 전부 양수이고
V V V 가 n × n n \times n n × n 직교행렬이다. 먼저 A T A A^{\mathsf T}A A T A 를 SVD로 적으면
A T A = V Σ T U T U Σ V T = V ( Σ T Σ ) V T = V diag ( σ 1 2 , … , σ n 2 ) V T A^{\mathsf T}A
= V\Sigma^{\mathsf T}U^{\mathsf T}U\Sigma V^{\mathsf T}
= V\left(\Sigma^{\mathsf T}\Sigma\right)V^{\mathsf T}
= V\diag\!\left(\sigma_1^2, \dots, \sigma_n^2\right)V^{\mathsf T} A T A = V Σ T U T U Σ V T = V ( Σ T Σ ) V T = V diag ( σ 1 2 , … , σ n 2 ) V T 이다. (21) 의 오른쪽은 대각행렬을 직교행렬로 감싼 것이니 역행렬이
곧바로 나온다.
( A T A ) − 1 = V diag ( σ 1 − 2 , … , σ n − 2 ) V T \left(A^{\mathsf T}A\right)^{-1}
= V\diag\!\left(\sigma_1^{-2}, \dots, \sigma_n^{-2}\right)V^{\mathsf T} ( A T A ) − 1 = V diag ( σ 1 − 2 , … , σ n − 2 ) V T 이제 (22) 의 식에 A T = V Σ T U T A^{\mathsf T} = V\Sigma^{\mathsf T}U^{\mathsf T} A T = V Σ T U T 를
오른쪽에서 곱한다. 가운데의 V T V V^{\mathsf T}V V T V 가 I I I 로 사라진다.
( A T A ) − 1 A T = V diag ( σ i − 2 ) V T V ⏟ = I Σ T U T = V diag ( σ i − 1 ) U T = V Σ + U T \left(A^{\mathsf T}A\right)^{-1}A^{\mathsf T}
= V\diag\!\left(\sigma_i^{-2}\right)\underbrace{V^{\mathsf T}V}_{=I}
\Sigma^{\mathsf T}U^{\mathsf T}
= V\diag\!\left(\sigma_i^{-1}\right)U^{\mathsf T}
= V\Sigma^{+}U^{\mathsf T} ( A T A ) − 1 A T = V diag ( σ i − 2 ) = I V T V Σ T U T = V diag ( σ i − 1 ) U T = V Σ + U T (23) 의 마지막이 정확히 A + A^{+} A + 다. σ i − 2 \sigma_i^{-2} σ i − 2 에 σ i \sigma_i σ i 를
곱해 σ i − 1 \sigma_i^{-1} σ i − 1 이 된 것이 계산의 전부다. 우역행렬도 같은 방식으로 나온다.
공식 하나가 네 경우를 전부 덮는다.
기하로 읽기 ¶ A A A 가 무슨 일을 했는지 L29에서 보았다. 행공간의 v i \vv{v}_i v i 를 열공간의 u i \vv{u}_i u i 로
σ i \sigma_i σ i 배 해서 보냈고, 영공간은 통째로 0으로 눌렀다.
A v i = σ i u i ⟺ A + u i = 1 σ i v i A\vv{v}_i = \sigma_i \vv{u}_i
\qquad\Longleftrightarrow\qquad
A^{+}\vv{u}_i = \frac{1}{\sigma_i}\vv{v}_i A v i = σ i u i ⟺ A + u i = σ i 1 v i (24) 의 오른쪽이 A + A^{+} A + 가 하는 일이다. 열공간의 u i \vv{u}_i u i 를
행공간의 v i \vv{v}_i v i 로 1 / σ i 1/\sigma_i 1/ σ i 배 해서 되돌린다. 화살표가 정확히 반대다.
그러면 좌영공간은 어떻게 되는가. Σ + \Sigma^{+} Σ + 의 0 자리가 그것을 담당한다.
A + A^{+} A + 는 좌영공간을 0으로 누른다.
Figure 4: L10에서 그린 네 부분공간에 화살표를 양방향으로 채운 것이다.
위쪽 두 칸은 왕복이 되고 아래쪽 두 칸은 편도다.
L30에서 이름을 안 붙이고 넘어간 그것 ¶ L30에서 다항식 공간의 미분행렬 D D D 와 적분행렬 S S S 를 만들었다.
그때 D S = I DS = I D S = I 인데 S D ≠ I SD \neq I S D = I 인 것을 보고 "한쪽으로만 역행렬"이라고만 하고
이름을 붙이지 않았다.
이제 이름을 붙일 수 있다. S S S 는 정확히 D D D 의 의사역행렬이다.
n = 4 , 6 , 8 n = 4, 6, 8 n = 4 , 6 , 8 어디서 확인해도 S = D + S = D^{+} S = D + 가 성립한다.
그리고 S D SD S D 는 무엇인가. 계산해 보면 첫 성분만 0이고 나머지는 그대로인 행렬,
곧 상수항을 뺀 행공간으로의 투영 이다. 미분이 상수항을 죽였으므로 적분은 그것을
되찾을 수 없다. (3) 의 문장 그대로다.
5. 수치적 안정성 — L16이 미뤄 둔 질문의 답 ¶ L16의 마지막은 이렇게 끝났다.
그런데 찜찜한 것이 하나 남는다. 우리는 A T A A^{\mathsf T}A A T A 를 뒤집었다.
이 계산은 안전한가. … 열들이 서로 더 닮으면 어떻게 되는가.
이 물음은 지금 답하지 않는다.
이제 답할 때가 되었다. 안전하지 않다.
조건수가 제곱된다 ¶ A A A 의 특이값이 σ 1 ≥ ⋯ ≥ σ n \sigma_1 \ge \dots \ge \sigma_n σ 1 ≥ ⋯ ≥ σ n 이면 A T A A^{\mathsf T}A A T A 의 고윳값은
σ i 2 \sigma_i^2 σ i 2 이다(L29). 조건수는 최대와 최소의 비이므로
κ ( A T A ) = σ 1 2 σ n 2 = ( σ 1 σ n ) 2 = κ ( A ) 2 \kappa(A^{\mathsf T}A)
= \frac{\sigma_1^2}{\sigma_n^2}
= \left(\frac{\sigma_1}{\sigma_n}\right)^{\!2}
= \kappa(A)^2 κ ( A T A ) = σ n 2 σ 1 2 = ( σ n σ 1 ) 2 = κ ( A ) 2 가 된다. (25) 의 등식이 이 절의 전부다. A T A A^{\mathsf T}A A T A 를 만드는 순간
조건수가 제곱된다.
L32에서 조건수가 무엇을 재는 수인지 보았다. 입력의 상대오차가 답에서 최대 몇 배까지
커지는가였다. 배정밀도의 유효자릿수가 약 16자리이므로
κ ( A ) = 1 0 8 ⟹ κ ( A T A ) = 1 0 16 ≈ 1 ϵ mach \kappa(A) = 10^{8}
\qquad\Longrightarrow\qquad
\kappa(A^{\mathsf T}A) = 10^{16} \approx \frac{1}{\epsilon_{\text{mach}}} κ ( A ) = 1 0 8 ⟹ κ ( A T A ) = 1 0 16 ≈ ϵ mach 1 이고, (26) 의 지점에서 유효자릿수가 전부 소진된다.
A A A 자체는 아직 멀쩡한데 A T A A^{\mathsf T}A A T A 는 이미 특이행렬로 보이는 것이다.
세 방법을 겨뤄 보면 ¶ 정답을 아는 문제를 만들어 재 보면 이렇게 갈린다.
κ ( A ) \kappa(A) κ ( A ) 정규방정식 QR SVD 102 1.1 × 1 0 − 13 1.1\times10^{-13} 1.1 × 1 0 − 13 1.5 × 1 0 − 14 1.5\times10^{-14} 1.5 × 1 0 − 14 1.6 × 1 0 − 14 1.6\times10^{-14} 1.6 × 1 0 − 14 104 7.8 × 1 0 − 10 7.8\times10^{-10} 7.8 × 1 0 − 10 7.6 × 1 0 − 11 7.6\times10^{-11} 7.6 × 1 0 − 11 7.6 × 1 0 − 11 7.6\times10^{-11} 7.6 × 1 0 − 11 106 6.9 × 1 0 − 6 6.9\times10^{-6} 6.9 × 1 0 − 6 2.9 × 1 0 − 7 2.9\times10^{-7} 2.9 × 1 0 − 7 2.9 × 1 0 − 7 2.9\times10^{-7} 2.9 × 1 0 − 7 108 5.8 × 1 0 − 2 \mathbf{5.8\times10^{-2}} 5.8 × 1 0 − 2 4.6 × 1 0 − 3 4.6\times10^{-3} 4.6 × 1 0 − 3 4.6 × 1 0 − 3 4.6\times10^{-3} 4.6 × 1 0 − 3
Figure 5: 왼쪽에서 빨간 선(정규방정식)이 늘 위에 있다. 오른쪽은 κ ( A T A ) \kappa(A^{\mathsf T}A) κ ( A T A ) 를 실제로
잰 것인데 κ ( A ) 2 \kappa(A)^2 κ ( A ) 2 위에 정확히 올라앉는다.
( A T A ) − 1 A T b (A^{\mathsf T}A)^{-1}A^{\mathsf T}\vv{b} ( A T A ) − 1 A T b 는 종이 위에서는 옳다. 그런데 그것을
코드로 그대로 옮기면 조건수를 제곱해 버린다. 실무에서 가장 자주 만나는 함정이다.
안정성 순서는 정규방정식 < QR < SVD 이고, 속도 순서는 정확히 그 반대다.
numpy.linalg.lstsq 는 QR 쪽, numpy.linalg.pinv 는 SVD 쪽이다.
둘 중 하나를 쓰면 되고, inv(A.T @ A) @ A.T 를 손으로 쓰지 마라.
작은 σ \sigma σ 를 어떻게 할 것인가 ¶ 한 가지가 더 남았다. (18) 의 정의는 "σ i > 0 \sigma_i > 0 σ i > 0 이면 1 / σ i 1/\sigma_i 1/ σ i "라고
했는데, 컴퓨터에서 정확히 0인 특이값은 거의 나오지 않는다.
10-17 같은 값이 나오고, 그 역수는 1017 이다.
그래서 어디까지를 0으로 볼지 정해야 한다. 이것이 rcond 다.
문턱보다 작은 σ \sigma σ 는 0으로 취급해 버린다. 딱 자르는 방식이다.
부드럽게 자르는 방법도 있다. 티호노프 정칙화(능형회귀)는 λ > 0 \lambda > 0 λ > 0 을 하나 두고
x λ = ( A T A + λ I ) − 1 A T b \vv{x}_\lambda
= \left(A^{\mathsf T}A + \lambda I\right)^{-1}A^{\mathsf T}\vv{b} x λ = ( A T A + λ I ) − 1 A T b 를 푼다. (27) 의 해가 무엇을 하는지는 SVD로 갈아 끼우면 드러난다.
(21) 의 식을 넣으면 괄호 안이 이렇게 된다.
A T A + λ I = V diag ( σ i 2 ) V T + λ V V T = V diag ( σ i 2 + λ ) V T A^{\mathsf T}A + \lambda I
= V\diag\!\left(\sigma_i^2\right)V^{\mathsf T} + \lambda VV^{\mathsf T}
= V\diag\!\left(\sigma_i^2 + \lambda\right)V^{\mathsf T} A T A + λ I = V diag ( σ i 2 ) V T + λV V T = V diag ( σ i 2 + λ ) V T λ I = λ V V T \lambda I = \lambda VV^{\mathsf T} λ I = λV V T 로 바꿔 쓴 것이 요령이다. 그래야 V V V 로 묶인다.
(28) 의 역행렬을 취하고 A T = V Σ T U T A^{\mathsf T} = V\Sigma^{\mathsf T}U^{\mathsf T} A T = V Σ T U T 를
곱하면, 앞에서와 똑같이 V T V V^{\mathsf T}V V T V 가 사라진다.
x λ = V diag ( 1 σ i 2 + λ ) Σ T U T b = V diag ( σ i σ i 2 + λ ) U T b \vv{x}_\lambda
= V\diag\!\left(\frac{1}{\sigma_i^2 + \lambda}\right)\Sigma^{\mathsf T}U^{\mathsf T}\vv{b}
= V\diag\!\left(\frac{\sigma_i}{\sigma_i^2 + \lambda}\right)U^{\mathsf T}\vv{b} x λ = V diag ( σ i 2 + λ 1 ) Σ T U T b = V diag ( σ i 2 + λ σ i ) U T b (29) 의 마지막을 성분으로 풀어 쓰면 이렇다.
x λ = ∑ i σ i σ i 2 + λ ( u i T b ) v i \vv{x}_\lambda
= \sum_{i} \frac{\sigma_i}{\sigma_i^2 + \lambda}
\left(\vv{u}_i^{\mathsf T}\vv{b}\right)\vv{v}_i x λ = i ∑ σ i 2 + λ σ i ( u i T b ) v i (30) 의 계수를 1 / σ i 1/\sigma_i 1/ σ i 와 견줘 보자. λ = 0 \lambda = 0 λ = 0 이면
σ i / σ i 2 = 1 / σ i \sigma_i/\sigma_i^2 = 1/\sigma_i σ i / σ i 2 = 1/ σ i 라 정확히 의사역행렬이 된다.
σ i σ i 2 + λ ⟶ { 1 σ i σ i ≫ λ σ i λ → 0 σ i ≪ λ \frac{\sigma_i}{\sigma_i^2 + \lambda}
\ \longrightarrow\
\begin{cases}
\dfrac{1}{\sigma_i} & \sigma_i \gg \sqrt{\lambda} \\[2mm]
\dfrac{\sigma_i}{\lambda} \to 0 & \sigma_i \ll \sqrt{\lambda}
\end{cases} σ i 2 + λ σ i ⟶ ⎩ ⎨ ⎧ σ i 1 λ σ i → 0 σ i ≫ λ σ i ≪ λ (31) 의 두 극한 사이의 경계가 λ \sqrt{\lambda} λ 다.
문턱이 λ \lambda λ 가 아니라 λ \sqrt{\lambda} λ 라는 점이 중요하다.
Figure 6: 왼쪽이 rcond 의 딱 자르기, 오른쪽이 능형회귀의 부드러운 자르기다.
둘 다 작은 σ \sigma σ 로 나누기를 거부한다. 갑자기 거부하느냐 서서히 거부하느냐가 다르다.
6. 무어-펜로즈 조건 ¶ 지금까지 만든 A + A^{+} A + 가 유일한 것인지 물을 수 있다. 답은 그렇다이고,
그것을 정하는 조건이 넷이다.
(32) 의 네 조건은 각각 읽을 수 있다.
①은 "A A A 로 갔다가 X X X 로 돌아왔다가 다시 A A A 로 가면 처음 간 곳과 같다"이고,
②는 그 반대이며, ③과 ④는 "A X AX A X 와 X A XA X A 가 직교투영 이다"라는 뜻이다.
투영행렬이 대칭이라는 것이 L15에서 본 그 성질이다.
네 조건을 만족하는 행렬은 정확히 하나뿐이다. 증명은 여기서 생략하지만,
유일성 덕에 "A A A 의 의사역행렬"이라는 말이 뜻을 갖는다.
A A A 가 가역이면 X = A − 1 X = A^{-1} X = A − 1 이 넷을 다 만족한다. 넣어 보면 곧바로 확인된다.
A A − 1 A = A , A − 1 A A − 1 = A − 1 , ( A A − 1 ) T = I T = I , ( A − 1 A ) T = I AA^{-1}A = A,
\quad
A^{-1}AA^{-1} = A^{-1},
\quad
\left(AA^{-1}\right)^{\mathsf T} = I^{\mathsf T} = I,
\quad
\left(A^{-1}A\right)^{\mathsf T} = I A A − 1 A = A , A − 1 A A − 1 = A − 1 , ( A A − 1 ) T = I T = I , ( A − 1 A ) T = I (33) 의 넷이 전부 성립하고 유일성이 있으므로 A + = A − 1 A^{+} = A^{-1} A + = A − 1 이다.
의사역행렬은 역행렬의 확장 이 맞다.
7. 자주 하는 오해 ¶ ① A + A^{+} A + 가 진짜 역행렬처럼 작동한다.
아니다. A A + AA^{+} A A + 와 A + A A^{+}A A + A 는 서로 다른 행렬 이고(크기부터 다르다),
둘 다 I I I 가 아닐 수 있다. Figure 1 의 네 경우 중 첫째에서만 둘 다 I I I 다.
② inv(A.T @ A) @ A.T 를 그대로 쓴다.
가장 흔하고 가장 위험한 실수다. 5절이 답이다. 조건수가 제곱되므로
κ ( A ) \kappa(A) κ ( A ) 가 108 만 넘어도 답을 믿을 수 없다.
lstsq 나 pinv 를 쓰면 같은 문제에서 훨씬 잘 버틴다.
③ rcond 를 신경 쓰지 않는다.
어디까지를 0으로 볼 것인가는 사람이 정해야 하는 판단 이다.
문턱을 낮추면 잔차는 줄지만 해가 폭발하고, 높이면 해는 얌전하지만 잔차가 커진다.
기본값이 늘 옳을 이유가 없다.
④ 최소노름 해가 "정답"이다.
아니다. 해가 무한히 많을 때 그중 하나를 고르는 하나의 규약 일 뿐이다.
문제에 따라 다른 기준이 옳을 수 있다. 예를 들어 성분 대부분이 0인 해를 원한다면
ℓ 1 \ell_1 ℓ 1 노름을 최소로 하는 것이 낫고, 그것은 A + A^{+} A + 가 주는 답과 전혀 다르다.
⑤ 랭크가 모자라도 A + A = I A^{+}A = I A + A = I 이겠지.
아니다. 랭크가 모자라면 영공간이 있고, 영공간의 벡터는 A A A 가 죽여 버리므로
A + A^{+} A + 가 되살릴 방법이 없다. A + A A^{+}A A + A 는 행공간으로의 투영 이 될 뿐이다.
마치며... ¶ 이번 강의에서는 역행렬이 없는 행렬을 되돌리는 방법을 공부하였다.
열이 독립이면 좌역행렬 ( A T A ) − 1 A T (A^{\mathsf T}A)^{-1}A^{\mathsf T} ( A T A ) − 1 A T 가 있다.
A + A = I A^{+}A = I A + A = I 이고 A A + AA^{+} A A + 는 열공간으로의 투영이다.
행이 독립이면 우역행렬 A T ( A A T ) − 1 A^{\mathsf T}(AA^{\mathsf T})^{-1} A T ( A A T ) − 1 가 있고,
그것이 고르는 것은 가장 짧은 해 다. 행공간에 있고 영공간에 수직이기 때문이다.
어느 쪽도 아니면 A + = V Σ + U T A^{+} = V\Sigma^{+}U^{\mathsf T} A + = V Σ + U T 를 쓴다. 조건이 없다.
A A A 가 행공간을 열공간으로 보냈다면 A + A^{+} A + 는 열공간을 행공간으로 되돌린다.
영공간에서 잃은 것은 되찾지 못한다.
그리고 반가운 재회가 있었다. 전반부에서 배운 최소제곱 공식이 바로 좌역행렬이었다.
그때는 "해가 없을 때 가장 가까운 답을 찾는 방법"이라고만 알았지만, 사실은 되돌릴 수
없는 행렬을 되돌리는 일을 하고 있었던 것이다.
또한 L16이 미뤄 두었던 질문에도 답했다. 정규방정식을 그대로 쓰면 조건수가 제곱되어
위험하다. 수학적으로 같은 식이 수치적으로 전혀 다르게 행동한다는 사실은,
크래머 공식(L20)과 여인수 전개(L19)와 조르당 형(L28)에 이어 이번이 네 번째다.
이쯤 되면 이것은 예외가 아니라 규칙이다.
다음 강의는 마지막이다. 서른세 편에 걸쳐 배운 모든 것이 어떻게 다섯 개의 분해로
정리되는지, 그리고 그 다섯이 어떻게 하나의 그림으로 이어지는지 살펴보자.
이번 강의의 내용을 파이썬으로 확인해 보려면 L33 실습 노트북 으로
넘어가면 된다. 좌역행렬이 정말 L16의 공식과 같은지 대조하고, 해집합을 따라 움직이며
노름이 늘어나는 것을 보고, 세 방법을 같은 문제에 걸어 조건수가 커질 때 어디서
무너지는지 직접 잴 수 있다.