고유값과 고유벡터에서 대각화까지
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⁻¹**
이 식을 벡터에 적용할 때는 오른쪽부터 읽으면 된다.
**V⁻¹:** 원래 좌표를 고유벡터들을 축으로 하는 좌표계로 바꾼다.
**Δ:** 각 고유벡터 방향의 좌표에 해당 고유값을 곱한다.
**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에 가까워진다.