고유값(Eigenvalue)과 고유벡터(Eigenvector)를 구하는 알고리즘을 생각해 보자. 문헌이나 인터넷을 검색해 보면 여러가지 방법론이 나온다. 여기서는 기본 아이디어에 대해 생각해 보고 그것을 시각적으로 보여주고자 한다.
선형 변환에 관한 글에서 스칼라, 벡터, 행렬 및 고유값에 대한 설명을 우선 참고하기 바란다. 핵심만 정리하면 다음과 같다.
선형변환 A(정사각 행렬)에 의해 변환 결과가 자기 자신의 상수배가 되는 O이 아닌 벡터를 고유벡터라고 하고, 그 상수배를 고유값()이라고 한다. 이 정의를 정의를 수식으로 표현하면 다음과 같다.
일반적으로 고유벡터와 고유값은 행렬 A의 차원의 개수(n)만큼 나온다. 고유값의 절대값이 큰것부터 순차적으로 번호를 매기고, 각 고유값에 해당하는 고유벡터도 동일한 순서대로 나열한다고 하자. 참고로, 고유벡터끼리는 서로 직교(Orthogonal)하므로 내적이 0이다. 즉 서로 다른 고유벡터끼리의 곱은 0이고 같은 것끼리는 1이다.
n차원의 임의의 벡터 x는 n개의 고유벡터의 합으로 아래와 값이 나타낼 수 있다.
따라서 Ax는 아래와 같이 전개가 가능하다.
이제 A를 k번 연속해서 곱해 보자.
첫번째 고유값의 절대값이 항상 다른 고유값의 절대값보다 크다고 정의했으므로, k를 무한대로 하면, 위의 수식에서 괄호의 첫번째 항만 제외하고 다른 항들은 모두 0으로 수렴한다.
위 수식은 x1만 영이 아니면 성립하고, 특정 벡터에 행렬을 곱하는 것을 쉽게 계산이 가능하므로 아래와 같은 반복(Iteration) 알고리즘을 이용하면 절대값이 가장 큰 고유값과 그에 해당하는 고유벡터를 구할 수 있다.
구하고자 하는 행렬 A(2x2)을 입력하시오.
쿨백-라이블러 발산 (KL Divergence) (0) | 2018.12.04 |
---|---|
정보 엔트로피 (Information Entropy) (8) | 2018.12.04 |
SVD (특이값 분해) (0) | 2018.11.18 |
지수의 확장 (1) | 2018.11.11 |
제타 함수란? (0) | 2018.11.05 |