Fundamentals/Linear Algebra

[Linear Algebra] Lecture 25 대칭 행렬(Symmetric Matrix)과 스펙트럼 정리(Spectral Theorem)

츠벤 2017. 11. 18. 20:54

이번 강의에서는 대칭 행렬(Symmetric Matrix)에 대해 이야기 하도록 하겠다. 지난 강의 에서 간략히 배우긴 했으나, 이번 강의에선 고유값과 고유벡터의 관점에서 대칭 행렬의 특성에 관한 내용을 다룰 것이다. 대칭 행렬은 굉장히 좋은 특성을 가지고 있기 때문에 특이값 분해(Singular Value Decomposition), 주성분 분석(Principal Component Analysis)등 여러 분야에 응용될 수 있다. 

 

 

 

1. 대칭 행렬의 개념

 

- Basic concept of symmetric matrix

 

이미 지난 강의 Lecture 5-(1)에서 공부했지만, 대칭행렬에 대해 간략히 정리해 보도록 하자. 대칭 행렬은 다음의 조건을 만족하는 행렬이다. 

 

 

대칭 행렬(symmetric matrix)는 어떤 행렬 A가 있다고 했을 때, 자신의 전치(transpose)행렬이 원래의 자기 자신과 같은 행렬이다. 전치라는 것은 행렬의 임의의 원소의 row와 column의 인덱스가 서로 바뀌어도, 즉 a_ij와 a_ji가 서로 같아야 한다. 이것은 식 (1)의 1번 조건을 만족하는 것이며, 이 조건을 만족하기 위해선 반드시 정방 행렬(square matrix)의 형태이어야만 한다. 

 

식 (1)의 3x3 행렬을 보면 row와 column의 인덱스가 같은 대각 원소(diagonal element)=[8, 3, 6]가 있다. 이 대각 원소를 기준으로 우측 상단의 상삼각행렬의 원소들과 좌측 하단의 하삼각행렬 원소들의 값이 같은 것을 볼 수 있다. 이처럼 전치 이후에도 그 결과가 완전히 같은 행렬을 대칭행렬이라 한다. 

 

 

 

2. 대칭행렬과 스펙트럼 정리(Spectral theorem)

 

- Eigenvalues and Eigenvectors of symmetric matrix

 

대칭행렬은 보통의 행렬과는 다른 특별한 형태의 행렬이다. 지난 강의 Lecture 24에서 우리는 마코브 행렬(Markov matrix)이 보통의 다른 행렬과는 달리 특별한 형태임을 배웠다. 모든 원소가 0보다 크고, 각 column의 합이 1이 되는 등의 특징을 보였는데, 이와 같이 특별한 특성을 보이는 행렬은 고유값과 고유벡터 역시 어떤 특징을 보이기 마련이다. 마코브 행렬은 적어도 하나의 고유값은 1을 가져야 한다는 특징을 보였다. 이와 마찬가지로 대칭행렬 역시 고유값과 고유벡터가 어떤 특징을 보인다. 그렇다면 대칭행렬은 어떤 특징을 보일까? 아래를 보도록 하자. 

 

 

대칭행렬은 (2)에 정리된 것과 같은 특성을 보인다. 첫 번째 특성은 대칭행렬의 고유값(eigenvalue)은 전부 실수(Real number)라는 것이다. Lecture 21-(2)에서 회전 행렬(rotation matrix)의 고유값을 구했을 때 허수(complex number)가 나왔었다. 하지만 대칭행렬에서는 절대 이와 같은 허수 고유값이 나오지 않는다. 그 이유는 잠시 후에 설명하도록 하겠다. 

 

두 번째 특성은 대칭행렬의 고유벡터(eigenvector)는 직각(perpendicular)을 이룬다는 것이다. 대칭행렬은 실수인 고유값들을 가지며, 각각의 고유값에 대응되는 고유벡터들은 1차원의 고유공간(eigenspace)을 형성한다. 그리고 각 고유 벡터, 즉 각각의 고유공간들은 서로 직교(orthogonal)하다는 것이 두 번째 특성이다. 

 

 

- Diagonalization of symmetric matrix

 

그렇다면 위의 특성으로부터 알 수 있는 것은 무엇일까? 일단 모든 고유벡터들이 서로 수직하다는 특성 2에 주목해보자. 이 특성은 어떤 nxn크기의 대칭행렬(symmetric matrix)은 n개의 서로 수직인 고유벡터들을 가지고 있다는 의미이다. 이는 행렬을 대각화하여 분해(factorization)할 때 특별한 형태를 띄게 된다. 그 특별한 형태를 알아보도록 하자. 

 

먼저 행렬의 대각화(diagonalization) (Lecture 22)에서 배웠듯이 어떤 행렬은 고유벡터행렬과 고유값 대각 행렬의 조합으로 분해될 수 있다. 

 

 

식 (3)은 임의의 행렬 A를 대각화하여 분해한 모습이며, S는 고유벡터행렬을, 대문자 람다는 고유값행렬을 각각 나타낸다. 그렇다면 대칭행렬은 분해할 때 무엇이 특별하다는 것일까? 특별한 형태가 나타나는 부분은 고유벡터행렬이다. 앞서 언급했듯이 대칭행렬의 고유벡터들은 서로 수직이며, 수직인 벡터들이 column 벡터 형태로써 고유벡터행렬 S를 형성한다. 이때 이 고유벡터들은 정규화(normalization)과정을 거쳐 그 크기를 1로 만들 수 있다. 고유벡터는 크기보단 방향이 의미가 있기 때문에 단위 벡터(unit vector)로 만들어도 문제가 없으며 실제로 MATLAB의 내장 함수 eig()를 이용하여 고유값을 구해도 정규화된 고유벡터가 나온다. 

 

어쨋든 대칭행렬의 고유벡터들은 서로 수직(perpendicular)하며 방향 성분만을 나타내는 단위 벡터(unit vector)로 만들 수 있다. 이들은 정규직교벡터(orthonormal vector)이며, 이 정규직교벡터인 고유벡터들을 모아 행렬을 만들었기 때문에 결과적으로 대칭행렬의 고유벡터행렬은 정규직교행렬(orthonormal matrix)이 된다. 이제 대칭행렬의 분해는 아래와 같은 식으로 표현할 수 있다. 

 

 

대칭행렬의 경우 식 (4)와 같이 원래의 고유벡터행렬 S가 정규직교행렬을 나타내는 Q로 대체되었다. 정규직교행렬은 Lecture 17-(1)에서 배운바 있다. 정규직교행렬은 역행렬이 전치(transpose)와 같음을 이미 배웠다. 따라서 (4.1)의 우변의 Q의 역행렬은 (4.2)와 같이 Q의 전치 행렬로 간단히 표현할 수 있다. 결과적으로 대칭행렬은 식 (4.2)와 같이 정규직교행렬 Q와 고유값 행렬 람다, 그리고 Q의 전치의 곱으로 분해하여 표현할 수 있으며, 이는 선형대수에서 굉장히 중요한 식이므로 잘 알아두도록 하자. 또한 반대로 해석하면 어떤 행렬을 (4.2)와 같이 분해하여 표현할 수 있다면, 그 행렬은 대칭행렬이라고 할 수 있다. 

 

식 (4.2)가 대칭행렬인지를 증명할 수 있는 방법이 한 가지 있다. 바로 (4.2)를 전치(transpose)시켜보는 것이다. 

 

 

식 (4.2)를 전치시키면 (4.3)을 거쳐 (4.4)와 같이 정리할 수 있다. 우선 각 행렬의 순서가 뒤집혀서 곱해지는데, 첫 번째 Q는 전치에 전치를 거쳐서 원래의 Q로, 고유값행렬은 대각행렬이기 때문에 원래 행렬 그대로, 마지막 Q는 전치된 행렬로 각각 정리할 수 있다. 결과 식인 (4.5)를 보면 전치를 하기 이전의 식인 (4.2)와 같은 것을 볼 수 있다. 결국 대칭행렬의 분해식을 기준으로 전치를 시켜도 분해식의 결과가 같기 때문에 대칭행렬의 분해를 식 (4.2)와 같이 정리할 수 있다. 

 

아래 그림은 식 (4.2)를 검증하기 위한 MATLAB 코드와 그 결과이다.  

 

Fig. 1 대칭행렬의 분해. [Left] 실행 결과. [Right] 소스코드

 

 

Fig. 1의 프로그램 결과를 살펴보면 먼저 대칭 행렬 A에 대한 고유값과 고유벡터를 구한 뒤, 이를 식 (4.2)와 같이 다시 곱하였다. 결과값이 정확히 원래의 대칭행렬과 일치하는 것을 볼 수 있다. 

 

 

- Special case

 

앞서 우리는 대칭행렬이 전부 실수(real number)인 고유값을 가지고, 고유벡터들은 모두 수직(perpendicular)하다는 것을 배웠으며 이를 식 (2)에 정리하였다. 그런데 식 (2)의 특성 2번의 "대칭행렬의 고유벡터들은 서로 수직이다"는 어떤 특수한 형태의 대칭행렬인 경우엔 약간 다르게 표현되어야 한다. 여기서 특수한 형태의 대칭행렬은 바로 단위 행렬(Identity matrix)을 의미하며, 이 경우 특성 2는 다음과 같이 표현될 수 있다. 

 

"고유벡터들은 서로 수직한 벡터들로 선택될 수 있다"

 

왜 이와 같이 표현하는지 당장은 이해가 가지 않을 것이다. 다음의 2x2 단위행렬의 고유값과 고유벡터를 구해서 그 이유를 알아보자. 

 

 

식 (5)는 대칭행렬이 단위행렬일 때의 고유값과 고유벡터를 나타낸 것이다. 행렬이 단위행렬이기 때문에 고유값은 식 (5.1)과 같이 A가 없는 것과 마찬가지로 볼 수 있다. 따라서 식을 만족시키는 고유값은 오직 1이기 때문에 두 개의 고유값 모두 1이 된다. 여기서 중요한 포인트는 고유값이 반복(repeated eigenvalue)된다는 것이다. 이렇게 고유값이 반복되는 경우엔 어떠한 벡터라도 고유벡터가 될 수 있다. 식 (5.2)를 보면 고유벡터를 구하는 과정에서 행렬의 모든 원소가 0이 되고, 이때의 null space(고유벡터공간을 의미)는 어떠한 벡터이든 가능하게 된다. 즉 2x2행렬 기준으로 전체 평면이 고유벡터가 되는 것이다. 이 수많은 벡터들중 어떠한 벡터들을 고유벡터로 선택하든 식은 성립한다. 그러나 어떠한 벡터든지 고유벡터가 될 수 있다면, 기왕이면 서로 수직한 벡터(위의 경우엔 x1=[1 0]T, x2=[0 1]T )를 선택하는 것이 여러 모로 더 유리하다고 볼 수 있다. 그렇기 때문에 식 (2)의 특성 2가 "고유벡터들은 서로 수직한 벡터들로 선택될 수 있다" 로 정의할 수 있는 것이다. 

 

 

- Spectral Theorem

 

지금까지 우리는 대칭행렬을 대각화하여 분해하는 과정을 살펴보았다. 이쯤에서 스펙트럼 정리(spectral theorem)에 대해 알아보자. 사실 스펙트럼 정리라는 것은 별다를 것이 없다. 우리가 지금까지 대각행렬을 대각화하여 분해하는 과정이 전부 스펙트럼 정리에 기반하여 이루어진 것이다. 스펙트럼 정리는 아래와 같다. 

 



스펙트럼 정리(Spectral Theorem) : 
nxn 크기의 에르미트 행렬(Hermitian matrix 또는 self-adjoint matrix)은 아래 식과 같이 실수로 이루어진 고유값행렬와 유니터리 행렬(Unitary matrix) U로 대각화 과정을 통해 분해할 수 있다. 
 

 

일단 식을 보아하니 (4.2)와 유사하게 생기긴 했는데, 어려운 용어가 나오고 지수부에 이상한 기호도 보여서 헷갈리는 분들도 있을 것이다. 그러나 어렵게 생각할 필요 없다. 차근차근 알아보자. 

 

에르미트 행렬(Hermitian matrix)은 행렬이 가질 수 있는 값들을 실수와 함께 복소수까지 고려하여 확장하여 설명한 개념이다. 즉 복소수를 원소로 가지고 있는 정방 행렬이고, 자기 자신과 그의 켤레전치(conjugate transpose)행렬이 같은 행렬을 의미하며 다음의 식을 만족시킨다. 

 

 

에르미트 행렬은 일단 (6.2)와 같이 대각 원소들은 반드시 실수(Real number)여야 한다. 또한 (6.2)의 왼쪽의 행렬 A에서 먼저 전치(transpose)를 한 뒤, 켤레 복소를 해주면 결국 원래의 행렬과 같아진다. 이러한 조건들을 만족시키는 행렬을 에르미트 행렬이라 한다. 지금까지 우리는 실수로만 이루어진 행렬만 다루어 왔지만, 사실 행렬의 원소로 복소수(complex number)가 올 수 있기 때문에 에르미트 행렬에 대해 알아두면 좋다. 

 

유니터리 행렬(unitary matrix) 역시 에르미트 행렬과 정의가 거의 유사하다. 복소수를 원소로 가질 수 있으며 원래의 행렬과 켤레전치(conjugate transpose)가 같은 행렬이다. 

 

 

식 (7)과 같이 자기 자신과 켤레전치행렬을 곱하면 단위 행렬(Identity matrix)이 되므로 결국 켤레전치행렬은 원래 행렬의 역행렬과 같다. 이 외에도 정규화된 행렬(normalized matrix)이고, 대각화가 가능(diagonalizable)하고, 고유 공간이 서로 직교(orthogonal)하는 등 여러 특성들이 존재한다. 자세한 사항은 위키를 참고 하자. (※ 켤레전치행렬(conjugate transpose matrix)의 표현은 선형대수에서는 * 혹은 H 둘 다 사용 가능하다. 즉 와 는 같은 의미이다. 양자역학(quantum mechanics)에서는 dagger를 사용)

 

중요한것은 유니터리 행렬 U의 각 column은 U의 고유벡터(eigenvector)라는 것이다. 그런데 스펙트럼 정리에 의해 A가 U와 실수 고유값행렬 $\Lambda$로 분해할 수 있으므로 U의 고유벡터들은 곧 A의 고유벡터가 된다. 

 

여기서 다시 한 번 생각해보자. 스펙트럼 정리가 의미하는 것은 어떤 복소수를 가질 수 있는 nxn크기의 정방행렬인 에르미트 행렬 A가 있고, 이 행렬은 실수로 이루어진 고유값행렬 $\Lambda$와 유니터리 행렬인 U와 U의 켤레전치행렬 $U^H$로 분해할 수 있다. 또한 유니터리 행렬의 성질에 의해 U의 역행렬은 U의 켤레복소행렬과 같고, U의 각 column vector는 서로 직교(orthogonal)한다. 이때 U의 column vector들은 A의 고유벡터들이다. 

 

바로 위에서 정리한 내용들을 보고 이미 눈치채신 분들이 있을 것이다. 그렇다. 스펙트럼 정리는 대칭행렬의 대각화와 매우 유사하다. 식 (4.2)와 비교해보면 더욱 잘 이해할 수 있을 것이다. 에르미트 행렬이 정의하는 것이 복소행렬까지 포함한 것을 제외하면 스펙트럼 정리에서 에르미트 행렬을 대칭행렬로 놓고 이해해도 무리가 없을 정도이다. 결과적으로 우리는 실수대칭행렬(real symmetric matrix)의 대각화를 스펙트럼 정리로 설명할 수 있다

 

스펙트럼 정리는 마치 빛을 서로 다른 파장을 가지는 스펙트럼으로 쪼개서 나타낼 수 있는 것과 같다. 원래는 그냥 하얗게 보이는 빛을 프리즘에 통과시켜보면 여러 색깔로 이루어져 있음을 알 수 있다. 마찬가지로 스펙트럼 정리도 어떤 행렬을 순수 고유값(pure eigenvalue)과 순수고유벡터(pure eigenvector)로 분해하여 표현할 수 있다는 의미에서 빛의 스펙트럼과 그 의미가 같다고 할 수 있다. 

 

어떤 행렬이 선형 변환(Linear transformation)을 시킴에 있어서 얼마만큼(고유값), 어느 방향으로(고유벡터) 변환시키는 지에 대한 순수 값들로 분해하는 과정. 마치 하얀 빛을 여러 파장의 순수한 빛들로 분해하여 나타내는 것과 같은 느낌으로 받아들이면 좋을 것 같다. 그러한 측면에서 대칭행렬은 정규직교(orthonormal)한 고유벡터와, 역행렬이 전치와 같음으로 인한 계산의 편의성 등 유용한 특성을 지니고 있는 좋은 특성을 지닌 행렬이라고 할 수 있다. 

 

 

- Why real eigenvalues?

 

이제 처음 부분에서 공부했던 대칭행렬의 특성문제로 돌아가보자. 식 (2)의 특성 1은 대칭행렬이 실수인 고유값을 가진다고 했다. 왜 그런지 알아보도록 하자. 

 

 

식 (8)은 A가 실수 대칭행렬(real symmetric matrix)일 때를 가정하여 정리한 것이다. 식 (8.1)은 우리가 이미 잘 알고있는 고유값/고유벡터에 대한 식이다. 여기서 양변에 복소켤레(complex conjugate)를 취하면 (8.2)와 같이 된다. 복소켤레는 실수부(real part)는 그대로두고 허수부(imaginary part)의 부호가 반대로 바뀌는 것을 의미하며, 표기는 각 알파벳 기호 위에 bar를 써서 표현한다. 양변에 똑같이 복소켤레를 취해도 여전히 식은 성립하기 때문에 (8.2)와 같이 정리할 수 있다. 

 

사실 (8.1)에서 (8.2)로 넘어가는 과정이 의미하는 것이 있다. 어떤 실수 행렬 A에 대한 고유값이 복소수 형태라면, 원래의 고유값 와 그의 켤레값(conjugate)인 가 쌍(pair)으로 존재한다. 이는 고유벡터에도 마찬가지로 적용이 되어 와 의 형태로 나타난다. 

 

그러나 여기서 증명하고자 하는 것은 행렬 A가 실수 대칭행렬일 때 고유값은 항상 실수라는 것이다. 따라서 이를 보이기위해 양변을 전치시켜주면 전치의 규칙에의해 순서가 바뀌어 (8.3)과 같이 정리할 수 있다. 여기서 행렬 A는 실수로 이루어진 대칭행렬이라 가정하였으므로 켤레(conjugate)와 전치(transpose)가 의미가 없어진다. 결과적으로 A의 bar와 전치 기호가 제거된 (8.4)와 같은 형태로 정리할 수 있다. 사실 (8.4)에서 고유값인 λ는 상수이기 때문에 x앞으로 빼서 정리해도 되지만, 전치의 결과를 보이기 위해 바뀐 순서를 그대로 하여 정리하였다. 

 

이제 식 (8)로부터 고유값이 실수(real number)임을 증명해보자. 어떻게 할 수 있을까? 식 (8.1)과 (8.4)를 이용하면 된다. 아래 식을 보자. 

 

 

먼저 식 (8.1)의 양변의 좌측에 $\bar{\textbf{x}}^T$를 곱해주면 (9.1)과 같이 정리할 수 있다. 람다는 상수이기 때문에 앞으로 빼서 정리할 수 있음을 기억하자. 다음으로 (8.4)의 양변의 우측에 x를 곱해주면 (9.2)와 같이 정리가 된다. 이때 (9.1)과 (9.2)의 좌변에 $\bar{\textbf{x}}^T A\textbf{x}$가 존재하는 것을 볼 수 있다. 따라서 식 (9.3)과 같이 (9.1)의 좌변과 (9.2)의 좌변이 같다고 정리할 수 있고, 다시 (9.3)의 양변을 $\bar{\textbf{x}}^T \textbf{x}$로 나눠주게 되면 결과적으로 람다와 람다 bar는 같다고 정의할 수 있다. 즉 복소수인 고유값과 그의 켤레(conjugate)가 같다는 것은 허수부(imaginary part)의 값이 0과 같다는 의미이다. 따라서 이때의 고유값은 항상 실수(real number)라고 할 수 있다

 

 

정리하자면 실수 대칭행렬인 A가 있을 때, A에 대한 고유값/고유벡터 식을 (8.1)과 같이 정의하고 그의 켤레 전치(conjugate transpose)에 대한 식을 (8.4)와 같이 도출한다. 이때 행렬이 실수 대칭행렬이기 때문에 (8.4)의 A에는 bar와 transpose기호가 없어진다. 이렇게 만들어진 고유값에 대한 식 (8.1)과 (8.4)를 이용하여 양변에 적절한 수를 곱해주어 (9.3)의 관계를 도출하였고, 이를 통해 결과적으로 실수 대칭행렬(real symmetric matrix)은 고유값이 무조건 실수(real number)라는 식 (2)의 조건 1을 증명한 것이다. 

 

지금까지의 과정을 통해 우리는 실수대칭행렬은 식 (2)에서와 같이 고유값은 언제나 실수(real number)이며 고유벡터들은 서로 수직(perpendicular)임을 증명하였다. 대각화(diagonalization)과정을 통해 실수대칭행렬을 분해하면 일반적인 행렬과는 달리 정규직교(orthonormal)한 고유벡터행렬 Q로 분해할 수 있으며, 이때 Q는 역행렬을 전치(transpose)를 통해 간단히 구할 수 있다. 이처럼 실수 대칭행렬은 좋은 특성들을 가지고 있기 때문에 굳이 이름을 붙이자면 좋은 행렬(good matrix)이라고 하겠다. 바꿔 말하면 좋은 행렬이 되기 위해선 대칭행렬이 가지는 특성들, 실수인 고유값과 직교인 고유벡터의 특성들을 가지고 있어야하며 실은 대칭행렬 그 자체가 되면 된다. 

 

우리는 지금까지 실수로 이루어진 행렬만을 가정하고 문제를 풀어왔다. 하지만 행렬에는 허수가 포함된 경우도 있을 수 있다. 만약 허수가 포함된 행렬이 있다면, 이또한 좋은 행렬이 될 수 있을까? 다시 말하면 허수가 포함된 대칭행렬도 실수인 고유값을 가지고 고유벡터들이 서로 직교(orthogonal)할 수 있을까? 결론부터 말하자면 어떤 허수가 포함된 대칭행렬(complex symmetric matrix) A가 이와 같은 특성을 가지기 위해선 A의 켤레전치행렬(conjugate transpose matrix)이 원래의 A와 같아야 한다는 조건을 만족시켜야 한다. 

 

좋은 행렬(good matrix, 실수 고유값, 직교 고유벡터)이 되려면... 

 

 A가 실수(real number)로만 이루어져 있을 때  A가 허수(complex number)도 포함할 때
  •   를 만족시켜야 한다. 
  •  를 만족시켜야 한다. 

 

위 테이블의 좌측은 우리가 지금까지 다뤄왔던 A가 실수로만 이루어진 경우에 좋은 행렬이 되기 위한 조건이다. 반면에 오른쪽은 A가 허수를 포함한 경우에 좋은 행렬이 되기 위한 조건을 나타낸다. 원래의 행렬과 켤레전치행렬이 같은 경우에 좋은 행렬이 될 수 있다. 그런데 테이블의 오른쪽 허수를 포함한 행렬은 이번 강의에서 이미 다룬 것이다. 바로 식(6)의 에르미트 행렬(Hermitian matrix)이다. 행렬의 원소를 복소수가 포함된 경우까지 확장하여 생각해보면 에르미트 행렬인 경우에 좋은 행렬이 될 수 있다는 결론이 나온다. 에르미트 행렬이 되기 위해선 켤레전치행렬이 같아야 하고, 켤레전치행렬이 같기 위해선 서로 대응되는 원소, 즉 위의 경우엔 (1, 2)의 1+i와 (2, 1)의 1-i가 서로 켤레(conjugate)의 관계여야 한다. 물론 실제 응용문제에서는 거의 대부분이 실수대칭행렬문제이긴 하지만 그래도 실수대칭행렬과 에르미트 행렬의 차이를 잘 알아두도록 하자. 

 

 

 

3. 대칭행렬의 그 외의 특징들

 

- projection matrices in symmetric matrix

 

대칭행렬을 해석하는 또 다른 관점이 있다. 이미 알다시피 대칭행렬은 대각화를 통해 Q와 Λ의 곱으로 분해할 수 있다. 이 식을 다시 써보자. 

 

 

식 (10.1)은 분해된 행렬의 원소들이 곱해지는 과정을 자세히 풀어서 작성한 것이며, Lecture 3에서 배웠던 행렬 곱셈에 따라 column * row의 곱의 조합으로 나타낸 것이다. (10.2)와 (10.3)은 (10.1)의 우변에 해당하는 각각의 항들을 보다 이해하기 쉽게 시각화한 것이다. 이미 배운대로 column * row의 순으로 벡터를 곱하면 하나의 행렬이 만들어지는데, 여기에선 같은 벡터끼리 곱해줬기 때문에 (10.3)과 같이 nxn크기의 정방행렬이 나올 것이다. 모든 대칭행렬들이 이와 같은 조합(combination)의 형태로 표현될 수 있다. 

 

그렇다면 (10.3)에서 표현된 각 람다와 곱해진 정방행렬들은 무엇일까? 바로 상호간 서로 독립인 투영행렬(mutually independent projection matrix)이다. 투영행렬에 대한 내용은 Lecture 15를 참고하자. (10.3)의 각 투영행렬은 n개 만큼 나오고, rank는 1이다. 이는 대칭행렬 A가 nxn의 정방행렬이고 역행렬의 계산이 가능하다면 이때의 대칭행렬은 full rank일 것이고, 따라서 n개의 투영행렬의 조합이 가능하다면 각 투영행렬은 rank=1이 될 것이다. 이는 결국 스펙트럼 정리의 측면에서 보자면 nxn크기의 대칭행렬 A는 n개의 투영행렬과 고유값의 조합으로 표현이 가능하다는 것을 알 수 있다. 

 

대칭행렬이 실제로 어떻게 투영행렬의 조합으로 표현될 수 있는지 그래프를 통해 알아보도록 하자. 먼저 임의의 대칭행렬의 고유값과 고유벡터를 구해보자. 

 

 

(11.1)은 대칭행렬, (11.2)는 고유값, (11.3)은 아직 정규화(normalization)되지 않은 상태의 고유벡터를 각각 나타낸다. 자세한 풀이 방법은 Lecture 21-(2)을 참고하자. 다음으로 고유벡터를 정규화 한 뒤, (10.3)과 같이 투영행렬의 조합으로 표현해보자. 

 

 

(12.1)은 (10.1)의 형태로, (12.2)는 (10.3)의 형태로 정리한 것이다. 여기서 고유값 바로 뒤에 곱해진 정방행렬들이 바로 투영행렬들이다. 이제 (11.1)의 대칭행렬 A의 선형변환을 그래프로 표현해보자.  

 

Fig. 2 식 (11)의 대칭행렬의 선형변환 그래프

 

 

파란색 벡터는 변환 전, 빨간색 점선 벡터는 A에 의해 변환된 벡터를 의미하며, 벡터의 끝 부분에는 변환 전 원래 벡터의 좌표가 표시되어 있다. 변환 전과 변환 후의 벡터의 모습을 보고 대략적으로 이 행렬이 어떤식으로 변환을 시키는지를 유추할 수 있다. 변환의 방향은 고유벡터, 변하는 정도는 고유값이 영향을 미친다는 것을 알아두자. 

 

 

그렇다면 (12.2)에서 정리한 각 고유벡터의 투영행렬을 이용하여 위의 파란색 벡터를 투영시키면 어떤 모습이 될까? 바로 아래 그림과 같은 모습이 될 것이다. 

 

Fig. 3 (12.2)의 첫 번째 투영행렬을 이용하여 투영시킨 모습

 

 

 

 

Fig. 4 (12.2)의 두 번째 투영행렬을 이용하여 투영시킨 모습

 

 

Fig. 3과 4는 각각 (12.2)의 첫 번째와 두 번째 투영행렬을 이용하여 원래의 파란벡터들을 투영시킨 모습이다. 결과적으로 파란 벡터들이 투영행렬 A의 고유공간(eigenspace)으로 투영(projection)된 것을 볼 수 있다. 이것을 그래프상에서 해석해보면 Fig. 3의 투영된 벡터와 Fig. 4에서 투영된 벡터를 더하면 Fig. 2의 대칭행렬로 변환된 벡터와 일치한다는 것이다. 즉 예를 들면 [1, 1]의 벡터를 첫 번째 투영행렬로 투영시킨 벡터와, 두 번째 투영행렬로 투영시킨 벡터를(고유값의 곱도 포함함) 서로 더하면 [1, 1]을 A로 변환시킨 벡터와 같다는 것이다. 아래 그림은 [1, 1]의 투영에 대한 예시이다. 

 

Fig. 5 (11.1)의 대칭행렬을 이용한 [1, 1]벡터의 투영 예시

 

Fig. 5의 파란색 벡터는 [1, 1]의 변환 전 벡터를 나타내고 빨간색 벡터는 첫 번째 투영 벡터, 두꺼운 자홍색 벡터는 두 번째 투영벡터를, 녹색 벡터는 대칭행렬 A에 의해 변환된 벡터를 각각 의미한다. 얇은 자홍색 벡터는 첫 번째 투영벡터와 두 번째 투영벡터를 더한 결과를 나타낸다. 더한 결과가 일치하는 것을 볼 수 있다. (대칭행렬일 때만 항상 성립함을 주의하자) 이것을 스펙트럼 정리에 적용시켜 이해해보면 각각의 투영행렬은 대칭행렬의 스펙트럼(spectrum)이라고 이해해도 무리가 없다. 

 

이를 통해 우리는 다음의 결론을 내릴 수 있다. 

 



  모든 대칭행렬은 상호수직(mutually perpendicular)인 투영행렬들의 조합으로 표현될 수 있다.

 

 

아래는 MATLAB코드이다. 

 

 

 

- pivots and eigenvalues

 

마지막으로 살펴볼 대칭행렬의 특징은 피벗(pivot)에 관한 것이다. 정확히는 피벗과 고유값 사이의 관계에 관한 내용이다. 얼핏 생각하면 피벗과 고유값은 별 관계가 없을 것 같지만 한 가지 공통점이 있다. 바로 부호(sign)와 관련된 것인데, 바로 대칭행렬에서 피벗과 고유값은 같은 부호를 갖는 원소의 개수가 같다는 것이다. 쉽게 예를 들어 설명하면 100x100크기의 정방행렬이 있을 때, 피벗과 고유값의 개수도 똑같이 100개가 될 것이다. 여기서 100개의 피벗 중 56개의 피벗이 양수이고, 나머지 44개의 피벗이 음수라고 가정하자. 이때 고유값도 마찬가지로 100개 중에 56개의 고유값이 양수, 나머지 44개의 고유값이 음수가 된다. 이것이 대칭행렬에서 피벗과 고유값의 부호에 관한 관계이다. 아래의 식을 보자. 

 

 

식 (13.1)의 2x2 행렬은 양수와 음수 피벗이 한 개씩 존재한다. 마찬가지로 고유값도 양수와 음수 한 개씩 존재하는 것을 볼 수 있다. (13.2)의 경우엔 피벗이 둘 다 양수이고 고유값도 마찬가지로 둘 다 양수임을 볼 수 있다. 

 

그렇다면 위와 같은 피벗과 고유값 사이의 부호 관계는 왜 알아야할까? 일단 Lecture 23-(1)에서 공부했던 미분방정식에서 고유값의 부호가 해당 시스템의 안정성(stability)에 영향을 미치는 등 중요한 역할을 한다는 것을 이미 배운바있다. 고유값의 부호가 중요하다는 것은 알겠는데, 피벗과는 왜 연관지어서 알아야할까? 

 

지금까지 우리가 다루어왔던 행렬들은 그 크기가 2x2, 3x3, 아무리 커 봐야 4x4 정도였다. 하지만 어떤 시스템에서는 50x50, 100x100, 혹은 그 이상의 크기의 행렬을 다루어야 하는 경우도 발생할 수 있다. 우리가 배웠던 고유값을 구하는 방식은 det(A-λI)의 꼴로 놓고 λ에 대한 다항식(polynomial)을 만들어 푸는 방식이다. 그러나 차수가 증가함에따라 고차다항식을 풀어서 고유값을 구해야 하는데, 고차로 갈 수록 해(solution)의 불안정성이 커지게 된다. 즉 100x100의 고유값을 구하려면 100차 다항식을 풀어야 한다는 소리다. 

 

이와 같은 커다란 행렬의 고유값을 구하려면 기존의 방법보다는 수치선형대수(numerical linear algebra)의 방법을 이용해서 값을 구하는 것이 훨씬 안정적이다. 즉 피벗 같은 경우엔 MATLAB같은 프로그램으로 비교적 안정적으로 해를 구할 수 있으므로 우선 피벗을 구해서 양의 개수가 몇 개인지, 음의 개수가 몇 개인지를 안 다음, 거기서부터 수치해석적으로 고유값을 구해나가는 방식을 사용하는 것이다. 

 

자세한 것을 다루진 않겠지만 고유값을 수치적으로 구하기 위해서 사용되는 중요한 사항이므로 이러한 것이 있다는 것 정도만 알아두도록 하자. 

 

 

 

4. 마치며

 

이번 강의에선 대칭행렬의 여러 가지 특성과 스펙트럼 정리에 대해 알아봤다. 기본적으로 대칭행렬은 실수인 고유값, 그리고 서로 수직인 고유벡터들을 가지며 이를 통해 행렬을 대각화하여 분해할 때 전치연산으로 간단히 역행렬을 구할 수 있는 등 좋은 특성들이 있음을 배웠다. 이러한 좋은 특성들은 특이값 분해(SVD), 주성분 분석(PCA)등의 연산에 기본이 되는 성질이다. 또한 대칭행렬은 스펙트럼 정리로 설명할 수 있으며, 행렬 원소를 복소수까지 확장한 에르미트 행렬에 대해서도 공부하였다. 이번 대칭행렬은 앞으로의 강의에서 다룰 positive definite matrix에 대한 준비과정이므로 잘 공부하도록 하자.