Preskočiť na obsah
coden

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.

14 minút Matěj Žalmánek 2026-10-15

Séria Základy AI Diel 9 z 52
  1. Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
  2. Stručná história umelej inteligencie: od Turinga po jazykové modely
  3. Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
  4. Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
  6. Funkcie a zobrazenia: prečo je každý model v AI funkcia
  7. Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
  8. Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
  9. Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
  10. Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
  11. Gradientný zostup: ako sa model učí
  12. Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
  13. Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
  14. Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
  15. Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
  16. Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
  17. Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
  18. Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
  19. Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
  20. Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
  21. Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
  22. Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
  23. Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
  24. Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
  25. Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
  26. Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
  27. Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
  28. Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
  29. Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
  30. Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
  31. Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
  32. Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
  33. Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
  34. Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
  35. Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
  36. Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
  38. Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
  39. Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
  40. Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
  41. Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
  42. Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
  43. Prompty, kontext a RAG: ako modelu dať správne informácie
  44. Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
  45. Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
  46. Difúzne modely: ako sa z čistého šumu stane obrázok
  47. Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
  48. Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
  49. Policy gradient a PPO: učenie priamo stratégie
  50. Ako funguje AI agent: jazykový model v slučke s nástrojmi
  51. Programovanie s AI agentmi: zadanie, testy a kontrola
  52. Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť

Celá osnova série Hotovo: 52 z 83 tém

Čo si odnesiete
  • Č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ášť.

Laicky povedané

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.

012345 0123 u = (3, 1) v = (1, 2) u + v = (4, 3) súradnica x (bez jednotky) súradnica y (bez jednotky)
Súčet vektorov je uhlopriečka rovnobežníka
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.

Laicky povedané

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
Skalárny súčin meria zhodu aj veľkosť zároveň; vydelením dĺžkami zostane čistý smer.
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.

Laicky povedané

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
Každý výstup je vážený súčet všetkých vstupov; matica je tabuľka tých váh.
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:

  1. (aditivita) pre všetky u, v ∈ ℝn platí f(u + v) = f(u) + f(v);
  2. (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].

x (bez jednotky) y (bez jednotky) otočenie o 90°
[0 -1; 1 0] · plocha × 1
x (bez jednotky) y (bez jednotky) zväčšenie 1,5×
[1,5 0; 0 1,5] · plocha × 2,25
x (bez jednotky) y (bez jednotky) skosenie
[1 1; 0 1] · plocha × 1
x (bez jednotky) y (bez jednotky) projekcia na os x
[1 0; 0 0] · plocha × 0
Štyri matice a čo urobia s rovinou
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

Laicky povedané

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í:

  1. (zloženie) pre každé x ∈ ℝn je (AB)x = A(Bx) — súčin matíc je zloženie zobrazení, najprv B, potom A;
  2. (asociatívnosť) pre každú C ∈ ℝn×p, p ≥ 1, je (AB)C = A(BC);
  3. (nekomutatívnosť) vo všeobecnosti AB ≠ BA: existujú A, B ∈ ℝ2×2 s AB ≠ BA (príklad R, Z nižšie).
Laicky povedané

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
Lineárny krok (váhy a posun) a po ňom nelinearita — to je celá vrstva.

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.

Laicky povedané

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ť
Overenie: [d −b; −c a] · [a b; c d] = [ad − bc  0; 0  ad − bc].
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.

Laicky povedané

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.

λ = 3,62 λ = 1,38 súradnica x (bez jednotky) súradnica y (bez jednotky)
Matica A = [2 1; 1 3] zmení kružnicu na elipsu; oranžové osi sú vlastné vektory jednotková kružnica → jej obraz

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
KrokOdhad λ1v po kroku
12(0,894; 0,447)
23(0,707; 0,707)
33,5(0,600; 0,800)
43,6(0,555; 0,832)
53,615(0,537; 0,844)
63,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.

Agent na vašom počítači, ovládaný z telefónu