고윳값 분해(eigen-value decomposition)

※ 시각화와 이해의 편의를 도모하기 위해 벡터와 행렬이 정의되는 체(field)는 실수(real number)로 한정함.


원래의 선형변환

EVD를 이용해 세 개의 단계로 분해한 선형변환

EVD는 기존의 선형변환을 '돌리기','늘리기','돌리기'의 세 과정으로 분해해서 생각할 수 있게 해준다.

Prerequisites

해당 post를 잘 이해하기 위해선 아래의 내용에 대해 알고 오시는 것이 좋습니다.

배경 지식

행렬은 벡터들의 모음

개의 차원 벡터 이 있다고 생각해보자.

그러면 우리는 이 개의 벡터들을 모아 차원의 행렬을 구성할 수 있다.


식(1)

행렬의 각 열의 상수를 인수분해 하는 방법

어떤 차원 행렬 가 다음과 같이 구성되어 있다고 생각해보자.


식(2)

여기서 은 임의의 실수이다.

그렇다면 식 (2)의 행렬 는 다음과 같이 인수분해 할 수 있다.


식(3)

이 곱셈이 어렵다고 생각하지 말고, 왼쪽에 곱해지는 행렬의 각각의 벡터를 숫자처럼 생각하고 연산하면 쉽게 식 (3)이 옳다는 것을 알 수 있다.

고윳값 분해

임의의 행렬 에 대해 여러개의 고윳값과 고유벡터를 얻었다고 해보자.

다시 말해, 아래의 식을 만족하는 고윳값과 고유벡터 개 씩을 획득할 수 있다.


식(4)

그러면 우리는 고유벡터들을 모아둔 행렬 를 아래와 같이 생각할 수 있다.


식(5)

이 때, 행렬 와 행렬 의 관계를 식 (4)를 이용해 한꺼번에 표현하면 다음과 같다.


식(6)

또 고윳값들을 대각성분에 모아둔 행렬 을 아래와 같이 생각해본다면,


식(7)

식 (2)와 식 (3)에서 본 관계를 이용해 식 (6)을 아래와 같이 쓸 수 있다.


식(8)

만약 모든 고유벡터들이 선형독립이라면 식 (8)로부터 아래와 같이 행렬 를 쓸 수 있다.


식(9)

고윳값 분해의 기하학적 의미

고윳값 분해는 기하학적으로 행렬로 표현되는 선형변환은 ‘돌리고’, ‘늘리고’, ‘돌리고’ 하는 세 가지의 과정을 통해 분해할 수 있음을 보여준다.

고윳값 분해의 기하학적 의미를 이해하기 위해 아래와 같은 행렬 A를 고윳값 분해 해보도록 하자.

우선 행렬 의 선형변환을 시각화하면 아래와 같다.


애니메이션 1. 행렬 A의 선형변환

위 행렬의 고윳값 고유벡터는 아래와 같다.

행렬 의 고윳값과 고유벡터를 이용해 식 (10)과 같이 행렬 를 분해하기 위한 행렬들을 써보면 아래와 같다.

그리고 행렬 는 아래와 같이 쪼개서 생각해줄 수 있는 것이다.

아래는 고유벡터로 구성된 행렬 의 선형 변환이다.

자세히 보면 행렬 의 선형변환은 회전과 유사한 형태를 보인다.

왜냐하면 에 들어간 열벡터들은 모두 고유벡터인데 고유벡터는 방향만을 표시하므로 그 길이는 1이 되기 때문이다.

따라서, 원점에서부터 시작하는 길이가 1인 벡터들이 두 개가 서로 다른 방향을 보여주고 있으니 회전 변환과 유사한 역할을 할 수 있다.

다만 변환 후의 기저 벡터의 길이가 모두 같은 것은 아니라는 점과 변환 시 뒤집어 지면서 변환 할 가능성이 있기 때문에 완전히 회전 변환과 같다고는 할 수 없다.

또, V의 변환 후 기저벡터들의 각도가 90도를 이루지 않는다는 점도 주의해야 할 점이다.


애니메이션 2. 선형변환 V

아래는 고윳값을 대각성분에 구성한 행렬 의 선형변환이다. 대각성분만 존재하기 때문에 위 아래 혹은 양 옆으로 늘어나거나 줄어드는 변환만 보이는 것을 알 수 있다.


애니메이션 3. 선형변환

아래는 고유벡터로 구성된 행렬 의 역행렬 의 선형 변환이다.

의 선형변환도 와 비슷하게 회전과 유사한 형태를 보인다. 다만 와의 회전 방향과는 반대인 것을 알 수 있다.


애니메이션 4. 선형변환

, , 의 각각의 선형 변환을 차례대로 적용하면 원래의 선형 변환 와 같은 것을 알 수 있다.

아래의 Applet에서 세 개의 슬라이드는 각각 , , 에 해당한다.


애니메이션 5. 선형변환 , , 을 독립적으로 적용 시켜보자.

대칭 행렬의 고윳값 분해

대칭 행렬의 고윳값 분해는 일반 정방 행렬의 고윳값 분해와 비교했을 때 약간 특이한 점이 있다. 대칭 행렬의 경우 고유벡터가 서로 직교하는 성질을 보이기 때문이다.

대칭 행렬은 아래와 같은 성질을 만족하는 행렬이다.

만약, 행렬 가 식 (9)에서와 같이 고윳값 분해할 수 있다면 아래의 내용이 성립한다.

여기서, 는 대각행렬이므로 이고, 이므로 식 (12)는 다음과 같이 쓸 수도 있다.

따라서, 대칭 행렬의 고유벡터를 모아둔 행렬 는 직교행렬이다. 다시 말해 다음이 성립한다.

이고,

이다.

따라서, 대칭행렬은 아래와 같이 고윳값 분해할 수 있다.

일반적으로 대칭행렬의 고윳값을 모아둔 행렬은 대신에 로 종종 쓴다.

즉, 가 대칭행렬인 경우

로 행렬을 분해할 수 있다.

대칭 행렬 고윳값 분해의 기하학적 의미

대칭 행렬 고윳값 분해의 기하학적 의미를 이해하기 위해 아래와 같은 행렬 A를 고윳값 분해 해보도록 하자.

우선 행렬 의 선형변환을 시각화하면 아래와 같다.


애니메이션 6. 행렬 A의 선형변환

위 행렬의 고윳값 고유벡터는 아래와 같다.

행렬 의 고윳값과 고유벡터를 이용해 식 (9)와 같이 행렬 를 분해하기 위한 행렬들을 써보면 아래와 같다.

고윳값, 고유벡터 관점에서 봤을 때 일반적인 정방 행렬과 대칭 행렬의 차이는 고유벡터들이 서로 직교한다는 것이다.

따라서, 행렬 에 의해서 선형 변환되었을 때는 선형 변환 후에도 여전히 기저 벡터들의 길이는 1이면서 동시에 직교하기 때문에 벡터 공간을 회전 시켜놓은 것 같은 결과를 확인할 수 있다.

(여기서 ‘회전 시켜 놓은 것 같은’이라고 말하는 것은 행렬 의 열벡터의 위치에 따라 기저벡터가 뒤집혀서 선형변환 될 수도 있기 때문이다.)

따라서, 대칭 행렬의 고유벡터를 모아 얻은 행렬 는 회전행렬과 유사한 의미를 갖는다.

, , 의 선형 변환을 차례대로 적용하면 원래의 선형 변환 와 같은 것을 알 수 있다.

아래의 Applet에서 세 개의 슬라이드는 각각 , , 에 해당한다.


애니메이션 7. 선형변환 , , 을 독립적으로 적용 시켜보자.