Lecture 30. 선형변환과 그 행렬 Linear Transformations and Their Matrices — 서술
스물아홉 편에 걸쳐 행렬을 다뤘다. 그런데 사실 우리는 순서를 거꾸로 배워 왔다.
행렬이 있어서 변환이 있는 것이 아니다. 변환이 먼저 있고, 기저를 정하는 순간 행렬이
태어난다. 회전이라는 동작은 좌표계가 있든 없든 존재한다. 그것을 숫자로 적으려면
기저를 골라야 하고, 어떤 기저를 고르느냐에 따라 같은 회전이 다른 숫자들로 적힌다.
지난 강의에서 SVD를 "들어가는 쪽과 나오는 쪽에 각각 좋은 기저를 고른 것"이라고 했다.
그 말이 정확히 무슨 뜻인지 알려면 기저와 행렬의 관계를 근본에서 다시 봐야 한다.
이번 강의는 새로운 것을 배우는 시간이 아니라 지금까지의 전부를 한 층 위에서 다시 보는
시간 이다.
Figure 1: 같은 투영을 두 좌표계에서 적은 것이다. 왼쪽은 표준기저이고 오른쪽은 직선에 맞춘
기저다. 숫자는 전혀 다르지만 투영 자체는 한 번도 변하지 않았다.
어느 쪽이 “진짜” 행렬인가. 그런 것은 없다.
1. 좌표가 하나도 없는 정의 ¶ 먼저 숫자를 완전히 지우고 시작하자. 변환 T T T 가 선형 이라는 것은 딱 두 줄이다.
T ( v + w ) = T ( v ) + T ( w ) , T ( c v ) = c T ( v ) T(\vv{v} + \vv{w}) = T(\vv{v}) + T(\vv{w}),
\qquad
T(c\,\vv{v}) = c\,T(\vv{v}) T ( v + w ) = T ( v ) + T ( w ) , T ( c v ) = c T ( v ) (1) 의 정의에는 행렬도, 좌표도, 성분도 없다. 벡터를 더하는 일과 스칼라를
곱하는 일만 쓰였다. 그러니 이 정의는 R n \R^n R n 뿐 아니라 벡터를 더하고 상수배할 수 있는
어떤 공간에서도 그대로 통한다. L11에서 다항식과 함수도 벡터라고 했던 것이 여기서
쓰인다.
두 줄을 한 줄로 합칠 수도 있다.
T ( c v + d w ) = c T ( v ) + d T ( w ) T(c\,\vv{v} + d\,\vv{w}) = c\,T(\vv{v}) + d\,T(\vv{w}) T ( c v + d w ) = c T ( v ) + d T ( w ) 벡터공간 V V V 에서 벡터공간 W W W 로 가는 사상 T T T 가 모든 v , w ∈ V \vv{v}, \vv{w} \in V v , w ∈ V 와 모든
스칼라 c , d c, d c , d 에 대해 (2) 의 식을 만족하면 T T T 를 선형변환 이라 한다.
선형인 것들 ¶ 회전. 두 벡터를 더한 뒤 돌리나, 각각 돌린 뒤 더하나 같다.
투영. L15에서 다룬 그대로다.
미분. ( f + g ) ′ = f ′ + g ′ (f+g)' = f' + g' ( f + g ) ′ = f ′ + g ′ 이고 ( c f ) ′ = c f ′ (cf)' = cf' ( c f ) ′ = c f ′ 이다. 미적분 첫 시간에 배우는 그 규칙이
사실은 "미분은 선형변환이다"라는 말이었다.
적분. 같은 이유다.
행렬 곱하기. A ( v + w ) = A v + A w A(\vv{v} + \vv{w}) = A\vv{v} + A\vv{w} A ( v + w ) = A v + A w 는 L3에서 확인했다.
선형이 아닌 것들 — 여기가 더 중요하다 ¶ 평행이동. 모든 벡터에 고정된 a \vv{a} a 를 더하는 T ( v ) = v + a T(\vv{v}) = \vv{v} + \vv{a} T ( v ) = v + a 는
선형이 아니다. 두 가지 방법으로 걸린다.
첫째, c = 0 c = 0 c = 0 을 (1) 의 오른쪽 식에 넣어 보자. 선형이라면
T ( 0 ) = T ( 0 ⋅ 0 ) = 0 ⋅ T ( 0 ) = 0 T(\vv{0}) = T(0 \cdot \vv{0}) = 0 \cdot T(\vv{0}) = \vv{0} T ( 0 ) = T ( 0 ⋅ 0 ) = 0 ⋅ T ( 0 ) = 0 이어야 한다. 그런데
평행이동은 T ( 0 ) = a ≠ 0 T(\vv{0}) = \vv{a} \neq \vv{0} T ( 0 ) = a = 0 이다.
선형변환은 반드시 0 을 0 으로 보낸다 \text{선형변환은 반드시 } \vv{0} \text{ 을 } \vv{0} \text{ 으로 보낸다} 선형변환은 반드시 0 을 0 으로 보낸다 (3) 의 사실은 L5의 "부분공간은 원점을 지나야 한다"와 같은 이야기 다.
원점을 지키지 않는 것은 선형대수의 세계에 들어올 수 없다.
둘째, 덧셈으로 직접 확인해 보자. a = ( 1 , 2 ) \vv{a} = (1,2) a = ( 1 , 2 ) 로 두면
T ( v + w ) = v + w + a , T ( v ) + T ( w ) = v + w + 2 a T(\vv{v} + \vv{w}) = \vv{v} + \vv{w} + \vv{a},
\qquad
T(\vv{v}) + T(\vv{w}) = \vv{v} + \vv{w} + 2\vv{a} T ( v + w ) = v + w + a , T ( v ) + T ( w ) = v + w + 2 a (4) 의 두 결과는 a \vv{a} a 하나만큼 어긋난다. 더하는 횟수가 늘어나면
어긋나는 양도 늘어난다.
길이 재기. T ( v ) = ∥ v ∥ T(\vv{v}) = \lVert\vv{v}\rVert T ( v ) = ∥ v ∥ 도 선형이 아니다.
삼각부등식 ∥ v + w ∥ ≤ ∥ v ∥ + ∥ w ∥ \lVert\vv{v}+\vv{w}\rVert \le \lVert\vv{v}\rVert + \lVert\vv{w}\rVert ∥ v + w ∥ ≤ ∥ v ∥ + ∥ w ∥ 은
등호가 아니고, ∥ − v ∥ = + ∥ v ∥ \lVert -\vv{v}\rVert = +\lVert\vv{v}\rVert ∥ − v ∥ = + ∥ v ∥ 인데 − ∥ v ∥ -\lVert\vv{v}\rVert − ∥ v ∥ 여야
하니 두 번째 조건도 깨진다.
평행이동은 선형이 아닌데 그래픽 라이브러리들은 그것을 행렬로 처리한다. 어떻게 하는가.
차원을 하나 올린다.
( 1 0 a 1 0 1 a 2 0 0 1 ) ( x y 1 ) = ( x + a 1 y + a 2 1 ) \begin{pmatrix} 1 & 0 & a_1 \\ 0 & 1 & a_2 \\ 0 & 0 & 1 \end{pmatrix}
\begin{pmatrix} x \\ y \\ 1 \end{pmatrix}
= \begin{pmatrix} x + a_1 \\ y + a_2 \\ 1 \end{pmatrix} ⎝ ⎛ 1 0 0 0 1 0 a 1 a 2 1 ⎠ ⎞ ⎝ ⎛ x y 1 ⎠ ⎞ = ⎝ ⎛ x + a 1 y + a 2 1 ⎠ ⎞ R 2 \R^2 R 2 의 점 ( x , y ) (x,y) ( x , y ) 를 R 3 \R^3 R 3 의 점 ( x , y , 1 ) (x,y,1) ( x , y , 1 ) 로 올려 놓고 R 3 \R^3 R 3 에서 선형변환 을 한
것이다. R 3 \R^3 R 3 에서 보면 이것은 원점을 지키는 어엿한 선형변환이고, 그 결과를 다시
z = 1 z=1 z = 1 평면에서 읽으면 평행이동으로 보인다. 이것을 동차좌표 라 부른다.
선형이 아닌 것을 억지로 선형으로 만든 것이 아니라, 한 차원 위에서 선형인 것을 잘라서
본 것 이다.
2. 기저를 정하면 행렬이 태어난다 ¶ 이제 핵심으로 간다. 선형이라는 두 줄로부터 아주 강한 사실이 따라 나온다.
들어가는 공간 V V V 의 기저를 v 1 , … , v n \vv{v}_1, \dots, \vv{v}_n v 1 , … , v n 이라 하자. 임의의 x ∈ V \vv{x} \in V x ∈ V 는
기저의 조합으로 딱 한 가지 방법으로 적힌다(L9).
x = c 1 v 1 + c 2 v 2 + ⋯ + c n v n \vv{x} = c_1\vv{v}_1 + c_2\vv{v}_2 + \dots + c_n\vv{v}_n x = c 1 v 1 + c 2 v 2 + ⋯ + c n v n 여기에 T T T 를 씌우고 (2) 의 규칙을 n n n 번 쓰면 이렇게 된다.
T ( x ) = c 1 T ( v 1 ) + c 2 T ( v 2 ) + ⋯ + c n T ( v n ) T(\vv{x}) = c_1 T(\vv{v}_1) + c_2 T(\vv{v}_2) + \dots + c_n T(\vv{v}_n) T ( x ) = c 1 T ( v 1 ) + c 2 T ( v 2 ) + ⋯ + c n T ( v n ) 그 n n n 개를 어떻게 적어 두는가 ¶ T ( v j ) T(\vv{v}_j) T ( v j ) 는 나오는 공간 W W W 의 벡터다. W W W 의 기저를 w 1 , … , w m \vv{w}_1, \dots, \vv{w}_m w 1 , … , w m 이라
두면 T ( v j ) T(\vv{v}_j) T ( v j ) 도 그 기저로 전개된다.
T ( v j ) = a 1 j w 1 + a 2 j w 2 + ⋯ + a m j w m T(\vv{v}_j) = a_{1j}\vv{w}_1 + a_{2j}\vv{w}_2 + \dots + a_{mj}\vv{w}_m T ( v j ) = a 1 j w 1 + a 2 j w 2 + ⋯ + a mj w m (8) 에 나온 m m m 개의 계수 a 1 j , … , a m j a_{1j}, \dots, a_{mj} a 1 j , … , a mj 를 세로로 한 줄 세운다.
j j j 를 1 부터 n n n 까지 돌리면 세로줄이 n n n 개 생기고, 그것을 나란히 놓은 것이
m × n m \times n m × n 행렬 A A A 다.
입력 기저 v 1 , … , v n \vv{v}_1,\dots,\vv{v}_n v 1 , … , v n 과 출력 기저 w 1 , … , w m \vv{w}_1,\dots,\vv{w}_m w 1 , … , w m 을 정했을 때,
T T T 의 행렬 A A A 의 j j j 번째 열 은 T ( v j ) T(\vv{v}_j) T ( v j ) 를 출력 기저로 전개한 계수들이다.
행렬의 j j j 번째 열은 j j j 번째 기저벡터가 어디로 가는지를 적은 것이다.
이 한 문장이 이번 강의의 전부라고 해도 좋다. 그리고 이것은 L1의 첫 그림 —
A x A\vv{x} A x 를 열들의 조합으로 보던 그 그림 — 을 서른 강 만에 회수한 것 이다.
Figure 2: e 1 e_1 e 1 은 ( 2 , 1 ) (2,1) ( 2 , 1 ) 로 가고 e 2 e_2 e 2 는 ( − 1 , 1 ) (-1,1) ( − 1 , 1 ) 로 간다. 그 답을 그대로 세로로 적어
나란히 놓으면 행렬이다. 행렬에는 그 이상 아무것도 들어 있지 않다.
좌표는 정말 A c A\vv{c} A c 로 움직이는가 ¶ 아직 확인할 것이 남았다. 우리는 A A A 를 그냥 "적어 둔 표"로 정의했다. 이 표에
좌표벡터 c = ( c 1 , … , c n ) \vv{c} = (c_1,\dots,c_n) c = ( c 1 , … , c n ) 을 곱하면 정말 T ( x ) T(\vv{x}) T ( x ) 의 좌표가 나오는가.
(7) 의 식에 (8) 의 식을 대입한다.
T ( x ) = ∑ j = 1 n c j T ( v j ) = ∑ j = 1 n c j ∑ i = 1 m a i j w i T(\vv{x})
= \sum_{j=1}^{n} c_j\, T(\vv{v}_j)
= \sum_{j=1}^{n} c_j \sum_{i=1}^{m} a_{ij}\vv{w}_i T ( x ) = j = 1 ∑ n c j T ( v j ) = j = 1 ∑ n c j i = 1 ∑ m a ij w i 합의 순서를 바꾸어 w i \vv{w}_i w i 로 묶는다.
T ( x ) = ∑ i = 1 m ( ∑ j = 1 n a i j c j ) w i T(\vv{x}) = \sum_{i=1}^{m} \left( \sum_{j=1}^{n} a_{ij} c_j \right) \vv{w}_i T ( x ) = i = 1 ∑ m ( j = 1 ∑ n a ij c j ) w i (10) 의 괄호 안이 곧 T ( x ) T(\vv{x}) T ( x ) 의 i i i 번째 좌표다. 그런데 그 괄호 안은
∑ j a i j c j \sum_j a_{ij}c_j ∑ j a ij c j 이고, 이것은 정확히 ( A c ) i (A\vv{c})_i ( A c ) i 의 정의다.
[ T ( x ) ] w = A [ x ] v \bigl[\,T(\vv{x})\,\bigr]_{\vv{w}} = A\,\bigl[\,\vv{x}\,\bigr]_{\vv{v}} [ T ( x ) ] w = A [ x ] v 합성이 왜 곱인가 ¶ 같은 계산을 한 번 더 하면 행렬 곱의 두 번째 얼굴이 나온다.
U : V → W U : V \to W U : V → W 의 행렬이 B B B 이고 T : W → Z T : W \to Z T : W → Z 의 행렬이 A A A 라 하자.
곧 U ( v j ) = ∑ k b k j w k U(\vv{v}_j) = \sum_k b_{kj}\vv{w}_k U ( v j ) = ∑ k b kj w k 이고 T ( w k ) = ∑ i a i k z i T(\vv{w}_k) = \sum_i a_{ik}\vv{z}_i T ( w k ) = ∑ i a ik z i 다.
합성 T ∘ U T \circ U T ∘ U 가 v j \vv{v}_j v j 를 어디로 보내는지 물어보자.
( T ∘ U ) ( v j ) = T ( ∑ k b k j w k ) = ∑ k b k j T ( w k ) = ∑ k b k j ∑ i a i k z i (T \circ U)(\vv{v}_j)
= T\!\left( \sum_{k} b_{kj}\vv{w}_k \right)
= \sum_{k} b_{kj}\, T(\vv{w}_k)
= \sum_{k} b_{kj} \sum_{i} a_{ik}\vv{z}_i ( T ∘ U ) ( v j ) = T ( k ∑ b kj w k ) = k ∑ b kj T ( w k ) = k ∑ b kj i ∑ a ik z i 두 번째 등호에서 (2) 의 선형성을 썼다. 이제 z i \vv{z}_i z i 로 묶는다.
( T ∘ U ) ( v j ) = ∑ i ( ∑ k a i k b k j ) z i (T \circ U)(\vv{v}_j)
= \sum_{i} \left( \sum_{k} a_{ik} b_{kj} \right) \vv{z}_i ( T ∘ U ) ( v j ) = i ∑ ( k ∑ a ik b kj ) z i (13) 의 괄호 안이 합성의 행렬의 ( i , j ) (i,j) ( i , j ) 성분이다. 그런데 그것은
∑ k a i k b k j \sum_k a_{ik}b_{kj} ∑ k a ik b kj , 곧 ( A B ) i j (AB)_{ij} ( A B ) ij 다.
합성의 행렬 = A B \text{합성의 행렬} = AB 합성의 행렬 = A B L3에서 "A B AB A B 의 j j j 번째 열은 A A A 곱하기 B B B 의 j j j 번째 열"이라고 했던 것도
같은 말이다. B B B 가 e j \vv{e}_j e j 를 어디로 보내는지 보고, 그 결과를 다시 A A A 로 보내면
된다.
3. 예제 1 — 미분은 행렬이다 ¶ 이제 숫자가 하나도 안 나오는 공간에서 행렬을 만들어 보자.
3차 이하 다항식들의 공간 P 3 P_3 P 3 을 생각한다. 기저는 1 , x , x 2 , x 3 1, x, x^2, x^3 1 , x , x 2 , x 3 네 개이므로
dim P 3 = 4 \dim P_3 = 4 dim P 3 = 4 다. 여기서 미분하면 2차 이하가 되므로 도착지는 P 2 P_2 P 2 이고 기저는
1 , x , x 2 1, x, x^2 1 , x , x 2 세 개다.
T = d / d x T = d/dx T = d / d x 가 기저벡터를 어디로 보내는지 하나씩 물어본다.
d d x 1 = 0 , d d x x = 1 , d d x x 2 = 2 x , d d x x 3 = 3 x 2 \frac{d}{dx}1 = 0,
\qquad
\frac{d}{dx}x = 1,
\qquad
\frac{d}{dx}x^2 = 2x,
\qquad
\frac{d}{dx}x^3 = 3x^2 d x d 1 = 0 , d x d x = 1 , d x d x 2 = 2 x , d x d x 3 = 3 x 2 Figure 3: 왼쪽은 (15) 의 네 답을 그림으로 옮긴 것이다. 오른쪽은 그 답을
그대로 열에 세운 행렬이다. 첫 열이 전부 0인 것은 1 이 죽기 때문이다.
(15) 의 답을 Definition 2 의 정의대로 열에 세운다.
0 은 ( 0 , 0 , 0 ) (0,0,0) ( 0 , 0 , 0 ) , 1 은 ( 1 , 0 , 0 ) (1,0,0) ( 1 , 0 , 0 ) , 2 x 2x 2 x 는 ( 0 , 2 , 0 ) (0,2,0) ( 0 , 2 , 0 ) , 3 x 2 3x^2 3 x 2 은 ( 0 , 0 , 3 ) (0,0,3) ( 0 , 0 , 3 ) 이므로
D = ( 0 1 0 0 0 0 2 0 0 0 0 3 ) D = \begin{pmatrix}
0 & 1 & 0 & 0 \\
0 & 0 & 2 & 0 \\
0 & 0 & 0 & 3
\end{pmatrix} D = ⎝ ⎛ 0 0 0 1 0 0 0 2 0 0 0 3 ⎠ ⎞ 정말 되는지 확인해 보자. p ( x ) = 5 + 3 x + 2 x 3 p(x) = 5 + 3x + 2x^3 p ( x ) = 5 + 3 x + 2 x 3 의 좌표는 ( 5 , 3 , 0 , 2 ) (5,3,0,2) ( 5 , 3 , 0 , 2 ) 이고
D ( 5 3 0 2 ) = ( 3 0 6 ) ⟹ 3 + 0 ⋅ x + 6 x 2 D\begin{pmatrix} 5 \\ 3 \\ 0 \\ 2 \end{pmatrix}
= \begin{pmatrix} 3 \\ 0 \\ 6 \end{pmatrix}
\quad\Longrightarrow\quad
3 + 0\cdot x + 6x^2 D ⎝ ⎛ 5 3 0 2 ⎠ ⎞ = ⎝ ⎛ 3 0 6 ⎠ ⎞ ⟹ 3 + 0 ⋅ x + 6 x 2 p ′ ( x ) = 3 + 6 x 2 p'(x) = 3 + 6x^2 p ′ ( x ) = 3 + 6 x 2 이 맞다. 미분이 행렬 곱셈이 되었다.
이 행렬이 알려 주는 세 가지 ¶ 첫째, 정방행렬이 아니다. D D D 는 3 × 4 3 \times 4 3 × 4 다. 미분하면 차수가 하나 줄어드니
당연하다. 정방이 아니면 역행렬이 있을 수 없다.
둘째, 영공간이 상수함수다. D D D 의 첫 열이 통째로 0 이므로 D c = 0 D\vv{c} = \vv{0} D c = 0 의
해는 c = ( c 1 , 0 , 0 , 0 ) \vv{c} = (c_1, 0,0,0) c = ( c 1 , 0 , 0 , 0 ) , 곧 상수다. L6~L7에서 영공간을 "A x = 0 A\vv{x}=\vv{0} A x = 0 을 만족하는
x \vv{x} x 들"이라고 했던 것이 여기서는 미분해서 0이 되는 함수들 이 된다.
미적분에서 "적분상수를 잊지 마라"고 했던 그 잔소리의 정체가 영공간이다.
셋째, 차원을 아무리 올려도 영공간은 늘 1차원이다. P 5 P_5 P 5 에서는 5 × 6 5 \times 6 5 × 6 ,
P 7 P_7 P 7 에서는 7 × 8 7 \times 8 7 × 8 행렬이 되지만 죽는 것은 언제나 상수 하나뿐이다.
그래서 미분 행렬은 어느 차원에서도 정방이 될 수 없다.
적분을 만들어 곱해 보자 ¶ 이번에는 반대 방향, P 2 → P 3 P_2 \to P_3 P 2 → P 3 의 적분을 행렬로 만든다. 적분상수는 붙이지 않는
것으로 정하자.
∫ 1 d x = x , ∫ x d x = 1 2 x 2 , ∫ x 2 d x = 1 3 x 3 \int 1\,dx = x,
\qquad
\int x\,dx = \tfrac{1}{2}x^2,
\qquad
\int x^2\,dx = \tfrac{1}{3}x^3 ∫ 1 d x = x , ∫ x d x = 2 1 x 2 , ∫ x 2 d x = 3 1 x 3 (18) 의 답을 열에 세우면 4 × 3 4 \times 3 4 × 3 행렬이 나온다.
S = ( 0 0 0 1 0 0 0 1 2 0 0 0 1 3 ) S = \begin{pmatrix}
0 & 0 & 0 \\
1 & 0 & 0 \\
0 & \tfrac{1}{2} & 0 \\
0 & 0 & \tfrac{1}{3}
\end{pmatrix} S = ⎝ ⎛ 0 1 0 0 0 0 2 1 0 0 0 0 3 1 ⎠ ⎞ 이제 두 행렬을 곱해 본다. 순서가 두 가지다.
D S = I 3 , S D = ( 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ) ≠ I 4 DS = I_3,
\qquad
SD = \begin{pmatrix}
0 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{pmatrix} \neq I_4 D S = I 3 , S D = ⎝ ⎛ 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ⎠ ⎞ = I 4 Figure 4: 한쪽 순서로는 단위행렬이 되고 반대 순서로는 안 된다. S D SD S D 는 왼쪽 위 한 칸만
1 대신 0 이다. 그 한 칸이 상수항이다.
적분한 뒤 미분하면 원래대로 돌아온다. 이것이 D S = I 3 DS = I_3 D S = I 3 이다.
미분한 뒤 적분하면 상수를 잃는다. 앞에서 쓴 p = 5 + 3 x + 2 x 3 p = 5 + 3x + 2x^3 p = 5 + 3 x + 2 x 3 으로 따라가 보자.
미분하면 3 + 6 x 2 3 + 6x^2 3 + 6 x 2 이고, 그것을 (상수 없이) 적분하면 3 x + 2 x 3 3x + 2x^3 3 x + 2 x 3 이다.
( 5 , 3 , 0 , 2 ) → D ( 3 , 0 , 6 ) → S ( 0 , 3 , 0 , 2 ) (5,\,3,\,0,\,2)
\ \xrightarrow{\ D\ }\ (3,\,0,\,6)
\ \xrightarrow{\ S\ }\ (0,\,3,\,0,\,2) ( 5 , 3 , 0 , 2 ) D ( 3 , 0 , 6 ) S ( 0 , 3 , 0 , 2 ) (21) 의 처음과 끝을 견주면 첫 칸의 5 만 0 이 되었다.
그것이 (20) 의 S D SD S D 왼쪽 위에 있는 0 이다.
S D SD S D 를 자세히 보면 대각선에 0 , 1 , 1 , 1 0,1,1,1 0 , 1 , 1 , 1 이 놓인 행렬이다. 제곱해도 자기 자신이고
(( S D ) 2 = S D (SD)^2 = SD ( S D ) 2 = S D ) 대칭이다. 투영행렬이다 (L15). 무엇으로의 투영인가.
상수항이 없는 다항식들의 공간 으로의 투영이다.
S S S 는 D D D 의 오른쪽 역행렬 이지만 왼쪽 역행렬은 아니다. 직사각 행렬에서 좌우가
갈리는 이 현상은 우연이 아니다.
미분은 정보를 버리고(상수), 적분은 정보를 만들어 낸다(적분상수). 버린 것은 다시
만들 수 없다. 그래서 한쪽으로만 역이 된다.
L33에서 이 S S S 에 정식 이름을 붙인다. 의사역행렬 이다. 그때 S D SD S D 가 행공간으로의
투영이라는 사실이 정리의 한 줄이 된다.
4. 예제 2 — 투영의 고윳값이 왜 0과 1이었는가 ¶ L15에서 투영행렬을 만들었다. R 3 \R^3 R 3 에서 평면 x + y + z = 0 x + y + z = 0 x + y + z = 0 으로 투영하는 행렬은
법선 n = ( 1 , 1 , 1 ) \vv{n} = (1,1,1) n = ( 1 , 1 , 1 ) 을 써서 이렇게 적힌다.
P = I − n n T n T n = 1 3 ( 2 − 1 − 1 − 1 2 − 1 − 1 − 1 2 ) P = I - \frac{\vv{n}\vv{n}^{\mathsf T}}{\vv{n}^{\mathsf T}\vv{n}}
= \frac{1}{3}\begin{pmatrix}
2 & -1 & -1 \\
-1 & 2 & -1 \\
-1 & -1 & 2
\end{pmatrix} P = I − n T n n n T = 3 1 ⎝ ⎛ 2 − 1 − 1 − 1 2 − 1 − 1 − 1 2 ⎠ ⎞ (22) 의 행렬을 처음 봤을 때 우리는 이것이 무엇을 하는지 숫자만 봐서는 알 수
없었다. 1 3 \tfrac{1}{3} 3 1 과 -1 들이 왜 저기 있는지도 알 수 없었다.
이제 Definition 2 의 정의를 써서 다시 만들어 보자. 다만 기저를 잘 고른다.
평면 안에 두 개, 평면에 수직으로 하나 고른다.
b 1 = ( 1 , − 1 , 0 ) , b 2 = 1 2 ( 1 , 1 , − 2 ) , n = ( 1 , 1 , 1 ) \vv{b}_1 = (1,-1,0),
\qquad
\vv{b}_2 = \tfrac{1}{2}(1,1,-2),
\qquad
\vv{n} = (1,1,1) b 1 = ( 1 , − 1 , 0 ) , b 2 = 2 1 ( 1 , 1 , − 2 ) , n = ( 1 , 1 , 1 ) (23) 의 셋은 서로 직교한다(b 1 ⋅ b 2 = 0 \vv{b}_1 \cdot \vv{b}_2 = 0 b 1 ⋅ b 2 = 0 ,
b 1 ⋅ n = 0 \vv{b}_1 \cdot \vv{n} = 0 b 1 ⋅ n = 0 , b 2 ⋅ n = 0 \vv{b}_2 \cdot \vv{n} = 0 b 2 ⋅ n = 0 ). 이제 각각이 어디로 가는지
계산하지 않고 그냥 안다.
P b 1 = b 1 , P b 2 = b 2 , P n = 0 P\vv{b}_1 = \vv{b}_1,
\qquad
P\vv{b}_2 = \vv{b}_2,
\qquad
P\vv{n} = \vv{0} P b 1 = b 1 , P b 2 = b 2 , P n = 0 (22) 의 정의로 직접 확인해 보자. 법선을 넣으면
P n = n − n ( n T n ) n T n = n − n = 0 P\vv{n}
= \vv{n} - \frac{\vv{n}(\vv{n}^{\mathsf T}\vv{n})}{\vv{n}^{\mathsf T}\vv{n}}
= \vv{n} - \vv{n} = \vv{0} P n = n − n T n n ( n T n ) = n − n = 0 이고, 평면 안의 벡터는 n T b = 0 \vv{n}^{\mathsf T}\vv{b} = 0 n T b = 0 이므로
P b = b − n ( n T b ) n T n = b − 0 = b P\vv{b}
= \vv{b} - \frac{\vv{n}\,(\vv{n}^{\mathsf T}\vv{b})}{\vv{n}^{\mathsf T}\vv{n}}
= \vv{b} - \vv{0} = \vv{b} P b = b − n T n n ( n T b ) = b − 0 = b 가 된다. 평면 안에 있는 것은 투영해도 그대로고, 평면에 수직인 것은 그림자가 없다.
(24) 의 답을 열에 세우면 끝이다.
P 좋은 기저 = ( 1 0 0 0 1 0 0 0 0 ) P_{\text{좋은 기저}} = \begin{pmatrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 0
\end{pmatrix} P 좋은 기저 = ⎝ ⎛ 1 0 0 0 1 0 0 0 0 ⎠ ⎞ Figure 5: 같은 투영인데 왼쪽 행렬과 오른쪽 행렬이 이렇게 다르다. 다른 것은 기저뿐이다.
L21에서 투영행렬의 고윳값은 0과 1뿐 이라고 했다. 그때는 P 2 = P P^2 = P P 2 = P 에서
λ 2 = λ \lambda^2 = \lambda λ 2 = λ 를 끌어내는 대수적인 증명을 했다.
이제는 증명이 필요 없다. (27) 의 대각선이 곧 고윳값이고,
그 1 , 1 , 0 1, 1, 0 1 , 1 , 0 은 살렸다, 살렸다, 죽였다 를 적어 놓은 것일 뿐이다.
1 이 몇 개인지는 평면의 차원이고, 0 이 몇 개인지는 법선 방향의 개수다.
5. 기저를 바꾸면 — M − 1 A M M^{-1}AM M − 1 A M 의 정체 ¶ 이제 L28의 유사 행렬로 돌아간다. 거기서 B = M − 1 A M B = M^{-1}AM B = M − 1 A M 을 두고 "같은 변환의 다른
얼굴"이라고 했지만 M M M 이 무엇인지는 말하지 않았다. M M M 은 기저 변환 행렬이다.
새 기저 b 1 , … , b n \vv{b}_1, \dots, \vv{b}_n b 1 , … , b n 을 열에 세운 행렬을 M M M 이라 하자.
어떤 벡터의 새 좌표 가 c \vv{c} c 라는 것은 그 벡터가
c 1 b 1 + ⋯ + c n b n c_1\vv{b}_1 + \dots + c_n\vv{b}_n c 1 b 1 + ⋯ + c n b n 이라는 뜻이고, 이것은 열들의 조합이므로
( 표준 좌표 ) = M ( 새 좌표 ) (\text{표준 좌표}) = M\,(\text{새 좌표}) ( 표준 좌표 ) = M ( 새 좌표 ) (28) 의 식을 뒤집으면 ( 새 좌표 ) = M − 1 ( 표준 좌표 ) (\text{새 좌표}) = M^{-1}(\text{표준 좌표}) ( 새 좌표 ) = M − 1 ( 표준 좌표 ) 다.
이제 새 좌표계에 사는 사람의 입장에서 T T T 를 한 번 적용해 보자. 세 단계를 거친다.
c → M M c → A A M c → M − 1 M − 1 A M c \vv{c}
\ \xrightarrow{\ M\ }\ M\vv{c}
\ \xrightarrow{\ A\ }\ AM\vv{c}
\ \xrightarrow{\ M^{-1}\ }\ M^{-1}AM\vv{c} c M M c A A M c M − 1 M − 1 A M c 첫 단계는 “새 좌표를 표준 좌표로 번역”, 둘째는 “표준 좌표계에서 변환 실행”, 셋째는
"결과를 다시 새 좌표로 번역"이다. 셋을 합친 것이 새 기저에서 본 T T T 의 행렬이다.
B = M − 1 A M B = M^{-1}AM B = M − 1 A M L28에서 유사 행렬끼리 고윳값·대각합·행렬식·랭크가 같았던 이유가 이제 분명하다.
그것들은 변환의 성질이지 좌표계의 성질이 아니기 때문이다. 반면 대칭성은 유사
변환으로 깨졌는데, 대칭이란 “기저가 직교라는 가정 아래에서의” 성질이라 좌표계를 비스듬히
기울이면 사라진다.
대각화의 최종 해석 ¶ 그렇다면 대각화란 무엇인가. S − 1 A S = Λ S^{-1}AS = \Lambda S − 1 A S = Λ 에서 S S S 의 열은 고유벡터였다.
Theorem 1 에 비추어 읽으면 이렇게 된다.
고유벡터를 기저로 고르면 행렬이 대각이 된다.
당연하다. Definition 2 의 정의대로 j j j 번째 열을 구하려면
T ( x j ) T(\vv{x}_j) T ( x j ) 를 같은 고유벡터 기저로 전개해야 한다. 그런데 전개할 것도 없다.
T ( x j ) = λ j x j = 0 ⋅ x 1 + ⋯ + λ j ⋅ x j + ⋯ + 0 ⋅ x n T(\vv{x}_j) = \lambda_j \vv{x}_j
= 0\cdot\vv{x}_1 + \dots + \lambda_j\cdot\vv{x}_j + \dots + 0\cdot\vv{x}_n T ( x j ) = λ j x j = 0 ⋅ x 1 + ⋯ + λ j ⋅ x j + ⋯ + 0 ⋅ x n (31) 의 계수를 세로로 세우면 j j j 번째 자리에만 λ j \lambda_j λ j 가 있고
나머지는 전부 0 인 열이다.
[ T ( x j ) ] x = λ j e j \bigl[\,T(\vv{x}_j)\,\bigr]_{\vv{x}} = \lambda_j \vv{e}_j [ T ( x j ) ] x = λ j e j 그런 열이 n n n 개 모이면 대각행렬 Λ \Lambda Λ 다. 대각화는 계산이 아니라 정의였다.
다만, 좋은 기저가 늘 있는 것은 아니다 ¶ 여기서 한 걸음 더 나가면 이런 말이 하고 싶어진다. “어려운 행렬이란 없다. 나쁜 기저가
있을 뿐이다.” 절반은 맞고 절반은 틀리다.
9 0 ∘ 90^\circ 9 0 ∘ 회전을 보자. 어떤 실수 기저를 골라도 이 변환의 행렬은 대각이 되지 않는다.
대각이 되려면 T ( x ) = λ x T(\vv{x}) = \lambda\vv{x} T ( x ) = λ x 인 실수 방향이 있어야 하는데, 9 0 ∘ 90^\circ 9 0 ∘ 회전은
모든 벡터를 자기 자신과 수직인 곳으로 보낸다. 자기 방향을 지키는 벡터가 하나도 없다.
L28의 결함 행렬도 마찬가지다. 고유벡터가 n n n 개 없으면 어떤 기저로도 대각이 안 되고
조르당 형이 한계다.
6. 세 가지 분해가 사실은 하나의 질문이었다 ¶ 이 관점을 손에 쥐고 지난 강의들을 돌아보면, 흩어져 있던 이야기들이 한 줄에 꿰인다.
모두 어떤 좌표계를 쓸 것인가 라는 하나의 질문이었다.
들어가는 쪽 기저 나오는 쪽 기저 얻는 모양 대가 대각화 (L22) 고유벡터 같은 고유벡터Λ \Lambda Λ 직교를 포기, 없을 수도 스펙트럼 정리 (L25) 고유벡터(직교) 같은 것Λ \Lambda Λ 대칭행렬에만 유사 변환 (L28) 아무 기저 같은 것뭐든 얻는 것도 없음 SVD (L29) v \vv{v} v (직교)u \vv{u} u (직교)Σ \Sigma Σ 기저 두 벌
Figure 6: A = ( 3 1 0 2 ) A = \begin{pmatrix}3 & 1 \\ 0 & 2\end{pmatrix} A = ( 3 0 1 2 ) 하나를 두 방식으로 본 것이다.
왼쪽은 고유기저 — 기저가 한 벌이라 편하지만 두 방향이 4 5 ∘ 45^\circ 4 5 ∘ 로 기울어 있다.
오른쪽은 SVD 기저 — 들어가는 쪽도 나오는 쪽도 직각이지만 기저가 두 벌이다.
이 표를 세로로 읽으면 L29에서 남겨 둔 물음의 답이 나온다.
왜 SVD에만 조건이 없었는가.
두 요구를 나란히 적어 보면 차이가 한눈에 들어온다.
A S = S Λ (대각화) , A V = U Σ (SVD) AS = S\Lambda
\qquad\text{(대각화)},
\qquad\qquad
AV = U\Sigma
\qquad\text{(SVD)} A S = S Λ ( 대각화 ) , A V = U Σ (SVD) (33) 의 두 식은 모양이 똑같다. “A A A 곱하기 기저행렬 = 기저행렬 곱하기
대각행렬”. 다른 것은 오른쪽에 서 있는 기저행렬이 왼쪽 것과 같아야 하느냐뿐이다.
대각화는 그 둘이 같기를 요구한다. 그래서 A x = λ x A\vv{x} = \lambda\vv{x} A x = λ x 를 만족하는
x \vv{x} x 가 n n n 개 있어야 하고, 없으면 실패한다. m ≠ n m \neq n m = n 이면 A S AS A S 와 S Λ S\Lambda S Λ 의
크기부터 안 맞아 시도조차 못 한다.
SVD는 그 제약을 풀었다. 기저를 두 벌 쓸 자유를 얻는 대신 요구를 낮춘 것이다.
그러자 직사각이든 랭크가 모자라든 전부 통과했다.
7. 자주 하는 오해 ¶ ① 행렬과 선형변환은 같은 것이다.
아니다. 기저를 정해야 비로소 대응이 생긴다. 기저가 다르면 같은 변환이 다른 행렬로
적히고, 기저를 안 정하면 행렬 자체가 없다. Figure 1 의 그림이 그 이야기다.
거꾸로도 성립한다. 행렬 하나를 놓고 "이 변환은 무엇인가"라고 물으면
어떤 기저에서냐 고 되물어야 한다.
② 평행이동은 선형변환이다.
아니다. T ( 0 ) ≠ 0 T(\vv{0}) \neq \vv{0} T ( 0 ) = 0 이라 (3) 의 조건에서 바로 걸린다.
평행이동까지 포함하는 것은 아핀변환 이라는 별도의 이름을 가진다. 그래픽스가 동차좌표로
차원을 하나 올리는 것은 아핀변환을 한 차원 위의 선형변환으로 바꿔 치기 위해서다.
③ 행렬의 i i i 번째 행이 기저벡터가 가는 곳이다.
아니다. 열 이다. 이 시리즈는 L1부터 일관되게 열 기준이다. 벡터를 세로로 세우고
A x A\vv{x} A x 를 열들의 조합으로 읽는다. 행 기준으로 쓰는 책도 있는데 그 경우 모든 행렬이
전치되어 나타나므로 섞어 읽으면 반드시 틀린다.
④ 함수를 벡터라고 부르는 것은 비유다.
아니다. 문자 그대로다. 벡터공간의 조건은 "더할 수 있고 상수배할 수 있고 영원소가
있다"뿐이고 다항식과 함수는 전부 만족한다(L11). 이번 강의에서 d / d x d/dx d / d x 의 행렬을 만들
수 있었던 것이 그 증거다. 행렬은 화살표에만 붙는 것이 아니다.
⑤ 좋은 기저를 고르면 어떤 행렬이든 대각이 된다.
아니다. 9 0 ∘ 90^\circ 9 0 ∘ 회전은 어떤 실수 기저에서도 대각이 되지 않고, 결함 행렬도 그렇다.
좌표계를 바꾸어 감출 수 있는 것과 없는 것이 있다.
마치며... ¶ 이번 강의에서는 한 층 위로 올라가 행렬을 다시 보았다.
선형변환의 정의에는 좌표가 하나도 없다 . 두 줄이 전부다.
선형이라는 두 줄 덕분에, 변환은 기저벡터 n n n 개의 행선지만으로 완전히 결정 된다.
그 행선지를 적어 둔 표가 행렬이다. j j j 번째 열 = j j j 번째 기저벡터가 가는 곳.
행렬 곱셈의 정의도, 합성이 곱이 되는 것도 이 정의에서 저절로 따라 나온다.
미분과 적분도 행렬이 되고, 그 두 행렬은 한쪽으로만 역 이 된다.
투영의 고윳값 1 , 1 , 0 1,1,0 1 , 1 , 0 은 "살렸다, 살렸다, 죽였다"였다.
M − 1 A M M^{-1}AM M − 1 A M 의 M M M 은 기저 변환 행렬 이고, 대각화는 좌표계 선택 문제였다.
그리고 지금까지의 여러 이야기가 하나로 묶였다. 대각화는 고유벡터를 기저로 고른 것이고,
유사 행렬은 같은 변환을 다른 기저에서 본 것이며, 특이값 분해는 들어가는 쪽과 나오는
쪽에 각각 좋은 기저를 고른 것이다. 전부 하나의 질문이었다.
그렇다면 자연스럽게 이런 물음이 따라온다.
기저를 잘 고르면 무슨 이득이 있는가? 계산이 쉬워지는 것 말고 또 무엇이 있을까.
다음 강의에서 뜻밖의 답을 본다. 압축이다. 여러분이 찍은 사진이 저장될 때 실제로
벌어지는 일은, 다름 아닌 기저 변환이다.
이번 강의의 내용을 파이썬으로 확인해 보려면 L30 실습 노트북 으로
넘어가면 된다. 미분과 적분을 행렬로 만들어 한쪽으로만 역이 되는 것을 확인하고,
같은 변환을 여러 기저에서 적어 보며, 투영이 정말 d i a g ( 1 , 1 , 0 ) \mathrm{diag}(1,1,0) diag ( 1 , 1 , 0 ) 이 되는지
직접 만들어 볼 수 있다.