고유값과 고유벡터에서 대각화까지

2026.09.11
대표 이미지

고유값과 고유벡터


책 『NLP와 LLM 실전 가이드: 기초 수학부터 실전 AI 문제 해결까지』를 공부하며 정리한 내용.

(특히 4번 항목을 나름대로의 근거로 정리함)


1. 고유값과 고유벡터란?


행렬 A를 벡터에 곱하는 것은 벡터가 존재하는 공간에 **선형변환 A를 적용하는 것**으로 생각할 수 있다. 일반적인 벡터는 A를 적용하면 방향과 길이가 모두 변할 수 있다.


그런데 어떤 0이 아닌 벡터 x는 A를 적용한 결과가 원래 벡터의 상수배가 된다.


**Ax = λx**


이때 **x를 A의 고유벡터**, **λ를 그 고유벡터에 대응하는 고유값**이라고 한다.


  • **고유벡터:** A를 적용한 결과가 자기 자신의 상수배가 되는 0이 아닌 벡터

  • **고유값:** 그 고유벡터가 A에 의해 몇 배로 변하는지를 나타내는 값


실수 고유값을 기준으로 보면 다음과 같다.


  • **λ > 0 :** 원래 방향을 유지하면서 길이가 λ배가 된다.

  • **λ < 0 :** 반대 방향으로 뒤집히면서 길이가 \|λ\|배가 된다.

  • **λ = 0 :** 영벡터가 되어 방향 자체가 사라진다.


따라서 “고유벡터는 A를 적용해도 방향이 바뀌지 않는 벡터”라고 직관적으로 이해할 수 있지만, 음수 고유값에서는 반대 방향으로 뒤집히고, 고유값이 0이면 영벡터가 된다는 점을 함께 기억해야 한다.


2. 고유값을 어떻게 찾는가?


출발점은 고유벡터의 정의다.


Ax = λx
Ax − λx = 0


λ는 스칼라이므로 행렬 A와 직접 뺄 수 없다. 따라서 **단위행렬 I**를 이용한다.


I는 벡터에 곱해도 벡터를 변화시키지 않는 행렬이다. 2차원에서는 다음과 같다.


I =
[1  0]
[0  1]

λI =
[λ  0]
[0  λ]


Ix = x이므로 λIx = λx가 성립한다. 이를 이용하면 다음과 같이 정리할 수 있다.


Ax − λx = 0
Ax − λIx = 0
(A − λI)x = 0


우리가 원하는 것은 이 식을 만족하는 아무 x가 아니다. 고유벡터의 정의상 반드시 **x ≠ 0인 해**가 존재해야 한다.


3. 왜 A − λI의 역행렬이 없어야 하는가?


식을 간단히 하기 위해 **B = A − λI**라고 두면 다음과 같다.


**Bx = 0**


여기서 오른쪽의 0은 2차원이라면 (0, 0), 3차원이라면 (0, 0, 0)인 **영벡터**를 의미한다. x 자체가 0이라는 뜻이 아니다.


우리는 **x ≠ 0인데 Bx = 0이 되는 경우**를 찾고 있다.


그런데 B의 역행렬 B⁻¹이 존재한다고 가정하면, 양쪽 왼쪽에 B⁻¹을 곱할 수 있다.


B⁻¹Bx = B⁻¹0
Ix = 0
x = 0


B⁻¹B = I이므로 결국 x = 0이 된다. 하지만 처음부터 우리가 찾던 것은 x ≠ 0인 고유벡터였다.


전제: x ≠ 0
결론: x = 0


이러한 모순이 발생하므로, Bx = 0을 만족하는 0이 아닌 x가 존재하려면 **B에는 애초에 역행렬이 존재할 수 없다.**


즉, **B = A − λI는 역행렬이 없는 행렬이어야 한다.**


4. 역행렬이 없다는 것은 공간에서 어떤 의미인가?


여기서는 행렬을 단순한 숫자의 묶음이 아니라 **공간을 변형하는 것**으로 생각한다.


2차원 공간은 서로 독립적인 두 방향으로 구성할 수 있다. 가장 기본적인 두 방향은 x축과 y축 방향의 기본벡터다.


e₁ = (1, 0)
e₂ = (0, 1)


임의의 2차원 벡터는 이 두 방향의 조합으로 표현할 수 있다.


**(x, y) = xe₁ + ye₂**


이제 행렬 A를 적용하면 기본벡터도 각각 변한다.


e₁ → Ae₁
e₂ → Ae₂


Ae₁과 Ae₂가 여전히 서로 독립적인 두 방향이라면, 변환 이후에도 두 방향을 이용하여 2차원 공간을 구성할 수 있다.


그런데 다음과 같이 변했다고 하자.


Ae₁ = (1, 2)
Ae₂ = (2, 4)

Ae₂ = 2Ae₁


두 벡터의 좌표값도 존재하고 길이도 존재한다. 하지만 두 벡터가 이제 **같은 방향을 가리킨다.**


원래 2차원을 구성하던 서로 독립적인 두 방향이 하나의 방향으로 겹쳐버린 것이다.


**2차원 공간 → 1차원 공간**


여기서 중요한 것은 모든 값이 0으로 사라졌다는 것이 아니다. 변환된 직선 위에서 어느 위치에 있는지, 얼마나 떨어져 있는지 같은 **1차원 정보는 여전히 남아 있을 수 있다.**


문제는 원래 2차원을 구성하던 **독립적인 방향 하나가 사라졌다는 것**이다. 그 사라진 방향에 원래 벡터가 얼마만큼 위치하고 있었는지를 결과에서는 더 이상 알 수 없다.


독립적인 두 방향
        ↓ 행렬 변환
두 방향이 같은 방향으로 겹침
        ↓
2차원 중 한 차원이 사라짐
        ↓
그 차원에 존재하던 정보를 결과에서 구별할 수 없음
        ↓
원래 2차원 벡터를 완전히 복구할 수 없음
        ↓
역행렬이 존재하지 않음


따라서 역행렬이 없다는 것을 공간적으로 보면 다음과 같이 이해할 수 있다.


**행렬이 원래 공간의 독립적인 방향 하나 이상을 없애 차원을 감소시켰기 때문에, 원래 벡터를 완전히 복원할 수 없는 상태다.**


5. 행렬식은 왜 여기서 등장하는가?


이제 **“어떤 행렬이 차원을 없애버렸는가?”**를 판별할 방법이 필요하다. 여기서 **행렬식(determinant)**이 등장한다.


det(A)는 정사각행렬 A에 대응하는 하나의 스칼라 값이다. 기하학적으로는 다음과 같이 해석한다.


  • **2차원에서 \|det(A)\| :** 넓이가 몇 배로 변했는지

  • **3차원에서 \|det(A)\| :** 부피가 몇 배로 변했는지

  • **det(A)의 부호 :** 공간의 방향성이 유지됐는지 뒤집혔는지


여기서 중요한 것은 **왜 ‘넓이 0’이 역행렬과 연결되느냐**는 것이다.


2차원 공간을 구성하려면 서로 독립적인 두 방향이 필요하다. 그런데 A를 적용한 두 기본벡터가 같은 직선 위에 놓이면, 더 이상 두 벡터로 넓이를 가진 평행사변형을 만들 수 없다.


결과는 직선 또는 점이 되므로 넓이는 0이다.


독립적인 방향 하나 이상이 사라짐
        ↓
2차원 공간이 1차원 이하로 감소
        ↓
넓이 = 0
        ↓
det(A) = 0


따라서 행렬식이 0이라는 것을 단순히 “넓이가 0이다”라고만 이해하기보다는 다음과 같이 이해할 수 있다.


**공간을 구성하던 독립적인 방향 하나 이상이 사라져 차원이 감소했다는 것을, 행렬식이 0이라는 값으로 보여준다.**


정사각행렬 B에 대해서는 다음 두 조건이 동치다.


**det(B) = 0 ⇔ B의 역행렬이 존재하지 않는다**


우리는 B = A − λI가 역행렬이 없는 경우를 찾고 있었다. 따라서 다음 식을 만족하는 λ를 찾으면 된다.


**det(A − λI) = 0**


이 λ가 A의 **고유값**이다.


6. 고유값을 찾은 다음에는 고유벡터를 어떻게 찾는가?


A는 이미 주어져 있으므로 다음 식을 계산하면 λ에 대한 방정식이 나온다.


**det(A − λI) = 0**


이 방정식을 풀어서 고유값을 구한다. 예를 들어 λ = 3이라는 고유값을 구했다면, 원래 식에 대입한다.


(A − λI)x = 0
(A − 3I)x = 0


이제 A와 λ는 모두 알고 있으므로 미지수는 x뿐이다. 따라서 이것은 **연립방정식**이 되고, 가우스 소거법 등의 방법으로 풀 수 있다.


그 결과 나오는 **0이 아닌 x가 λ = 3에 대응하는 고유벡터**다.


고유벡터는 하나의 벡터로만 정해지지 않는다. x가 고유벡터라면 0이 아닌 상수 c에 대해 cx 역시 같은 고유값에 대응하는 고유벡터다.


다음 관계가 성립하기 때문이다.


**A(cx) = cAx = cλx = λ(cx)**


7. 고유벡터를 왜 구하는가?


A는 공간을 복잡하게 변형시킬 수 있다. 그런데 고유벡터는 A를 적용한 결과가 자기 자신의 상수배가 되는 특별한 벡터다.


예를 들어 다음과 같다고 하자.


Av₁ = 3v₁
Av₂ = 2v₂


이는 A가 다음과 같은 변화를 준다는 뜻이다.


v₁ 방향에서는 3배
v₂ 방향에서는 2배


따라서 **고유벡터들을 새로운 좌표축으로 사용하면, A의 복잡한 변환을 각 방향별 단순한 배율 변화로 표현할 수 있다.**


n × n 행렬 A에 선형독립인 고유벡터가 n개 있다고 하자. 이 고유벡터들을 열로 모으면 행렬 V를 만들 수 있다.


**V = [v₁ v₂ … vₙ]**


각각에 대응하는 고유값을 같은 순서로 대각선에 넣으면 대각행렬 Δ를 만들 수 있다.


Δ =
[λ₁  0   …  0 ]
[0   λ₂  …  0 ]
[⋮   ⋮   ⋱  ⋮ ]
[0   0   …  λₙ]


각 고유벡터가 Avᵢ = λᵢvᵢ를 만족하므로, 이들을 한꺼번에 행렬로 묶으면 다음과 같다.


**AV = VΔ**


V의 열벡터들이 선형독립이므로 V에는 역행렬이 존재한다. 따라서 양쪽 오른쪽에 V⁻¹을 곱하면 다음 식을 얻는다.


AVV⁻¹ = VΔV⁻¹
AI = VΔV⁻¹
A = VΔV⁻¹


이것이 **대각화**다.


단, 모든 정사각행렬이 대각화 가능한 것은 아니다. n × n 행렬이라면 **n개의 선형독립인 고유벡터**를 확보할 수 있어야 이런 V를 만들 수 있다.


8. 대각화는 공간적으로 무엇을 의미하는가?


**A = VΔV⁻¹**


이 식을 벡터에 적용할 때는 오른쪽부터 읽으면 된다.


  1. **V⁻¹:** 원래 좌표를 고유벡터들을 축으로 하는 좌표계로 바꾼다.

  2. **Δ:** 각 고유벡터 방향의 좌표에 해당 고유값을 곱한다.

  3. **V:** 계산 결과를 다시 원래 좌표계로 바꾼다.


원래 좌표
    ↓ V⁻¹
고유벡터 기준 좌표
    ↓ Δ
각 고유방향별 배율 변화
    ↓ V
원래 좌표


A와 Δ는 **서로 다른 좌표계를 기준으로 같은 선형변환을 표현한 행렬**이다.


행렬기준 좌표계
A원래 좌표계
Δ고유벡터를 좌표축으로 삼은 좌표계


따라서 고유벡터 기준으로 보면 A의 복잡한 변환이 **“첫 번째 방향은 λ₁배, 두 번째 방향은 λ₂배, …”**라는 단순한 형태가 된다.


9. 대각행렬을 왜 구하는가?


대표적인 이유 중 하나는 **행렬의 거듭제곱을 쉽게 계산할 수 있기 때문**이다.


같은 행렬 A를 반복해서 적용하려면 A², A³, …, Aⁿ이 필요하다. 일반적인 행렬의 거듭제곱은 행렬곱을 반복해야 하지만, A = VΔV⁻¹로 대각화할 수 있다면 다음과 같이 계산할 수 있다.


A² = (VΔV⁻¹)(VΔV⁻¹)
   = VΔ(V⁻¹V)ΔV⁻¹
   = VΔIΔV⁻¹
   = VΔ²V⁻¹


행렬곱은 순서를 마음대로 바꿀 수 없으므로, **현재 순서를 유지하면서 V⁻¹V = I를 이용한 것**이다.


세제곱도 마찬가지다.


A³ = (VΔV⁻¹)(VΔV⁻¹)(VΔV⁻¹)
   = VΔ³V⁻¹


일반적으로 다음 관계가 성립한다.


**Aⁿ = VΔⁿV⁻¹**


반복되는 행렬곱 사이의 V⁻¹V가 I가 되고, **양 끝의 V와 V⁻¹은 남는다.**


Δ는 대각행렬이므로 각 대각성분만 거듭제곱하면 된다.


Δ =
[3  0]
[0  2]

Δ² =
[9  0]
[0  4]

Δ¹⁰⁰ =
[3¹⁰⁰  0   ]
[0      2¹⁰⁰]


따라서 A¹⁰⁰은 다음 과정으로 계산할 수 있다.


Δ의 대각성분을 각각 100제곱
        ↓
왼쪽에 V를 곱함
        ↓
오른쪽에 V⁻¹을 곱함
        ↓
A¹⁰⁰ = VΔ¹⁰⁰V⁻¹


10. A의 거듭제곱은 왜 필요한가?


A의 거듭제곱은 **같은 선형변환 A를 여러 번 반복 적용했을 때의 누적된 변화**를 나타낸다.


초기 상태를 벡터 x₀라고 하자.


한 번 적용: x₁ = Ax₀
두 번 적용: x₂ = Ax₁ = A²x₀
세 번 적용: x₃ = Ax₂ = A³x₀
n번 적용:  xₙ = Aⁿx₀


따라서 Aⁿ은 같은 변화 A를 n번 반복한 결과를 한 번에 나타내는 행렬이다.


A가 대각화 가능하다면 다음과 같이 계산할 수 있다.


Aⁿ = VΔⁿV⁻¹

xₙ = Aⁿx₀
   = VΔⁿV⁻¹x₀


또한 고유벡터 v에 대해서는 Av = λv이므로 다음 관계가 성립한다.


A²v = λ²v
A³v = λ³v
 ⋮
Aⁿv = λⁿv


따라서 고유값을 보면 A를 반복 적용했을 때 해당 고유벡터 방향의 크기가 장기적으로 어떻게 변하는지 알 수 있다.


  • **|λ| > 1:** 반복할수록 크기가 커진다.

  • **|λ| < 1:** 반복할수록 크기가 0에 가까워진다.

고유값과 고유벡터에서 대각화까지 - sim-log