Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
Vektory, skalárny súčin a kosínusová podobnosť, matice ako transformácie, determinant, vrstva neurónovej siete ako Wx + b a vlastné vektory — s obrázkami, ktoré vypočíta kód.
Séria Základy AI Diel 9 z 52
- Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
- Stručná história umelej inteligencie: od Turinga po jazykové modely
- Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
- Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
- Funkcie a zobrazenia: prečo je každý model v AI funkcia
- Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
- Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
- Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
- Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
- Gradientný zostup: ako sa model učí
- Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
- Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
- Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
- Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
- Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
- Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
- Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
- Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
- Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
- Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
- Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
- Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
- Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
- Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
- Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
- Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
- Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
- Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
- Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
- Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
- Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
- Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
- Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
- Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
- Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
- Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
- Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
- Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
- Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
- Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
- Prompty, kontext a RAG: ako modelu dať správne informácie
- Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
- Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
- Difúzne modely: ako sa z čistého šumu stane obrázok
- Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
- Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
- Policy gradient a PPO: učenie priamo stratégie
- Ako funguje AI agent: jazykový model v slučke s nástrojmi
- Programovanie s AI agentmi: zadanie, testy a kontrola
- Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť
Celá osnova série Hotovo: 52 z 83 tém
- Čo je vektor a skalárny súčin — a ako sa z nich počíta podobnosť slov.
- Prečo je matica transformácia priestoru, čo hovorí determinant a prečo je násobenie matíc skladanie.
- Že vrstva neurónovej siete je Wx + b s nelinearitou a čo sú vlastné vektory, na ktorých stojí PCA.
Čo sa hodí vedieť vopred: Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory, Funkcie a zobrazenia: prečo je každý model v AI funkcia
Keby ste rozobrali ľubovoľný model umelej inteligencie až na dreň, našli by ste hlavne jednu operáciu: násobenie matíc. Obrázok je pre model tabuľka čísel, slovo je zoznam čísel, vrstva neurónovej siete je matica a grafické karty sú také dôležité preto, že vedia násobiť matice rýchlejšie než čokoľvek iné. Lineárna algebra je jazyk, v ktorom AI počíta.
Nepôjdeme do šírky celej vysokoškolskej látky. Prejdeme len to, čo budete potrebovať v ďalších dieloch — a pri každom pojme ukážeme, kde v AI sedí.
1. Vektory: šípka aj zoznam čísel
Definícia — vektor a operácie s ním
Nech n ∈ ℕ, n ≥ 1. Množina všetkých usporiadaných n-tíc reálnych čísel je
ℝn = {(u1, …, un) : ui ∈ ℝ pre i = 1, …, n}.
Jej prvky u = (u1, …, un) ∈ ℝn nazývame vektory a čísla ui ∈ ℝ ich zložkami. Dva vektory u, v ∈ ℝn sa rovnajú práve vtedy, keď ui = vi pre všetky i = 1, …, n.
Nech u, v ∈ ℝn a c ∈ ℝ. Súčet vektorov a násobok vektora číslom sú vektory z ℝn definované po zložkách:
u + v = (u1 + v1, …, un + vn), cu = (cu1, …, cun).
Rozdiel je u − v = u + (−1)v a nulový vektor je 0 = (0, …, 0) ∈ ℝn.
Nech k ∈ ℕ, k ≥ 1, v1, …, vk ∈ ℝn sú vektory (index tu čísluje vektory, nie zložky) a c1, …, ck ∈ ℝ. Lineárna kombinácia vektorov v1, …, vk s koeficientmi c1, …, ck je vektor
c1v1 + … + ckvk = ∑j=1k cjvj ∈ ℝn.
Vektor teda sčítame a násobíme číslom tak, že to isté urobíme s každou zložkou zvlášť.
Vektor má dve tváre. Pre počítač je to zoznam čísel — cena, plocha a vek bytu. Pre predstavivosť je to šípka z počiatku do bodu. Sčítanie vektorov je skladanie šípok za seba: kto ide najprv podľa u a potom podľa v, skončí v u + v.
Príklad — súčet, násobok a lineárna kombinácia
Pre u = (3, 1) a v = (1, 2) z obrázka:
u + v = (3 + 1, 1 + 2) = (4, 3)
2u = (2 · 3, 2 · 1) = (6, 2)
2u − v = (6 − 1, 2 − 2) = (5, 0)
Posledný riadok je lineárna kombinácia s koeficientmi c1 = 2, c2 = −1. Každý vektor roviny sa dá z u a v poskladať ako c1u + c2v, pretože nemieria rovnakým smerom — ako koeficienty nájsť, ukáže oddiel o sústavách rovníc.
V AI je vektorom takmer všetko. Čiernobiely obrázok 28 × 28 pixelov je vektor v ℝ784. Slovo v jazykovom modeli je vektor so stovkami až tisíckami zložiek — takzvané vnorenie (embedding). A parametre celého modelu sú jeden obrovský vektor θ.
2. Skalárny súčin, dĺžka a podobnosť
Definícia — skalárny súčin, norma, uhol
Nech n ≥ 1 a u, v ∈ ℝn. Skalárny súčin vektorov u a v je reálne číslo
u · v = ∑i=1n uivi = u1v1 + … + unvn,
označuje sa aj u⊤v (pozri transpozíciu nižšie).
Dĺžka (euklidovská norma) vektora u ∈ ℝn je nezáporné číslo
‖u‖ = √u · u = √u12 + … + un2.
Nech navyše u ≠ 0 a v ≠ 0. Uhol vektorov u a v je jediné číslo φ ∈ [0, π], pre ktoré
cos φ = u · v/‖u‖ ‖v‖;
také φ existuje, pretože zlomok leží v [−1, 1] (Cauchyho–Schwarzova nerovnosť nižšie). Vektory u, v ∈ ℝn sú kolmé (ortogonálne) práve vtedy, keď u · v = 0.
Skalárny súčin vynásobí zodpovedajúce čísla a sčíta ich. Výsledok hovorí, nakoľko dva vektory „mieria rovnakým smerom“: kladný a veľký — podobne, nula — kolmo, záporný — proti sebe.
Pre u = (3, 1) a v = (1, 2) je u · v = 3 · 1 + 1 · 2 = 5, ‖u‖ = √10 ≈ 3,16, ‖v‖ = √5 ≈ 2,24, teda ‖u‖ ‖v‖ = √50, a cos φ = 5/√50 ≈ 0,71 — vektory zvierajú uhol 45° (farby podľa vzorca nižšie).
cos φ = u · v/‖u‖ ‖v‖
- cos φ
- kosínusová podobnosť — číslo od −1 do 1, ktoré závisí len od smeru: 1 rovnaký smer, 0 kolmo, −1 opačne
- u · v
- skalárny súčin — rastie, keď sa veľké zložky stretnú s rovnakými znamienkami; to je samotné jadro „zhody“
- ‖u‖ ‖v‖
- súčin dĺžok — delením odstránime vplyv veľkosti; bez neho by dlhý vektor (dlhý dokument) vyzeral podobný všetkému
Veta — Cauchyho–Schwarzova nerovnosť
Nech n ≥ 1 a u, v ∈ ℝn. Potom
|u · v| ≤ ‖u‖ ‖v‖.
Pre u, v ≠ 0 teda −1 ≤ u · v/‖u‖ ‖v‖ ≤ 1, kosínusová podobnosť nikdy nevyjde mimo intervalu [−1, 1] a uhol φ je dobre definovaný.
Dôkaz. Pre v = 0 sú obe strany nulové. Inak ‖v‖ > 0 a pre každé t ∈ ℝ je 0 ≤ ‖u − tv‖2 = ‖u‖2 − 2t(u · v) + t2‖v‖2. Kvadratický polynóm v t, ktorý nikdy nie je záporný, má diskriminant ≤ 0: 4(u · v)2 − 4‖u‖2‖v‖2 ≤ 0, t. j. (u · v)2 ≤ ‖u‖2‖v‖2. Odmocnením (obe strany sú nezáporné) dostaneme tvrdenie. ∎
Kosínus uhla je v AI slávny ako kosínusová podobnosť. Predstavte si hračkové vnorenie slov s tromi zložkami „zviera, domáce, má kolesá“: mačka (0,9; 0,8; 0), pes (0,85; 0,9; 0,05), auto (0; 0,3; 0,95). Podobnosť mačky a psa vyjde 0,995, mačky a auta len 0,20. Presne tak vyhľadávače hľadajú „podobné“ dokumenty a jazykové modely „podobné“ slová — len v stovkách rozmerov namiesto troch.
Príklad — kosínusová podobnosť krok za krokom
mačka · pes = 0,9 · 0,85 + 0,8 · 0,9 + 0 · 0,05 = 0,765 + 0,72 + 0 = 1,485
‖mačka‖ = √0,81 + 0,64 + 0 = √1,45 ≈ 1,204, ‖pes‖ = √0,7225 + 0,81 + 0,0025 = √1,535 ≈ 1,239
cos = 1,485/1,204 · 1,239 ≈ 1,485/1,492 ≈ 0,995
mačka · auto = 0 + 0,8 · 0,3 + 0 = 0,24, ‖auto‖ = √0,9925 ≈ 0,996
cos = 0,24/1,204 · 0,996 ≈ 0,24/1,200 ≈ 0,20
Farby zodpovedajú členom vzorca kosínusovej podobnosti vyššie: skalárny súčin, súčin dĺžok, výsledok. Mačka a auto majú spoločnú len zložku „domáce“ (0,8 · 0,3), a aj tá je pri aute malá.
3. Matice a násobenie vektorom
Definícia — matica a súčin matice s vektorom
Nech m, n ∈ ℕ, m, n ≥ 1. Matica typu m × n je súbor m · n reálnych čísel Aij ∈ ℝ, i = 1, …, m, j = 1, …, n, zapísaný do tabuľky s m riadkami a n stĺpcami; Aij je prvok v i-tom riadku a j-tom stĺpci. Formálne je to zobrazenie A : {1, …, m} × {1, …, n} → ℝ, (i, j) ↦ Aij. Množinu všetkých takých matíc označujeme ℝm×n. V texte zapisujeme maticu po riadkoch, riadky oddelené bodkočiarkou: [2 1; 1 3] má prvý riadok (2, 1) a druhý (1, 3).
Nech A ∈ ℝm×n a x ∈ ℝn. Súčin matice s vektorom je vektor Ax ∈ ℝm so zložkami
(Ax)i = ∑j=1n Aijxj, i = 1, …, m.
i-tá zložka výsledku je teda skalárny súčin i-tého riadku (Ai1, …, Ain) s vektorom x. Súčin je definovaný práve vtedy, keď má x toľko zložiek, koľko má A stĺpcov.
Matica je stroj na vektory: vložíte vektor a dostanete iný. Každý riadok matice urobí so vstupom skalárny súčin a výsledok je jedna zložka výstupu.
A = [2 1; 1 3], x = (1, 2)
Ax = (2 · 1 + 1 · 2, 1 · 1 + 3 · 2) = (4, 7)
(farby podľa vzorca nižšie)
(Ax)i = ∑j=1n Aij xj
- (Ax)i
- i-tá zložka výstupu — každá sa počíta zvlášť z jedného riadku, preto má výstup toľko zložiek, koľko má matica riadkov
- ∑j=1n
- súčet cez stĺpce — zbiera príspevky všetkých vstupov; preto musí mať x presne toľko zložiek, koľko má A stĺpcov
- Aij
- váha — koľko j-tá zložka vstupu prispeje do i-tej zložky výstupu (v sieti je to váha spoja)
- xj
- j-tá zložka vstupu — to, čo sa váži
Definícia — transpozícia a jednotková matica
Nech m, n ≥ 1 a A ∈ ℝm×n. Transponovaná matica k A je matica A⊤ ∈ ℝn×m s prvkami
(A⊤)ij = Aji, i = 1, …, n, j = 1, …, m.
Vznikne teda zámenou riadkov a stĺpcov. Vektor u ∈ ℝn stotožňujeme s maticou typu n × 1 (stĺpcom); potom u⊤ ∈ ℝ1×n je riadok a pre u, v ∈ ℝn je u⊤v = u · v (riadok krát stĺpec dá skalárny súčin).
Štvorcová matica A ∈ ℝn×n je symetrická práve vtedy, keď A⊤ = A, t. j. Aij = Aji pre všetky i, j = 1, …, n (napríklad [2 1; 1 3]).
Nech n ≥ 1. Jednotková matica I = In ∈ ℝn×n je matica s prvkami
Iij = 1 pre i = j, Iij = 0 pre i ≠ j (i, j = 1, …, n),
t. j. jednotky na diagonále a inde nuly. Pre každé x ∈ ℝn platí (Ix)i = ∑j Iijxj = xi, teda Ix = x — je to transformácia „nerob nič“.
Príklad: [0,5 −1 2; 1 0 −0,5]⊤ = [0,5 1; −1 0; 2 −0,5].
4. Matica ako transformácia priestoru
Najlepší spôsob, ako maticu „vidieť“, je pozrieť sa, čo urobí s rovinou. Každá matica 2 × 2 prenesie mriežku na inú mriežku — priamky zostanú priamkami a počiatok zostane na mieste. Preto sa tomu hovorí lineárne zobrazenie. Sivá je pôvodná mriežka, zelená po transformácii, oranžový je obraz jednotkového štvorca:
Definícia — lineárne zobrazenie; veta o stĺpcoch matice
Nech m, n ≥ 1. Zobrazenie f : ℝn → ℝm je lineárne práve vtedy, keď spĺňa obe podmienky:
- (aditivita) pre všetky u, v ∈ ℝn platí f(u + v) = f(u) + f(v);
- (homogenita) pre všetky c ∈ ℝ a u ∈ ℝn platí f(cu) = c f(u).
Z podmienky 2 pre c = 0 vyplýva f(0) = f(0 · 0) = 0 · f(0) = 0 — počiatok zostane na mieste.
Veta. Nech f : ℝn → ℝm je lineárne a pre j = 1, …, n je ej ∈ ℝn j-tý jednotkový vektor (na j-tom mieste 1, inde 0). Potom existuje práve jedna matica A ∈ ℝm×n taká, že f(x) = Ax pre všetky x ∈ ℝn, a jej j-tý stĺpec je f(ej). Naopak každé zobrazenie x ↦ Ax je lineárne.
Dôkaz: Každé x ∈ ℝn je x = x1e1 + … + xnen, takže z linearity f(x) = x1f(e1) + … + xnf(en), a to je presne Ax pre maticu so stĺpcami f(ej). Jednoznačnosť: Aej je j-tý stĺpec A, takže stĺpce sú určené hodnotami f(ej). Linearita x ↦ Ax vyplýva priamo z definície súčinu po zložkách. ∎
Príklad: otočenie o 90° pošle e1 = (1, 0) na (0, 1) a e2 = (0, 1) na (−1, 0). Tieto dva vektory postavené do stĺpcov dajú R = [0 −1; 1 0].
[0 -1; 1 0] · plocha × 1
[1,5 0; 0 1,5] · plocha × 2,25
[1 1; 0 1] · plocha × 1
[1 0; 0 0] · plocha × 0
Definícia — determinant matice 2 × 2
Nech a, b, c, d ∈ ℝ a A = [a b; c d] ∈ ℝ2×2. Determinant matice A je reálne číslo
det A = ad − bc.
Geometrický význam (tvrdenie, nie súčasť definície): zobrazenie x ↦ Ax pošle jednotkový štvorec [0, 1] × [0, 1] na rovnobežník so stranami (a, c) a (b, d) a plochou |det A|; všeobecne každý útvar s plochou S na útvar s plochou |det A| · S. |det A| je teda faktor zmeny plochy.
Ak je det A < 0, transformácia rovinu navyše zrkadlí (prehodí „v smere“ a „proti smeru hodinových ručičiek“); ak je det A = 0, sploští rovinu na priamku alebo bod.
Príklad — determinanty štyroch matíc z obrázka
otočenie: det [0 −1; 1 0] = 0 · 0 − (−1) · 1 = 1
zväčšenie: det [1,5 0; 0 1,5] = 1,5 · 1,5 − 0 · 0 = 2,25
skosenie: det [1 1; 0 1] = 1 · 1 − 1 · 0 = 1
projekcia: det [1 0; 0 0] = 1 · 0 − 0 · 0 = 0
Determinant hovorí, koľkokrát matica zväčší plochy. Otočenie a skosenie plochu nemenia (det = 1), zväčšenie 1,5× ju zväčší 2,25× a projekcia rovinu sploští na priamku — plocha aj determinant sú nula, a čo sa raz sploštilo, už sa späť neroztiahne.
5. Násobenie matíc je skladanie
Definícia — súčin matíc
Nech m, k, n ≥ 1, A ∈ ℝm×k a B ∈ ℝk×n (počet stĺpcov A sa rovná počtu riadkov B). Súčin matíc A a B je matica AB ∈ ℝm×n s prvkami
(AB)ij = ∑l=1k AilBlj, i = 1, …, m, j = 1, …, n.
Prvok (i, j) je teda skalárny súčin i-tého riadku A s j-tým stĺpcom B. Pre tento súčin platí:
- (zloženie) pre každé x ∈ ℝn je (AB)x = A(Bx) — súčin matíc je zloženie zobrazení, najprv B, potom A;
- (asociatívnosť) pre každú C ∈ ℝn×p, p ≥ 1, je (AB)C = A(BC);
- (nekomutatívnosť) vo všeobecnosti AB ≠ BA: existujú A, B ∈ ℝ2×2 s AB ≠ BA (príklad R, Z nižšie).
Vynásobiť dve matice znamená spojiť dva stroje za seba do jedného. A rovnako ako pri funkciách záleží na poradí: otočiť a potom skosiť dopadne inak než skosiť a potom otočiť.
R = [0 −1; 1 0] (otočenie), Z = [1 1; 0 1] (skosenie)
RZ = [0 −1; 1 1], ZR = [1 −1; 1 0]
Príklad — súčin RZ prvok po prvku
Prvok (i, j) je skalárny súčin i-tého riadku R s j-tým stĺpcom Z:
(1, 1): (0, −1) · (1, 0) = 0 · 1 + (−1) · 0 = 0 (1, 2): (0, −1) · (1, 1) = 0 − 1 = −1
(2, 1): (1, 0) · (1, 0) = 1 (2, 2): (1, 0) · (1, 1) = 1
Kontrola na vektore x = (1, 2): Zx = (3, 2), R(Zx) = (−2, 3) a rovnako (RZ)x = (0 − 2, 1 + 2) = (−2, 3).
Priamo podľa definície sa súčin počíta tromi vnorenými cyklami:
def soucin(A, B): # A je m × k, B je k × n
m, k, n = len(A), len(B), len(B[0])
C = [[0] * n for _ in range(m)]
for i in range(m): # každý riadok výsledku
for j in range(n): # každý stĺpec výsledku
for l in range(k): # skalárny súčin riadku A so stĺpcom B
C[i][j] += A[i][l] * B[l][j]
return C
To je m · k · n násobení: pre dve matice 1000 × 1000 miliarda. Všetky sú však navzájom nezávislé, takže ich grafická karta môže robiť tisíce naraz.
6. Vrstva neurónovej siete je matica
Teraz sa už dá presne povedať, čo robí jedna vrstva neurónovej siete:
y = ReLU(W x + b)
- y ∈ ℝm
- výstup vrstvy — m čísel, ktoré dostane ďalšia vrstva ako svoj vstup
- ReLU
- max(0, ·) po zložkách — jediná nelineárna časť; bez nej by sa celá sieť zliala do jednej matice (pozri vetu nižšie)
- W ∈ ℝm×n
- váhy — každý riadok je jeden neurón, ktorý vstup váži po svojom; toto sa sieť učí
- x ∈ ℝn
- vstup — dáta alebo výstup predchádzajúcej vrstvy
- b ∈ ℝm
- posun (bias) — Wx je pre x = 0 vždy nula; posun dovolí neurónu „zopnúť“ aj inde než v počiatku
Matica W (váhy) a vektor b (posun) sú parametre, ktoré sa sieť učí. Pre W = [0,5 −1 2; 1 0 −0,5], vstup x = (1, 2, 3) a b = (0, −1) (farby podľa vzorca vyššie):
Wx = (0,5 · 1 + (−1) · 2 + 2 · 3, 1 · 1 + 0 · 2 + (−0,5) · 3) = (0,5 − 2 + 6, 1 + 0 − 1,5) = (4,5; −0,5)
Wx + b = (4,5 + 0; −0,5 + (−1)) = (4,5; −1,5), ReLU → y = (4,5; 0)
Vrstva previedla tri čísla na dve a záporné vynulovala. Hlboká sieť je rad takých krokov za sebou — a bez nelineárnej funkcie (ReLU, sigmoida) by sa celá zrútila do jedinej matice, pretože zloženie lineárnych zobrazení je opäť lineárne zobrazenie. Keď sieť spracúva viac vstupov naraz (dávku), poskladá ich do matice X a celá dávka sa vypočíta jedným násobením WX — a to je presne tá operácia, ktorú grafické karty zvládajú najrýchlejšie.
Veta — dve lineárne vrstvy bez nelinearity sú jedna
Nech n, k, m ≥ 1, W1 ∈ ℝk×n, b1 ∈ ℝk, W2 ∈ ℝm×k a b2 ∈ ℝm. Položme W = W2W1 ∈ ℝm×n a b = W2b1 + b2 ∈ ℝm. Potom pre každé x ∈ ℝn platí
W2(W1x + b1) + b2 = (W2W1)x + (W2b1 + b2) = Wx + b.
Dôkaz: roznásobenie zátvorky (distributívnosť) a asociatívnosť násobenia matíc. ∎ Indukciou to isté platí pre ľubovoľný počet vrstiev — sto lineárnych vrstiev dokáže presne to isté čo jedna.
7. Inverzná matica a sústavy rovníc
Definícia — inverzná matica
Nech n ≥ 1, A ∈ ℝn×n a I ∈ ℝn×n je jednotková matica. Matica A je regulárna (invertovateľná) práve vtedy, keď
∃ B ∈ ℝn×n : BA = AB = I.
Taká matica B je najviac jedna (ak je aj B′A = AB′ = I, potom B′ = B′I = B′AB = IB = B); nazýva sa inverzná matica k A a označuje A−1. Matica, ktorá nie je regulárna, je singulárna.
Veta. Nech A = [a b; c d] ∈ ℝ2×2. Potom A je regulárna práve vtedy, keď det A = ad − bc ≠ 0, a v tom prípade
A−1 = 1/ad − bc · [d −b; −c a].
(Pre všeobecné n platí to isté kritérium det A ≠ 0 s determinantom matice n × n, ktorý tento diel nezavádza.) Ak je A ∈ ℝn×n regulárna a y ∈ ℝn, má sústava Ax = y práve jedno riešenie x = A−1y.
Inverzná matica vracia transformáciu späť. Ide to len vtedy, keď matica priestor nesploštila — a práve to stráži determinant.
A−1 = 1/ad − bc · [d −b; −c a]
- A−1
- inverzia — matica, ktorá výsledok Ax vráti späť na x
- 1/ad − bc
- jedna delené determinantom, vracia plochu — A plochy |det A|-krát zväčšila, inverzia ich musí rovnako zmenšiť; pri det A = 0 sa delí nulou, a preto inverzia neexistuje
- [d −b; −c a]
- prehodená diagonála a otočené znamienka — presne taká matica, že jej súčin s A je (ad − bc) · I; zostáva už len vydeliť
Príklad — inverzia [2 1; 1 3] a riešenie sústavy
det A = 2 · 3 − 1 · 1 = 5
A−1 = 1/5 · [3 −1; −1 2] = [0,6 −0,2; −0,2 0,4] (farby podľa vzorca vyššie)
sústava 2x1 + x2 = 4, x1 + 3x2 = 7:
x = A−1(4, 7) = (0,6 · 4 − 0,2 · 7, −0,2 · 4 + 0,4 · 7) = (2,4 − 1,4, −0,8 + 2,8) = (1, 2)
Skúška: 2 · 1 + 2 = 4 a 1 + 3 · 2 = 7. Veľké sústavy sa v praxi neriešia cez inverziu, ale Gaussovou elimináciou — je rýchlejšia a numericky stabilnejšia; výsledok je rovnaký.
Pre A = [2 1; 1 3] je det A = 2 · 3 − 1 · 1 = 5 a A−1 = [0,6 −0,2; −0,2 0,4]. Zo známeho výsledku (4, 7) tak dostaneme späť vstup (1, 2). Takto sa v uzavretom tvare počíta aj lineárna regresia — metóda najmenších štvorcov vedie na sústavu (X⊤X)θ = X⊤y.
8. Vlastné čísla a vlastné vektory
Definícia — vlastné číslo a vlastný vektor
Nech n ≥ 1 a A ∈ ℝn×n je štvorcová matica. Číslo λ ∈ ℝ je vlastné číslo matice A práve vtedy, keď
∃ v ∈ ℝn, v ≠ 0 : Av = λv.
Každý taký nenulový vektor v je vlastný vektor matice A prislúchajúci vlastnému číslu λ. (Vo všeobecnosti sa pripúšťajú aj komplexné λ ∈ ℂ a v ∈ ℂn; v tomto diele stačia reálne.)
Platí: λ je vlastné číslo A práve vtedy, keď det(A − λI) = 0 (pre n = 2 s determinantom definovaným vyššie). Spektrálna veta: ak je A symetrická, má n reálnych vlastných čísel (počítané s násobnosťou) a existuje n navzájom kolmých vlastných vektorov dĺžky 1.
Väčšinu vektorov matica otočí inam. Vlastné vektory sú výnimky: matica ich len natiahne alebo skráti, smer zostane. Vlastné číslo hovorí koľkokrát. Sú to „prirodzené osi“ transformácie.
Vlastné čísla matice [2 1; 1 3] sú 5 ± √5/2, teda ≈ 3,62 a ≈ 1,38. Elipsa je v smere prvého vlastného vektora natiahnutá 3,62×, v smere druhého 1,38×. Sivé šípky vo všeobecnom smere sa po transformácii stočia, oranžové osi nie. Na tomto stojí analýza hlavných komponentov (PCA): vlastné vektory kovariančnej matice dát ukazujú smery, v ktorých sa dáta líšia najviac, a vlastné čísla, nakoľko.
Príklad — vlastné čísla a vektory [2 1; 1 3] ručne
Rovnica Av = λv je to isté čo (A − λI)v = 0. Nenulové riešenie existuje len vtedy, keď A − λI sploští rovinu, teda keď má nulový determinant:
det [2 − λ 1; 1 3 − λ] = (2 − λ)(3 − λ) − 1 = λ2 − 5λ + 5 = 0
λ = 5 ± √25 − 20/2 = 5 ± √5/2 ≈ 3,618 a 1,382
pre λ1: prvý riadok (2 − λ1)v1 + v2 = 0 dá v = (1; λ1 − 2) ≈ (1; 1,618), po normovaní ≈ (0,526; 0,851)
Kontrola: súčet vlastných čísel 3,618 + 1,382 = 5 je súčet diagonály (2 + 3) a ich súčin 5 je determinant.
Veľké matice nemajú vzorec pre korene a nikto pre ne nepočíta determinant. Najväčšie vlastné číslo a jeho vektor nájde jednoduchá mocninová metóda: vektor opakovane násobí maticou a skracuje na dĺžku 1. Zložka v smere najsilnejšieho vlastného vektora rastie najrýchlejšie, takže ostatné postupne prerastie:
def mocninna_metoda(A, v, kroky):
v = v / norma(v)
for _ in range(kroky):
Av = A @ v
odhad = v @ Av # Rayleighov podiel v·Av: odhad vlastného čísla
v = Av / norma(Av) # skrátiť na dĺžku 1, nech čísla neutečú
return odhad, v
| Krok | Odhad λ1 | v po kroku |
|---|---|---|
| 1 | 2 | (0,894; 0,447) |
| 2 | 3 | (0,707; 0,707) |
| 3 | 3,5 | (0,600; 0,800) |
| 4 | 3,6 | (0,555; 0,832) |
| 5 | 3,615 | (0,537; 0,844) |
| 6 | 3,618 | (0,530; 0,848) |
Štart z v = (1, 0) a matica [2 1; 1 3]: po šiestich krokoch je odhad 3,618 a vektor sa blíži k (0,526; 0,851). Odchýlka vektora sa v každom kroku zmenší zhruba v pomere λ2/λ1 ≈ 0,38, pri symetrickej matici odchýlka odhadu dokonca s jeho druhou mocninou, ≈ 0,15. Rovnakou myšlienkou pôvodne Google počítal PageRank — vlastný vektor obrovskej matice odkazov medzi stránkami.
9. Lineárna algebra v umelej inteligencii
- Dáta sú matice: riadok je príklad, stĺpec príznak.
- Vnorenia (embeddingy) sú vektory; podobnosť sa meria skalárnym súčinom alebo kosínusom.
- Vrstva siete je Wx + b a nelinearita; tréning mení prvky matíc W.
- Pozornosť (attention) v transformeroch počíta skalárne súčiny všetkých dopytov so všetkými kľúčmi naraz — násobenie matíc QK⊤.
- PCA a kompresia hľadajú vlastné vektory, odporúčacie systémy rozkladajú maticu „používateľ × film“ na súčin menších matíc.
10. Zhrnutie
- Vektor je zoznam čísel aj šípka; sčítava sa po zložkách.
- Skalárny súčin meria, nakoľko dva vektory mieria rovnako — kosínusová podobnosť je jeho normovaná verzia.
- Matica je lineárna transformácia priestoru; determinant hovorí, koľkokrát mení plochu, a nula znamená, že sa transformácia nedá vrátiť.
- Násobenie matíc je skladanie transformácií a vrstva neurónovej siete je Wx + b s nelinearitou.
- Vlastné vektory sú smery, ktoré matica len natiahne — na nich stojí PCA.
Máte na to iný názor? Napíšte na support@coden-app.com.