본문 바로가기
딥러닝/선형대수

고윳값 분해

by be-favorite 2020. 4. 10.

❗️블로그 옮김:  https://www.taemobang.com

 

방태모

안녕하세요, 제 블로그에 오신 것을 환영합니다. 통계학을 전공으로 학부, 석사를 졸업했습니다. 현재는 가천대 길병원 G-ABC에서 Data Science를 하고있습니다. 통계학, 시계열, 통계적학습과 기계

www.taemobang.com

 

우리가 알고 있는 많은 수학적 객체들은 그들을 표현하기 위한 방법을 통해 이해되는 것보다, 분해하거나 또는, 그들의 보편적인 특성들을 찾음으로써 더 잘 이해될 수 있다. 처음 들으면 무슨 말인지 이해하기 어려울 수 있으니, 예를 들어 보자. 소인수 분해를 통해 정수(integers)를 분해할 수 있다. 10진법이나 2진법 등 쓰는 방법에 따라서 숫자 12를 표현하는 방법은 달라지게 된다. 그러나 $12 = 2 \times 2 \times 3$는 항상 사실이다. 이로부터 우리는 유용한 특성을 알 수 있다, 예를 들면, 12는 5로 나눌 수 없으며, 12의 배수는 무조건 3으로 나눠질 수 있다는 것이다. 정수의 불변하는 특성을 소인수분해를 통해 발견하였듯이, 행렬 또한 분해를 할 수 있으며, 이를 통해 숫자들의 배열로 행렬을 표현하는 방법으로는 알 수 없는 기능적인 특성에 대한 정보를 알 수 있다. 행렬 분해에 가장 널리 사용되는 종류중 하나가 바로 고윳값 분해(eigendecomposition)이다. 행렬에 고윳값 분해를 알아보기 전에 먼저 고유벡터(eigenvector)에 대해 알아보자. 고유벡터(eigenvector)란, 정사각행렬 $\boldsymbol{A}$에 행렬곱을 수행했을 때 방향은 변하지 않고 크기만 변하는 nonzero 벡터를 말한다:

 

$\boldsymbol{Av} = \lambda \boldsymbol{v}$

 

즉, 위 식의 $\boldsymbol{v}$가 행렬 $\boldsymbol{A}$의 고유벡터에 해당하며, 스칼라 $\lambda$는 고유벡터 $\boldsymbol{v}$의 고윳값에 해당한다. $\boldsymbol{A}$의 고유벡터 $\boldsymbol{v}$를 rescale시킨 벡터 $s \boldsymbol{v}$  ($\textrm{for} \; s \in \mathbb{R}, s \neq 0 $)도 같은 고유벡터를 가지게 되며, 이러한 이유에서 우리는 보통 단위 고유벡터만 취급한다. $\boldsymbol{A}$가 $n$개의 선형 독립인 고유벡터 $\left \{ \boldsymbol{v}^{(1)}, \cdots, \boldsymbol{v}^{(n)} \right \}$와 그에 해당하는 고윳값 $\left \{ \lambda_1, \cdots, \lambda_n \right \}$을 가진다고 하자. 그럼 모든 고유벡터를 엮어서, 고유벡터들을 열로 가지는 행렬 $\boldsymbol{V}$를 만들 수 있다:

 

$\boldsymbol{V} = \left [ \boldsymbol{v}^{(1)}, \cdots, \boldsymbol{v}^{(n)} \right ] $

 

마찬가지로 고윳값들을 결합하여 벡터 $\boldsymbol{\lambda}$를 만들 수 있다:

 

$\boldsymbol{\lambda} = \left [ \lambda_1, \cdots, \lambda_n \right ] $

 

그럼 $\boldsymbol{A}$의 고윳값분해는 다음과 같이 주어진다.

 

$\boldsymbol{A} = \boldsymbol{V} \textrm{diag}\left ( \boldsymbol{\lambda } \right ) \boldsymbol{V}^{-1}$

 

특정한 고윳값과 고유벡터를 가지는 행렬은 공간을 어떤 방향으로 줄이거나 늘릴 수 있게해주며, 이는 소인수분해가 정수의 이해에 도움이 되었던것처럼, 행렬의 특정한 특성의 이해에 도움을 준다.

 

모든 행렬들이 고윳값과 고유벡터로 분해되는것은 아니다. 어떤 경우에서는 분해에 복소수가 포함될 수 있다. 다행히 Deep learning(Goodfellow et al. 2016)에서는 좀 더 간단한 분해의 형태를 가지는 특정한 종류의 행렬들만 다룬다. 구체적으로 말해보자면 대칭형렬에 관한것이며, 모든 실수 대칭행렬들은 실수값의 고유벡터들과 고윳값들만을 이용하여 다음과 같이 분해된다.

 

$\boldsymbol{A} = \boldsymbol{Q} \boldsymbol{\lambda } \boldsymbol{Q}^T$

 

여기서 $\boldsymbol{Q}$는 $\boldsymbol{A}$의 고유벡터들로 구성되는 직교행렬이며, $\boldsymbol{\lambda}$는 대각행렬이다. $\lambda_{i,i}$는 $\boldsymbol{Q}$의 $i$번째 열인 고유벡터의 고윳값에 해당한다. 즉, 실수 대칭행렬은 직교행렬을 통한 고윳값분해가 가능하며, 이를 스펙트럼 분해(spectral decomposition)라고도 말한다. $\boldsymbol{Q}$가 직교행렬이므로, $\boldsymbol{A}$는 공간을 $\boldsymbol{v}^{(i)}$ 방향으로 $\lambda_{i}$만큼 변화시키는 역할로 생각될 수 있다. Figure 2.3을 참고하자.

 

Figure 2.3 출처 - Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep Learning. The MIT Press, 2016

고유벡터와 고윳값의 효과를 볼 수 있는 그림이다. 두 정규직교 고유벡터 $\boldsymbol{v}^{(1)}$과 $\boldsymbol{v}^{(2)}$와 고윳값 $\lambda_1$, $\lambda_2$를 가지는 행렬 $\boldsymbol{A}$가 있다고하자. 왼쪽 그림은 단위원으로 표현되는 2차원 공간상의 모든 단위벡터의 set인 $\boldsymbol{u} \in \mathbb{R}^2$를 나타낸것이며, 오른쪽 그림은 $\boldsymbol{Au}$의 모든 점들의 집합을 표현한 것이다. 그림에서 확인할 수 있는바와 같이 $\boldsymbol{A}$는 단위원을 비틀어, $\boldsymbol{v}^{(i)}$의 방향으로 $\lambda_i$만큼 공간을 변화시켰다. 행렬의 고윳값분해는 많은 정보를 제공해준다. 고윳값이 0값을 가지면, 해당 행렬은 singular이다(필요충분조건). 또한, 실수 대칭행렬의 고윳값분해는 $\left \| x \right \|_2 = 1$이라는 제약하에 이차형식 $f\left ( x \right ) = \boldsymbol{x}^T \boldsymbol{A}\boldsymbol{x}$의 최적화에(optimize) 사용될 수 있다. $\boldsymbol{x}$가 $\boldsymbol{A}$의 고유벡터이면, $f$는 해당 고유벡터의 고윳값을 가진다. $\left \| x \right \|_2 = 1$라는 제약내에서 $f$는 최댓값과 최솟값으로 각각 고윳값의 최댓값과 최솟값을 가진다. 마지막으로 다음과 같은 정보도 주어진다.

 

  • 고윳값이 모두 양수 : positive definite(양정치) <-> 고윳값이 모두 음수 : negative definite(음정치)
  • 고윳값이 0 또는 양수 : positive semidefinite <-> 고윳값이 0 또는 음수 : negative semidefinite

Positive semidefinite 행렬은 $\forall \boldsymbol{x}, \boldsymbol{x}^T \boldsymbol{A} \boldsymbol{x}\geq 0$을 보장하여, 흥미롭게 다뤄진다. Positive definite 행렬은 추가적으로 $\boldsymbol{x}^T \boldsymbol{A} \boldsymbol{x} = 0 \Rightarrow \boldsymbol{x} = 0$을 보장한다.

 

 

참고 도서
Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep Learning. The MIT Press, 2016

'딥러닝 > 선형대수' 카테고리의 다른 글

Trace 연산자와 행렬식  (0) 2020.04.10
특잇값 분해와 일반화 역행렬  (0) 2020.04.10
특별한 종류의 행렬과 벡터  (0) 2020.04.10
norms  (0) 2020.04.10
선형방정식과 선형종속, span  (0) 2020.04.10

댓글