이번 시간에 다룰 내용은 고유값(eigenvalues)고유벡터(eigenvectors)이다. 고유값과 고유벡터에 대한 관련 내용도 꽤 방대하기 때문에 몇 개로 나누어서 다루도록 하겠다. 고유값과 고유벡터에 대한 중요성이나 필요성은 이 포스팅을 찾아온 분들이라면 굳이 설명하지 않아도 이미 알고 있을 것이다. 

임의의 정방행렬(square matrix) A에 대한 특별한 숫자가 고유값(eigenvalue)이고, A에 대한 특별한 벡터가 고유벡터(eigenvector)이다. 이들은 행렬 A에 대한 많은 정보를 내포하고 있으며, 이들은 파악하는 것은 A라는 시스템을 파악하는 데에 있어 굉장히 중요하다. 이번 포스팅에서는 이들이 의미하는 것이 무엇인지 알아보고, 이후 포스팅에선 이들을 어디에 어떻게 응용할 수 있는지를 다루도록 하겠다. 

 

 

1. 고유값(Eigenvalue)과 고유 벡터(Eigenvector)

 

- What is the eigenvalue and eigenvector?

 

임의의 정방행렬(square matrix) A가 있다고 하자. 이 행렬 A가 하는 역할은 무엇일까? A는 임의의 벡터 x에 함수(function)처럼 작용한다. 즉 어떤 벡터 x에 곱해져서 Ax라는 결과를 도출시킨다. 미적분학(calculus)을 통해 설명하자면 x는 입력 파라미터 값 x에 해당하고, Ax는 입력 파라미터를 적용한 어떤 함수의 결과값 f(x)에 해당한다. 선형 대수(Linear Algebra)에서는 x, f(x)보다 높은 차원의 식 x와 Ax를 다룬다. 

 

대부분의 경우 행렬 A에 의해 변환되는 벡터 x, 즉 Ax는 원래의 x와는 다른 방향으로 변환된다. 그러나 수많은 벡터 중에 어떤 벡터는 A에 의해 변환된 결과 벡터, 즉 Ax가 변환되기 이전의 벡터인 x평행(parallel)한 벡터들이 존재한다. 이렇게 A에 의해 변환 전과 변환 후가 평행한 벡터들이 우리가 관심을 가져야 하는 벡터들이고, 이것이 곧 고유벡터(eigenvector)이다. 고유벡터는 아래와 같이 정의할 수 있다.

 

 

그렇다면 식 (1)의 평행(parallel)하다 라는 것은 정확히 어떤 의미일까? 이는 아래의 방정식으로 정의할 수 있다. 

 




 

식 (2)는 수업시간에 고유값과 고유 벡터를 배울 때 많이 봤던 식일 것이다. 고유값, 고유벡터를 정의하는 가장 중요하고도 시작이 되는 식이며, 이를 이해하는 것은 매우 중요하다. 너무 중요하기 때문에 노란색 상자 안에 표시하였다. 식 (2)를 말로 풀어서 설명해보면 어떤 정방행렬 A는 임의의 벡터 x에 곱해져서 x의 위치나 방향을 변환시키는 역할을 한다. 그런데 수많은 벡터들 중 어떤 특정 벡터들은 A에 곱해져서 그 위치나 방향이 바뀌어도 원래 자기 자신과 동일한, 혹은 평행한 방향을 갖는다. 이러한 벡터들을 고유벡터(eigenvectors)라 한다. 이때 변환 전의 x와 A에 곱해져서 변환된 x의 크기는 다를 수 있으며, 그 크기는 특정 상수를 곱한 만큼의 차이가 존재할 뿐이다. 여기서 크기를 나타내는 특정 상수는 람다(λlambda)로 표현되었으며, 람다가 바로 고유값(eigenvalue)이다

 

정리하자면 고유벡터(eigenvector)라는 것은 어떤 선형시스템 방정식(Linear system equation) A에 의해 변환되는 수 많은 벡터들 중에 곱하기 전과 곱한 후의 벡터 방향이 똑같은 벡터이다. 즉 A가 어떤 짓을 하던간에 방향에 영향을 받지 않는 벡터를 의미한다. 고유벡터는 방향은 변하지 않지만, 원래의 벡터와 A에 의해 변환된 벡터의 크기가 어떤 상수배 만큼 다르다. 여기서 상수는 식 (2)에서 람다(lambda)를 의미한다. A는 고정된 것이고, 두 개의 미지수가 x람다(lambda)이다. 결국 식 (2)를 만족시키는 벡터 x들이 고유벡터(eigenvector)가 된다. 곱해지는 모든 벡터 x들을 변화시키지만, 변하는 와중에 변하지 않는 성분이 존재하기 마련이고, 선형시스템 A의 그 변하지 않는 성분, 혹은 속성이 고유값(eigenvalues)과 고유벡터(eigenvectors)라는 형태로 표현된 것이다

 

일단 말로 설명을 했지만 잘 이해가 가지 않을 수 있다. 그림을 통해 이해를 해보자. 우선 아래의 2x2크기의 선형시스템 방정식(Linear system equation) A를 보자. 

 

 

앞서 설명했던 것처럼 행렬 A를 어떤 함수 f(x)라고 생각해보자. 이 함수 f(x)의 기능은 x를 입력 받아 이를 변형시키는 역할을 한다. 즉 함수 역할을 하는 행렬 A에 어떤 파라미터값 x를 곱하면 이 x를 A의 특성에 맞춰 변형시켜 x'(x prime)이라는 새로운 벡터를 만들어내는 것이다. 나중에 따로 다루겠지만, 이를 선형변환(Linear Transformation)이라 한다. 실제로 x가 어떻게 변하는지 직접 살펴보자. 아래 그림은 A에 x=[1 1]T를 곱한 것이다. 

 

 

Fig. 1 행렬 A를 이용한 x의 변환

 

 

Fig. 1에서 원래의 벡터 x는 파란색 화살표로 표현되었으며, A에 곱해져서 변환된 벡터는 하늘색 점선 벡터로 표현되었다. 원래의 벡터 좌표 x=[1 1]이 A에 곱해져서 Ax=[3 0]이 되었다. 임의의 숫자를 무작위로 사용하다보니 식 (3)의 A의 벡터는 일반적이지 않은 복잡한 변환이 되었다. A의 변환을 간단히 설명하자면 공간을 양손으로 잡고 좌우로 잡아당기면서 아래/위로 뒤집은 방향으로 변환을 시킨다. 그러나 이것은 지금 당장 중요한 것이 아니기 때문에 일단 변환 자체에 관한 내용은 넘어가도록 하자. 

 

 

x=[1 1] 이외에도 다른 수많은 벡터들을 A에 곱해도 Fig. 1에 나타난 것과 같이 원래의 벡터방향과는 다른 쪽으로 변환이 이루어질 것이다. 그러나 그 수많은 벡터들 가운데 어떤 벡터들은 A에 곱해도 그 방향이 변하지 않거나 원래 자기 자신과 평행한 벡터들이 있다. 이러한 벡터들이 바로 그 행렬 A의 고유벡터(eigenvector)이다. 아래 그림은 식 (3)의 행렬 A에 대한 고유벡터를 나타낸다. 

 

 

Fig. 2 행렬 A의 고유벡터

 

 

Fig. 2는 식 (3)의 행렬 A의 고유벡터(eigenvector)를 그래프로 표현한 것이다. 일반적으로 nxn크기의 행렬은 n개의 고유벡터를 갖는다. A는 2x2크기이기 때문에 2개의 고유벡터를 가지며, 첫 번째 고유벡터 x1이 빨간색 벡터로, 두 번재 고유벡터 x2가 녹색 벡터로 각각 표현되었다. 실제 계산 방법은 이후에 알아보기로 하고, 일단 고유벡터 x1과 x2의 실제 값은 아래와 같다. 

 

 

미리 말하자면 식(4)는 손으로 계산한 결과이며, 정규화(normalized)되지 않은 상태이다. 고유벡터를 응용함에 있어 방향성분만을 적용하기 위해선 반드시 정규화를 해줘야 한다. MATLAB 등의 소프트웨어의 내장함수를 이용하여 고유벡터를 계산하면 알고리즘에 따라 값이 약간은 바뀔 수 있음을 유의하자. 어쨋든 x1과 x2가 정말로 행렬 A의 고유벡터라면, A에 곱했을 때도 그 방향이 변하지 않아야 한다. 정말로 방향이 변하는지, 변하지 않는지 한 번 곱해보자. 

 

 

식 (5)는 행렬 A와 아까 구한 고유벡터(eigenvector)를 각각 곱하여 분수식을 계산하고 분모의 유리화(rationalization)를 통해 계산한 결과 값을 나타낸다. 벡터의 값만 가지고는 원래의 x들과 방향이 같은지 알기 힘들다. 그래프를 통해 알아보도록 하자. 

 

Fig. 3 고유벡터와 A에 의한 변환 결과

 

 

Fig. 3은 A의 고유벡터 x1과 x2가 실제로 A에 의해 변환된 이후에도 원래 자기 자신과 비교해 봤을 때 방향이 바뀌지 않는지를 시험해보기 위해 그래프를 통해 변환된 고유벡터들을 표현한 것이다. 고유벡터 x1과 A에 의해 변환된 Ax1을 비교해보면 비록 크기가 약간 다르고 반대 방향이긴 하지만, 그 방향의 축은 변하지 않았다. x2와 Ax2는 벡터의 크기는 다르지만 방향은 같은 것을 볼 수 있다. 

 

 

x2는 변환 이후에도 방향이 같기 때문에 그럭저럭 이해할 수 있을 것 같긴 한데, x1의 경우는 방향의 축은 같지만 반대방향이기 때문에 고유벡터가 맞나? 하는 생각이 들 수 있다. 하지만 식 (2)의 정의에 의하면 x1은 분명 고유벡터가 맞다. 다만 우리가 아직 고려하지 않은 한 가지가 있을 뿐이다. 바로 고유값(eigenvalue)이다. 식 (2)를 다시 곱씹어보면 "행렬 A에 의해 변환된 고유벡터 x는 원래의 벡터에 어떤 상수 람다(lambda)를 곱한 것과 같다"이다. 여기서 람다(lambda)가 고유값을 의미하며, Fig. 3의 고유벡터 x1과 x2가 변환된 결과와 완전히 같아지기 위해선 여기에 고유값 람다를 곱해야 한다. x1과 x2에 대한 고유값은 아래와 같다. 

 

 

λ1은 x1에 대한 고유값을, λ2는 x2에 대한 고유값을 각각 의미한다. 여기서 λ1을 가만히 보면 부호가 음수(-)인 것을 볼 수 있으며, 값은 약 1.3정도 된다. 즉 Fig. 3에서 x1에 λ1을 곱하면 원래의 방향에서 반대방향으로 벡터가 바뀌며, 그 크기는 약 1.3배 정도 커진다는 의미다. Fig. 3을 봤을 때 빨간색 고유벡터 x1에 해당 고유값 λ1=-1.3028을 곱해주면 왠지 검은색 벡터 Ax1과 같아질 것만 같다. 마찬가지로 녹색 고유벡터 x2에도 λ2인 2.3028을 곱해주면 자홍색(magenta) Ax2와 같아질 것 같다. 정말로 그런지 그래프를 통해 확인해보자. 

 

Fig. 4 고유값과 고유벡터와 A를 통한 선형변환의 비교

 

 

Fig. 4는 Fig. 3의 고유벡터에 각각의 고유값을 곱하여 A의 선형변환과 비교한 그래프이다. Ax1과 x1는 원래 방향이 반대이고 길이가 달랐지만, λ1을 곱하고나니 같아졌다. λ1x1은 노란색 벡터로 검은색 벡터 위에 표시되었으며, Ax1벡터와 일치하는 것을 볼 수 있다. 마찬가지로 Ax2와 x2의 경우 x2의 길이가 짧았으나, λ2를 곱하고난 뒤 길이가 같아진 것을 볼 수 있다. λ2x2는 청록색(cyan)벡터로 표시되었으며, Ax2의 벡터와 겹쳐서 그려졌다. 따라서 우리는 Fig. 4를 통해 식 (2)로 정의된 고유값과 고유벡터에 대한 정의를 눈으로 확인하고 증명하였다. 아래 그림은 MATLAB 구현 코드이다. 참고로 MATLAB의 고유값/고유벡터 계산 내장 함수 명령어는 아래와 같다. 

 

[V D] = eig(A);

 

eig()함수는 행렬 A를 파라미터로 받아 고유값/고유벡터를 계산한다. V에는 고유벡터가 column vector 형식으로 저장되고, D에는 고유값들이 차례로 대각 원소로 저장된다. 

 

 

 

 

 

- eigenspace

 

Fig. 4에서 고유벡터(eigenvector)들은 고유값(eigenvalue)과 곱해져서 A에 의해 변환된 이후에도 원래 자기 자신과 같음을 보였다. 그렇다면 A의 고유벡터와 고유값은 유일할까? A의 고유벡터는 오직 Fig. 4에서 표시된 x1과 x2만 존재하고, A의 고유값은 오직 λ1과 λ2만 존재하는 걸까? 결론부터 말하자면 고유값은 유일하며, 고유벡터는 무수히 많다. 아래 식을 보자. 

 

 

식 (7.1)은 고유값(eigenvalue)에 임의의 상수를 곱한 식이다. 고유값이 유일하지 않음을 가정하고 만든 식이다. 이 경우 식은 성립할까? 당연히 성립하지 않을 것이다. 한쪽 변에만 임의의 상수를 곱해주면 당연히 식은 성립하지 않는다. 따라서 어떤 행렬 A의 고유값은 유일하다

 

식 (7.2)는 고유벡터(eigenvector)가 무수히 많을 것이라는 가정하에 만든 식이다. 식의 양변의 벡터 x에 각각 임의의 동일한 상수 c를 곱했다. 이 상수값은 양수(+), 혹은 음수(-), 심지어 0이 될 수도 있다. 어떤 상수를 곱해주던간에 양변에 동일한 상수를 곱해줬기 때문에 식은 성립할 것이다. 따라서 행렬 A의 고유벡터는 무수히 많으며, 어떤 하나의 부분 공간(subspace)를 형성한다. 이 고유벡터들이 형성하는 부분공간이 바로 고유공간(eigenspace)이다. 일반적으로 고유공간은 어떤 nxn크기의 행렬에서 동일한 고유값에 대응되는 고유벡터들의 집합 혹은 부분공간으로 정의할 수 있다. Fig. 4를 기준으로 보면 고유값 λ1에 대응되는 고유벡터 x1과, 고유값 λ2에 대응되는 x2를 기준으로 형성되는 Line이 A의 두 개의 부분 공간이 된다. 아래 그림은 고유공간을 나타낸다.

 

Fig. 5 행렬 A의 eigenspace

 

 

따라서 행렬 A의 고유벡터들은 고유공간(eigenspace)상에 존재하는 무수히 많은 벡터들이다. 이 eigenspace들은 λ1, λ2에 각각 대응되는 부분 공간(subspace)이며, 각 eigenspace에 존재하는 고유벡터(eigenvector)들의 선형결합(Linear combination)으로 정의할 수 있다. 결국 nxn 행렬에서 고유공간(eigenspace)의 수는 동일한 고유값에 대응되는 고유벡터들의 집합의 수 만큼 정의될 수 있다.

 

 

- eigenvalues and eigenvectors in null space

 

이미 언급했듯이 선형시스템 A에 곱해지는 대부분의 벡터 x는 고유벡터가 될 수 없으며, 우리는 그 안에서 고유벡터들을 찾아야 한다. 고유벡터는 A에 의해 변환되어도 원래와 동일한 방향성을 가지는 것이라 했는데, 이때 앞서 확인했듯이 그 방향은 반대방향이 될 수도, 혹은 아예 방향이 없을 수도 있다. 따라서 고유값인 람다는 양수(positive), 음수(negative), 0(zero), 심지어 복소수(imaginary number)도 될 수 있다. 

 

여기서 한 가지 짚고 넘어가자면, 고유값(eigenvalues)인 람다가 0인 경우의 고유벡터는 어떤 경우일까? 람다가 0이면 식은 Ax=0가 된다. 즉 이때의 고유벡터(eigenvector)는 영공간(null space)에 존재하는 것이다. 다시 말하면 행렬 A가 특이 행렬(singular matrix)이라는 것이다 (정방행렬에서 null space가 존재하기 위해선 free variable이 존재하는 행렬, 즉 full rank가 아니어야한다. 자세한 것은 Lecture 6, Lecture 7참조). A가 특이 행렬인 경우null space가 존재할 수 있고, A는 일부 영벡터(zero vector)가 아닌 벡터들을 영벡터(zero vector)로 보낼 수 있다. 여기서 그 "일부"에 해당하는 벡터들이 바로 고유벡터가 된다. 이를 식으로 나타내면 아래와 같다. 

 

 

A가 특이 행렬인 경우 null space가 존재하고, 이때의 고유값인 람다는 0이 된다. 이것이 식 (8)이고, 이를 만족하는 x가 바로 고유벡터이다. A가 정방행렬이며 특이행렬이고, 람다가 0일 때의 eigenvector는 null space그 자체가 된다. 

 

null space가 존재하는 행렬의 고유값(eigenvalue)과 고유벡터(eigenvalue)의 예를 한 번 들어보자. 지난 강의 Lecture 15-(2)에서 우리는 투영행렬(projection matrix)을 공부했었는데, 그때 공부했었던 투영행렬에 관한 내용을 다시 가져와보자. 

 

 

위의 문제를 간단히 설명하자면 식 (9.1)은 3차원 공간에서 2차원 평면에 관한 부분 공간(subspace)을 나타내는 선형방정식을 나타내며, 미지수보다 방정식이 더 많은 overdetermined case인 문제이다. 우변의 벡터 b는 A의 column space에 존재하지 않기 때문에 사실상 해(solution)가 존재하지 않는다. 그러나 근사하게나마 해를 구하기 위해 우변의 벡터 b를 column space에 존재하는 수많은 벡터들 중 가장 유사한 벡터로 대체하기 위해서 식 (9.2)와 같이 투영행렬(projection matrix)을 만든 것이다. 이 투영행렬을 통해 식 (9.3)과 같이 벡터 b를 A의 column space로 투영(projection)시킬 수 있다. 아래 그림은 이 문제에 대한 그림을 나타낸다. 

 

Fig. 6 A의 column space와 투영행렬

 

 

Fig. 6에서 파란색 벡터 b는 투영행렬 P에 의해 베이지색으로 표시된 A의 column space로 투영되어 녹색 벡터 p가 된다. a1과 a2벡터는 각각 A의 column1, column2를 의미하며, column space의 기저(basis)역할을 하기 때문에 a1과 a2의 선형결합(Linear combination)을 통해 column space를 형성할 수 있다. 

 

 

우리가 여기서 찾고자 하는 것은 투영행렬 P의 고유값(eigenvalue)과 고유벡터(eigenvector)이다. 이미 알고있겠지만, 식 (9.3)의 투영행렬은 3차원 벡터를 2차원 공간으로 투영시키는 역할을 하기 때문에 3x3크기에 rank는 2이고, 특이 행렬(singular matrix)이다. 따라서 null space가 존재하고 고유값이 0일 것이라는 추측은 해볼 수 있다. 

 

그렇다면 투영행렬 P의 고유값과 고유벡터는 어떤 것들일까? Fig. 6에서 파란색 벡터 b는 투영행렬 P의 고유벡터일까? 고유벡터의 정의는 원래 자신의 방향성과 행렬에 의해 변환된 결과가 변하지 않아야 한다. 그러나 b는 P에 의해 녹색벡터 p로 변환되고, 원래 자신과 완전히 다른 방향이 되기 때문에 P의 고유벡터가 아니다. 

 

이번엔 a1을 P에 곱해보자. 결과는 a1=Pa1과 같이 그대로 자기 자신이 나온다. a2도 곱해보면 a2=Pa2와 같이 그대로 자기 자신이 나온다. 애초에 투영행렬은 투영시키고자 하는 평면에 이미 존재하는 벡터들을 곱했을 때, 아무런 변화도 일으키지 않는다. 이 말은 column space인 평면에 존재하는 모든 벡터들은 전부 투영행렬 P의 고유벡터(eigenvector)가 된다는 의미이다. 즉 평면 자체가 하나의 고유공간(eigenspace)가 되고, 이때의 고유값은 1이 될 것이며, 아래와 같이 정의할 수 있다. 

 

 

 

 

아래 그림은 식 (10)의 투영행렬의 고유벡터들을 실제로 MATLAB을 이용하여 그래프로 표현한 결과이다. 

 

 

 

Fig. 7 투영행렬(projection matrix)의 고유벡터들(eigenvectors)

 

 

이미 언급했듯이 투영행렬 P의 고유벡터(eigenvector)들은 Fig. 7에서 노란색으로 표시된 평면(원래는 무한대로 봐야함)에 존재하는 모든 벡터들이다. 이는 다시말하면 람다(λ)=1에 해당하는 고유공간(eigenspace)라고 할 수 있다. 이들이 정말 고유벡터들이 맞는지 확인하기 위해 그래프를 통해 검증하였다. Fig. 7에서 Pa1=a1, Pa2=a2와 같이 원래 벡터와 변환 결과가 같음을 확인할 수 있다. a1과 a2외에도 평면에 존재하는 다른 벡터도 고유벡터가 될 수 있는지 확인하기 위해 a1과 a2의 선형결합(Linear combination)을 이용하여 변환 결과가 같음을 확인하였다. P(0.5a1+0.4a2)=0.5a1+0.4a2 임을 그래프를 통해 확인하였고, 결과적으로 평면에 존재하는 모든 벡터들이 투영행렬(projection matrix)의 고유벡터(eigenvector)가 됨을 검증하였다. 

 

Fig. 7의 노란색 평면은 식 (9.1)의 A의 column space라고 했지만, 투영행렬이 A를 기반으로 만들어졌고, 또 임의의 3차원 벡터를 노란 평면의 공간으로 보내는 역할을 하기 때문에 이 평면 자체가 투영행렬의 column space라고 할 수 있다. 투영행렬의 크기가 비록 3x3이지만 rank=2이기 때문에 선형 독립(Linearly independent)인 기저벡터(basis vector)가 두 개인 셈이다. 따라서 3차원 공간에서 2차원 평면 부분공간(subspace)을 정의하기 때문에 Fig. 7의 노란평면이 투영행렬 P의 column space가 된다. 

 

 

평면을 정의하기 위해선 독립(independent)인 벡터 2개가 필요한데, 우리는 이미 Fig. 7을 통해 투영행렬의 평면을 정의하였다. 3x3크기의 행렬은 3개의 고유값(eigenvalue)과 고유벡터(eigenvector)를 가지는데, 이미 평면을 정의했기 때문에 결과적으로 3개의 고유벡터중, 2개의 고유벡터를 찾은 셈이다. 그럼 나머지 한 개의 고유벡터는 어디에 있을까? 투영행렬 P는 3x3이지만 rank=2이고 따라서 free variable을 갖는다. 즉 투영행렬이 특이 행렬(singular matrix)이자 null space를 갖는다는 말이다. 투영행렬의 null space는 Px=0과 같이 정의할 수 있고, 식 (8)에 의해서 람다(λ)는 0이 된다. 이 말은 투영행렬의 나머지 고유벡터가 null space에 존재하며, 사실은 null space 그 자체가 된다는 의미이다. 이를 (10.1)에 이어 식으로 정리하면 아래와 같다. 

 

 

그런데 식 (10.2)를 보면 null space에 존재하는 고유벡터들을 평면에 수직(perpendicular)한 벡터들로 정의하였다. 한 가지 의문이 들만한 것은 Fig. 7에선 분명 평면을 column space라고 했는데, column space에 수직한 공간은 Left null space라고 Lecture 10에서 공부하였다. 그렇다면 정의가 틀린 것일까? 그렇지 않다. Lecture 15-(2)에서 투영행렬 P는 전치(transpose)를 시켜도 변하지 않음을 보였다. 따라서 Fig. 7의 노란 평면은 투영행렬의 column space이자 동시에 row space이고, 여기에 수직인 null space가 정의될 수 있는 것이다. 아래 그림은 null space와 나머지 eigenvector를 그래프로 표현한 것이다.

 

 

Fig. 8 Null space에 존재하는 고유벡터와 고유값

 

 

Fig. 8의 노란 평면을 수직으로 관통하는 검은색 Line이 null space이다. 자홍색(magenta) 벡터는 이 null space상에 존재하는 고유벡터(eigenvector)를 나타내며, MATLAB의 내장 함수로 계산한 결과이다. 이 고유벡터에 해당하는 고유값은 0이며, 식 (2)에 따라 고유값인 0을 해당 고유벡터에 곱해주면 우변이 0이 되어 null space를 정의하게 된다. 따라서 Fig. 8에 검은색 Line으로 표현된 null space는 투영행렬 P의 λ=0에 해당하는 eigenspace라고 할 수 있다. 사실 꼭 λ=0를 고려하지 않더라도, 검은색 Line상에 존재하는 어떠한 벡터를 P에 곱해도 결과값은 0이 나오기 때문이다. 실제로도 Fig. 8의 투영행렬 P와 MATLAB의 내장함수로 구한 λ=0에 해당하는 고유벡터 x를 곱해주면 Px=0으로 0이 나온다. 스케일을 고려한 P(cx)=0도 마찬가지이다. 

 

정리하자면 투영행렬(projection matrix)은 해가 존재하지 않는 overdetermined case인 Ax=b의 근사해를 구하기 위해 만들어졌으며, 우변의 벡터 b를 A의 column space로 투영하여 근사해를 구할 수 있도록 해준다. 이때 투영행렬 P는 full rank가 아닌 특이행렬(singular matrix)이고, free variable을 가지기 때문에 null space를 가진다. 투영행렬이 3x3인 경우 3개의 고유값(eigenvalue)과 3개의 고유벡터(eigenvector)를 가지는데, rank의 수 r만큼 column space 혹은 row space에서의 0이 아닌 고유값과 그에 대한 고유벡터를 가지며, n-r만큼 null space상에서 0인 고유값과 그에 대한 고유벡터를 가진다. 아래는 MATLAB구현 코드이다. 

 

 

 

 

 

2. 마치며 (continue)

 

이번 포스팅에선 고유값과 고유벡터에 대한 개념을 위주로 다루었다. 기본적인 식과 예를 통해 고유값과 고유벡터가 공간상에서 어떻게 표현되는지, 어떤 의미를 갖는지를 공부하였다. 고유벡터(eigenvector)와 고유값(eigenvalue)에서 가장 중요한 것은 식 (2)를 이해하는 것이다. 어떤 행렬의 고유값과 고유벡터는 그 행렬의 굉장히 중요한 정보를 담고 있다. 임의의 벡터를 어느 방향으로 얼마만큼 변화시키는지, 변환과정에서 변화 없이 유지되는 부분은 어느 부분인지 등이다. 사실 이 포스팅에선 변환 자체를 단일 벡터들을 기준으로 설명했지만, 실제 응용단계에서는 어떤 물체나 영상 등을 변환시키는데, 이러한 영상이나 물체등은 무수히 많은 벡터들의 뭉치라고 할 수 있다. 따라서 영상이나 물체가 어떤 식으로 변환되고 중심축은 어디인지 등에 관한 중요한 정보들을 파악할 수 있다. 

이 외에도 PCA(Principal Component Analysis), 영상에서 EigenFace, 진동 분석(Vibration Analysis)등 다양한 분야에 응용된다. 

 

다음 포스팅은 고유값과 고유벡터의 실제 계산 방법과 다양한 행렬들의 고유값/고유벡터, 그리고 여러 가지 관련 특성들에 대해서 포스팅 하도록 하겠습니다. 

 

+ Recent posts