※ 시각화와 이해의 편의를 도모하기 위해 벡터와 행렬이 정의되는 체(field)는 실수(real number)로 한정함.
원래의 선형변환 AA
EVD를 이용해 세 개의 단계로 분해한 선형변환 AA
EVD는 기존의 선형변환을 '돌리기','늘리기','돌리기'의 세 과정으로 분해해서 생각할 수 있게 해준다.
Prerequisites
해당 post를 잘 이해하기 위해선 아래의 내용에 대해 알고 오시는 것이 좋습니다.
배경 지식
행렬은 벡터들의 모음
nn개의 nn차원 벡터 ai∈Rn×1 for i=1,2,⋯,nai∈Rn×1 for i=1,2,⋯,n이 있다고 생각해보자.
그러면 우리는 이 nn개의 벡터들을 모아 n×nn×n 차원의 행렬을 구성할 수 있다.
A=[|| |a1a2⋯an|| |]∈Rn×n행렬의 각 열의 상수를 인수분해 하는 방법
어떤 n×n 차원 행렬 A가 다음과 같이 구성되어 있다고 생각해보자.
A=[|| |λ1a1λ2a2⋯λnan|| |]∈Rn×n여기서 λi for i=1,2,⋯,n 은 임의의 실수이다.
그렇다면 식 (2)의 행렬 A는 다음과 같이 인수분해 할 수 있다.
A=[|| |a1a2⋯an|| |][λ10⋯00λ200 ⋱ 00⋯λn]이 곱셈이 어렵다고 생각하지 말고, 왼쪽에 곱해지는 행렬의 각각의 벡터를 숫자처럼 생각하고 연산하면 쉽게 식 (3)이 옳다는 것을 알 수 있다.
고윳값 분해
임의의 n×n 행렬 A에 대해 여러개의 고윳값과 고유벡터를 얻었다고 해보자.
다시 말해, 아래의 식을 만족하는 고윳값과 고유벡터 n개 씩을 획득할 수 있다.
Avi=λivi for i=1,2,⋯,n그러면 우리는 고유벡터들을 모아둔 행렬 V∈Rn×n를 아래와 같이 생각할 수 있다.
V=[|| |v1v2⋯vn|| |]이 때, 행렬 A와 행렬 V의 관계를 식 (4)를 이용해 한꺼번에 표현하면 다음과 같다.
AV=[|| |λ1v1λ2v2⋯λnvn|| |]또 고윳값들을 대각성분에 모아둔 행렬 Λ∈Rn×n을 아래와 같이 생각해본다면,
Λ=[λ10⋯00λ200 ⋱ 00⋯λn]식 (2)와 식 (3)에서 본 관계를 이용해 식 (6)을 아래와 같이 쓸 수 있다.
식(6)⇒AV=VΛ만약 모든 고유벡터들이 선형독립이라면 식 (8)로부터 아래와 같이 행렬 A를 쓸 수 있다.
A=VΛV−1고윳값 분해의 기하학적 의미
고윳값 분해는 기하학적으로 행렬로 표현되는 선형변환은 ‘돌리고’, ‘늘리고’, ‘돌리고’ 하는 세 가지의 과정을 통해 분해할 수 있음을 보여준다.
고윳값 분해의 기하학적 의미를 이해하기 위해 아래와 같은 행렬 A를 고윳값 분해 해보도록 하자.
A=[1.2−0.5−1.51.7]우선 행렬 A의 선형변환을 시각화하면 아래와 같다.
애니메이션 1. 행렬 A의 선형변환
위 행렬의 고윳값 고유벡터는 아래와 같다.
λ=0.5486 or 2.3514 →v1=[0.60890.7933] →v2=[−0.39830.9172]행렬 A의 고윳값과 고유벡터를 이용해 식 (10)과 같이 행렬 A를 분해하기 위한 행렬들을 써보면 아래와 같다.
V=[0.6089−0.39830.79330.9172] Λ=[0.5486002.3514] V−1=[1.04890.4555−0.90720.6963]그리고 행렬 A는 아래와 같이 쪼개서 생각해줄 수 있는 것이다.
A=VΛV−1 ⇒[1.2−0.5−1.51.7]=[0.6089−0.39830.79330.9172][0.5486002.3514][1.04890.4555−0.90720.6963]아래는 고유벡터로 구성된 행렬 V의 선형 변환이다.
자세히 보면 행렬 V의 선형변환은 회전과 유사한 형태를 보인다.
왜냐하면 V에 들어간 열벡터들은 모두 고유벡터인데 고유벡터는 방향만을 표시하므로 그 길이는 1이 되기 때문이다.
따라서, 원점에서부터 시작하는 길이가 1인 벡터들이 두 개가 서로 다른 방향을 보여주고 있으니 회전 변환과 유사한 역할을 할 수 있다.
다만 변환 후의 기저 벡터의 길이가 모두 같은 것은 아니라는 점과 변환 시 뒤집어 지면서 변환 할 가능성이 있기 때문에 완전히 회전 변환과 같다고는 할 수 없다.
또, V의 변환 후 기저벡터들의 각도가 90도를 이루지 않는다는 점도 주의해야 할 점이다.
V=[0.6089−0.39830.79330.9172]
애니메이션 2. 선형변환 V
아래는 고윳값을 대각성분에 구성한 행렬 Λ의 선형변환이다. 대각성분만 존재하기 때문에 위 아래 혹은 양 옆으로 늘어나거나 줄어드는 변환만 보이는 것을 알 수 있다.
Λ=[0.5486002.3514]
애니메이션 3. 선형변환 Λ
아래는 고유벡터로 구성된 행렬 V의 역행렬 V−1의 선형 변환이다.
V−1의 선형변환도 V와 비슷하게 회전과 유사한 형태를 보인다. 다만 V와의 회전 방향과는 반대인 것을 알 수 있다.
V−1=[1.04890.4555−0.90720.6963]
애니메이션 4. 선형변환 V−1
V−1, Λ, V의 각각의 선형 변환을 차례대로 적용하면 원래의 선형 변환 A와 같은 것을 알 수 있다.
아래의 Applet에서 세 개의 슬라이드는 각각 V, Λ, V−1에 해당한다.
애니메이션 5. 선형변환 V, Λ, V−1을 독립적으로 적용 시켜보자.
대칭 행렬의 고윳값 분해
대칭 행렬의 고윳값 분해는 일반 정방 행렬의 고윳값 분해와 비교했을 때 약간 특이한 점이 있다. 대칭 행렬의 경우 고유벡터가 서로 직교하는 성질을 보이기 때문이다.
대칭 행렬은 아래와 같은 성질을 만족하는 행렬이다.
A=AT만약, 행렬 A가 식 (9)에서와 같이 고윳값 분해할 수 있다면 아래의 내용이 성립한다.
A=VΛV−1=AT=(VΛV−1)T=(V−1)TΛTVT여기서, Λ는 대각행렬이므로 ΛT=Λ이고, (V−1)T=(VT)−1이므로 식 (12)는 다음과 같이 쓸 수도 있다.
VΛV−1=(VT)−1ΛVT따라서, 대칭 행렬의 고유벡터를 모아둔 행렬 V는 직교행렬이다. 다시 말해 다음이 성립한다.
VT=V−1이고,
VVT=VTV=I이다.
따라서, 대칭행렬은 아래와 같이 고윳값 분해할 수 있다.
A=VΛVT일반적으로 대칭행렬의 고윳값을 모아둔 행렬은 V 대신에 Q로 종종 쓴다.
즉, A가 대칭행렬인 경우
A=QΛQT로 행렬을 분해할 수 있다.
대칭 행렬 고윳값 분해의 기하학적 의미
대칭 행렬 고윳값 분해의 기하학적 의미를 이해하기 위해 아래와 같은 행렬 A를 고윳값 분해 해보도록 하자.
A=[2112]우선 행렬 A의 선형변환을 시각화하면 아래와 같다.
애니메이션 6. 행렬 A의 선형변환
위 행렬의 고윳값 고유벡터는 아래와 같다.
λ=1 or 3 →q1=[0.7071−0.7071] →q2=[0.70710.7071]행렬 A의 고윳값과 고유벡터를 이용해 식 (9)와 같이 행렬 A를 분해하기 위한 행렬들을 써보면 아래와 같다.
Q=[0.70710.7071−0.70710.7071] Λ=[1003] QT=[0.7071−0.70710.70710.7071]고윳값, 고유벡터 관점에서 봤을 때 일반적인 정방 행렬과 대칭 행렬의 차이는 고유벡터들이 서로 직교한다는 것이다.
따라서, 행렬 Q에 의해서 선형 변환되었을 때는 선형 변환 후에도 여전히 기저 벡터들의 길이는 1이면서 동시에 직교하기 때문에 벡터 공간을 회전 시켜놓은 것 같은 결과를 확인할 수 있다.
(여기서 ‘회전 시켜 놓은 것 같은’이라고 말하는 것은 행렬 Q의 열벡터의 위치에 따라 기저벡터가 뒤집혀서 선형변환 될 수도 있기 때문이다.)
따라서, 대칭 행렬의 고유벡터를 모아 얻은 행렬 Q는 회전행렬과 유사한 의미를 갖는다.
QT, Λ, Q의 선형 변환을 차례대로 적용하면 원래의 선형 변환 A와 같은 것을 알 수 있다.
아래의 Applet에서 세 개의 슬라이드는 각각 Q, Λ, QT에 해당한다.
애니메이션 7. 선형변환 Q, Λ, QT을 독립적으로 적용 시켜보자.