Egenvärden och egenvektorer
Kunna beräkna egenvärden för små matriser och förklara vad de säger om en avbildning.
Förkunskaper
- ELinjära avbildningarkrävs
Intuition
En matris A är en avbildning. För de flesta vektorer ändras både riktning och längd. Men vissa riktningar behåller sin riktning och skalas bara:
Då är v en egenvektor och λ dess egenvärde.
För [[2,0],[0,3]] är x-axeln och y-axeln egenriktningar med egenvärdena 2 och 3: avbildningen sträcker x dubbelt och y tre gånger. För en rotationsmatris finns inga reella egenvektorer — allt vrids.
Varför det spelar roll i ML: produkten av många matriser (djupa nät, RNN över tid) domineras av det största egenvärdet. Är det > 1 växer signalen exponentiellt med djupet; är det < 1 dör den ut.
Formellt
Beräkning för 2×2: lös den karakteristiska ekvationen .
För :
Egenvektorn för : lös .
Nyttiga samband:
- (spåret) — snabb kontroll: 5 + 2 = 4 + 3 ✔
- — 5 · 2 = 12 − 2 ✔
- Spektralradien styr om växer eller krymper.
Symmetriska matriser (som kovariansmatriser och Hessianer) har alltid reella egenvärden och ortogonala egenvektorer — spektralsatsen. Det är därför PCA fungerar: egenvektorerna till kovariansmatrisen är ortogonala riktningar sorterade efter varians.
Hessianens egenvärden i en kritisk punkt avgör om det är ett minimum (alla positiva), maximum (alla negativa) eller en sadelpunkt (blandade tecken) — och förhållandet mellan största och minsta egenvärde (konditionstalet) avgör hur illa gradient descent zickzackar.
Kod
import numpy as np
A = np.array([[4.0, 1.0], [2.0, 3.0]])
varden, vektorer = np.linalg.eig(A)
print(varden.round(3)) # [5. 2.]
print(vektorer.round(3)) # kolumnerna är egenvektorerna
print(np.trace(A), varden.sum()) # 7.0 7.0 ← kontroll
print(round(np.linalg.det(A), 3), round(varden.prod(), 3)) # 10.0 10.0
# Verifiera definitionen för första egenparet
v = vektorer[:, 0]
print(np.allclose(A @ v, varden[0] * v)) # True
# Spektralradien styr om upprepad tillämpning växer eller dör
for skala in (0.9, 1.0, 1.1):
M = A * skala / np.abs(varden).max()
print(skala, round(float(np.abs(np.linalg.eigvals(np.linalg.matrix_power(M, 50))).max()), 6))
# 0.9 0.005154 ← dör ut
# 1.0 1.0
# 1.1 117.39 ← exploderar
Behärskning innebär
- Beräknar egenvärden för en 2×2-matris
- Tolkar egenvärden som skalfaktorer i egenriktningar
- Kopplar spektrum till stabilitet
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Wikipedia — Egenvärden och egenvektorer (CC BY-SA 4.0) — CC BY-SA 4.0
- 3Blue1Brown — Essence of Linear Algebra — fri läsning