Přeskočit na obsah
coden

Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí

Vektory, skalární součin a kosinová podobnost, matice jako transformace, determinant, vrstva neuronové sítě jako Wx + b a vlastní vektory — s obrázky, které spočítá kód.

14 minut Matěj Žalmánek 2026-10-15

Série Základy AI Díl 9 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • Co je vektor a skalární součin — a jak se z nich počítá podobnost slov.
  • Proč je matice transformace prostoru, co říká determinant a proč je násobení matic skládání.
  • Že vrstva neuronové sítě je Wx + b s nelinearitou a co jsou vlastní vektory, na kterých stojí PCA.

Co se hodí znát předem: Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory, Funkce a zobrazení: proč je každý model v AI funkce

Kdybyste rozebrali libovolný model umělé inteligence až na dřeň, našli byste hlavně jednu operaci: násobení matic. Obrázek je pro model tabulka čísel, slovo je seznam čísel, vrstva neuronové sítě je matice a grafické karty jsou tak důležité proto, že umějí matice násobit rychleji než cokoliv jiného. Lineární algebra je jazyk, ve kterém AI počítá.

Nepůjdeme do šíře celé vysokoškolské látky. Probereme jen to, co budete potřebovat v dalších dílech — a u každého pojmu ukážeme, kde v AI sedí.

1. Vektory: šipka i seznam čísel

Definice — vektor a operace s ním

Nechť n ∈ ℕ, n ≥ 1. Množina všech uspořádaných n-tic reálných čísel je

ℝn = {(u1, …, un) : ui ∈ ℝ pro i = 1, …, n}.

Její prvky u = (u1, …, un) ∈ ℝn nazýváme vektory a čísla ui ∈ ℝ jejich složkami. Dva vektory u, v ∈ ℝn se rovnají, právě když ui = vi pro všechna i = 1, …, n.

Nechť u, v ∈ ℝn a c ∈ ℝ. Součet vektorů a násobek vektoru číslem jsou vektory z ℝn definované po složkách:

u + v = (u1 + v1, …, un + vn),   cu = (cu1, …, cun).

Rozdíl je u − v = u + (−1)v a nulový vektor je 0 = (0, …, 0) ∈ ℝn.

Nechť k ∈ ℕ, k ≥ 1, v1, …, vk ∈ ℝn jsou vektory (index zde čísluje vektory, ne složky) a c1, …, ck ∈ ℝ. Lineární kombinace vektorů v1, …, vk s koeficienty c1, …, ck je vektor

c1v1 + … + ckvk = ∑j=1k cjvj ∈ ℝn.

Vektor tedy sčítáme a násobíme číslem tak, že totéž uděláme s každou složkou zvlášť.

Laicky řečeno

Vektor má dvě tváře. Pro počítač je to seznam čísel — cena, plocha a stáří bytu. Pro představivost je to šipka z počátku do bodu. Sčítání vektorů je skládání šipek za sebe: kdo jde napřed podle u a pak podle v, skončí v u + v.

012345 0123 u = (3, 1) v = (1, 2) u + v = (4, 3) souřadnice x (bez jednotky) souřadnice y (bez jednotky)
Součet vektorů je úhlopříčka rovnoběžníku
Příklad — součet, násobek a lineární kombinace

Pro u = (3, 1) a v = (1, 2) z obrázku:

u + v = (3 + 1,  1 + 2) = (4, 3)

2u = (2 · 3,  2 · 1) = (6, 2)

2u − v = (6 − 1,  2 − 2) = (5, 0)

Poslední řádek je lineární kombinace s koeficienty c1 = 2, c2 = −1. Každý vektor roviny se dá z u a v poskládat jako c1u + c2v, protože nemíří stejným směrem — jak koeficienty najít, ukáže oddíl o soustavách rovnic.

V AI je vektorem skoro všechno. Černobílý obrázek 28 × 28 pixelů je vektor v ℝ784. Slovo v jazykovém modelu je vektor o stovkách až tisících složek — takzvané vložení (embedding). A parametry celého modelu jsou jeden obří vektor θ.

2. Skalární součin, délka a podobnost

Definice — skalární součin, norma, úhel

Nechť n ≥ 1 a u, v ∈ ℝn. Skalární součin vektorů u a v je reálné číslo

u · v = ∑i=1n uivi = u1v1 + … + unvn,

značí se také u⊤v (viz transpozici níže).

Délka (eukleidovská norma) vektoru u ∈ ℝn je nezáporné číslo

‖u‖ = √u · u = √u12 + … + un2.

Nechť navíc u ≠ 0 a v ≠ 0. Úhel vektorů u a v je jediné číslo φ ∈ [0, π], pro které

cos φ = u · v/‖u‖ ‖v‖;

takové φ existuje, protože zlomek leží v [−1, 1] (Cauchyova–Schwarzova nerovnost níže). Vektory u, v ∈ ℝn jsou kolmé (ortogonální), právě když u · v = 0.

Laicky řečeno

Skalární součin vynásobí odpovídající čísla a sečte je. Výsledek říká, jak moc dva vektory „míří stejným směrem“: kladný a velký — podobně, nula — kolmo, záporný — proti sobě.

Pro u = (3, 1) a v = (1, 2) je u · v = 3 · 1 + 1 · 2 = 5, ‖u‖ = √10 ≈ 3,16, ‖v‖ = √5 ≈ 2,24, tedy ‖u‖ ‖v‖ = √50, a cos φ = 5/√50 ≈ 0,71 — vektory svírají úhel 45° (barvy podle vzorce níže).

cos φ = u · v/‖u‖ ‖v‖

cos φ
kosinová podobnost — číslo od −1 do 1, které záleží jen na směru: 1 stejný směr, 0 kolmo, −1 opačně
u · v
skalární součin — roste, když se velké složky potkají se stejnými znaménky; to je samo jádro „shody“
‖u‖ ‖v‖
součin délek — dělením odstraníme vliv velikosti; bez něj by dlouhý vektor (dlouhý dokument) vypadal podobný všemu
Skalární součin měří shodu i velikost zároveň; vydělením délkami zbude čistý směr.
Věta — Cauchyova–Schwarzova nerovnost

Nechť n ≥ 1 a u, v ∈ ℝn. Pak

|u · v| ≤ ‖u‖ ‖v‖.

Pro u, v ≠ 0 tedy −1 ≤ u · v/‖u‖ ‖v‖ ≤ 1, kosinová podobnost nikdy nevyjde mimo interval [−1, 1] a úhel φ je dobře definovaný.

Důkaz. Pro v = 0 jsou obě strany nulové. Jinak ‖v‖ > 0 a pro každé t ∈ ℝ je 0 ≤ ‖u − tv‖2 = ‖u‖2 − 2t(u · v) + t2‖v‖2. Kvadratický polynom v t, který nikdy není záporný, má diskriminant ≤ 0: 4(u · v)2 − 4‖u‖2‖v‖2 ≤ 0, tj. (u · v)2 ≤ ‖u‖2‖v‖2. Odmocněním (obě strany jsou nezáporné) dostaneme tvrzení. ∎

Kosinus úhlu je v AI slavný jako kosinová podobnost. Představte si hračkové vložení slov se třemi složkami „zvíře, domácí, má kola“: kočka (0,9; 0,8; 0), pes (0,85; 0,9; 0,05), auto (0; 0,3; 0,95). Podobnost kočky a psa vyjde 0,995, kočky a auta jen 0,20. Přesně tak vyhledávače hledají „podobné“ dokumenty a jazykové modely „podobná“ slova — jen ve stovkách rozměrů místo tří.

Příklad — kosinová podobnost krok za krokem

kočka · pes = 0,9 · 0,85 + 0,8 · 0,9 + 0 · 0,05 = 0,765 + 0,72 + 0 = 1,485

‖koč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

koč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

Barvy odpovídají členům vzorce kosinové podobnosti výše: skalární součin, součin délek, výsledek. Kočka a auto mají společnou jen složku „domácí“ (0,8 · 0,3), a i ta je u auta malá.

3. Matice a násobení vektorem

Definice — matice a součin matice s vektorem

Nechť m, n ∈ ℕ, m, n ≥ 1. Matice typu m × n je soubor m · n reálných čísel Aij ∈ ℝ, i = 1, …, m, j = 1, …, n, zapsaný do tabulky s m řádky a n sloupci; Aij je prvek v i-tém řádku a j-tém sloupci. Formálně je to zobrazení A : {1, …, m} × {1, …, n} → ℝ, (i, j) ↦ Aij. Množinu všech takových matic značíme ℝm×n. V textu zapisujeme matici po řádcích, řádky oddělené středníkem: [2 1; 1 3] má první řádek (2, 1) a druhý (1, 3).

Nechť A ∈ ℝm×n a x ∈ ℝn. Součin matice s vektorem je vektor Ax ∈ ℝm se složkami

(Ax)i = ∑j=1n Aijxj,   i = 1, …, m.

i-tá složka výsledku je tedy skalární součin i-tého řádku (Ai1, …, Ain) s vektorem x. Součin je definován, právě když má x tolik složek, kolik má A sloupců.

Laicky řečeno

Matice je stroj na vektory: vložíte vektor a dostanete jiný. Každý řádek matice udělá s vstupem skalární součin a výsledek je jedna složka výstupu.

A = [2 1; 1 3],   x = (1, 2)

Ax = (2 · 1 + 1 · 2,  1 · 1 + 3 · 2) = (4, 7)

(barvy podle vzorce níže)

(Ax)i = ∑j=1n Aij xj

(Ax)i
i-tá složka výstupu — každá se počítá zvlášť z jednoho řádku, proto má výstup tolik složek, kolik má matice řádků
∑j=1n
součet přes sloupce — sbírá příspěvky všech vstupů; proto musí mít x přesně tolik složek, kolik má A sloupců
Aij
váha — kolik j-tá složka vstupu přispěje do i-té složky výstupu (v síti je to váha spoje)
xj
j-tá složka vstupu — to, co se váží
Každý výstup je vážený součet všech vstupů; matice je tabulka těch vah.
Definice — transpozice a jednotková matice

Nechť m, n ≥ 1 a A ∈ ℝm×n. Transponovaná matice k A je matice A⊤ ∈ ℝn×m s prvky

(A⊤)ij = Aji,   i = 1, …, n,  j = 1, …, m.

Vznikne tedy záměnou řádků a sloupců. Vektor u ∈ ℝn ztotožňujeme s maticí typu n × 1 (sloupcem); pak u⊤ ∈ ℝ1×n je řádek a pro u, v ∈ ℝn je u⊤v = u · v (řádek krát sloupec dá skalární součin).

Čtvercová matice A ∈ ℝn×n je symetrická, právě když A⊤ = A, tj. Aij = Aji pro všechna i, j = 1, …, n (třeba [2 1; 1 3]).

Nechť n ≥ 1. Jednotková matice I = In ∈ ℝn×n je matice s prvky

Iij = 1 pro i = j,   Iij = 0 pro i ≠ j   (i, j = 1, …, n),

tj. jedničky na diagonále a jinde nuly. Pro každé x ∈ ℝn platí (Ix)i = ∑j Iijxj = xi, tedy Ix = x — je to transformace „nic nedělej“.

Příklad: [0,5 −1 2; 1 0 −0,5]⊤ = [0,5 1; −1 0; 2 −0,5].

4. Matice jako transformace prostoru

Nejlepší způsob, jak matici „vidět“, je podívat se, co udělá s rovinou. Každá matice 2 × 2 přenese mřížku na jinou mřížku — přímky zůstanou přímkami a počátek zůstane na místě. Proto se tomu říká lineární zobrazení. Šedá je původní mřížka, zelená po transformaci, oranžový je obraz jednotkového čtverce:

Definice — lineární zobrazení; věta o sloupcích matice

Nechť m, n ≥ 1. Zobrazení f : ℝn → ℝm je lineární, právě když splňuje obě podmínky:

  1. (aditivita) pro všechna u, v ∈ ℝn platí f(u + v) = f(u) + f(v);
  2. (homogenita) pro všechna c ∈ ℝ a u ∈ ℝn platí f(cu) = c f(u).

Z podmínky 2 pro c = 0 plyne f(0) = f(0 · 0) = 0 · f(0) = 0 — počátek zůstane na místě.

Věta. Nechť f : ℝn → ℝm je lineární a pro j = 1, …, n je ej ∈ ℝn j-tý jednotkový vektor (na j-tém místě 1, jinde 0). Pak existuje právě jedna matice A ∈ ℝm×n taková, že f(x) = Ax pro všechna x ∈ ℝn, a její j-tý sloupec je f(ej). Naopak každé zobrazení x ↦ Ax je lineární.

Důkaz: Každé x ∈ ℝn je x = x1e1 + … + xnen, takže z linearity f(x) = x1f(e1) + … + xnf(en), a to je přesně Ax pro matici se sloupci f(ej). Jednoznačnost: Aej je j-tý sloupec A, takže sloupce jsou určeny hodnotami f(ej). Linearita x ↦ Ax plyne přímo z definice součinu po složkách. ∎

Příklad: otočení o 90° pošle e1 = (1, 0) na (0, 1) a e2 = (0, 1) na (−1, 0). Tyhle dva vektory postavené do sloupců dají R = [0 −1; 1 0].

x (bez jednotky) y (bez jednotky) otočení o 90°
[0 -1; 1 0] · plocha × 1
x (bez jednotky) y (bez jednotky) zvětšení 1,5×
[1,5 0; 0 1,5] · plocha × 2,25
x (bez jednotky) y (bez jednotky) zkosení
[1 1; 0 1] · plocha × 1
x (bez jednotky) y (bez jednotky) projekce na osu x
[1 0; 0 0] · plocha × 0
Čtyři matice a co udělají s rovinou
Definice — determinant matice 2 × 2

Nechť a, b, c, d ∈ ℝ a A = [a b; c d] ∈ ℝ2×2. Determinant matice A je reálné číslo

det A = ad − bc.

Geometrický význam (tvrzení, ne součást definice): zobrazení x ↦ Ax pošle jednotkový čtverec [0, 1] × [0, 1] na rovnoběžník se stranami (a, c) a (b, d) a plochou |det A|; obecně každý útvar s plochou S na útvar s plochou |det A| · S. |det A| je tedy faktor změny plochy.

Je-li det A < 0, transformace rovinu navíc zrcadlí (prohodí „po směru“ a „proti směru hodinových ručiček“); je-li det A = 0, zploští rovinu na přímku nebo bod.

Příklad — determinanty čtyř matic z obrázku

otočení: det [0 −1; 1 0] = 0 · 0 − (−1) · 1 = 1

zvětšení: det [1,5 0; 0 1,5] = 1,5 · 1,5 − 0 · 0 = 2,25

zkosení: det [1 1; 0 1] = 1 · 1 − 1 · 0 = 1

projekce: det [1 0; 0 0] = 1 · 0 − 0 · 0 = 0

Laicky řečeno

Determinant říká, kolikrát matice zvětší plochy. Otočení a zkosení plochu nemění (det = 1), zvětšení 1,5× ji zvětší 2,25× a projekce rovinu zploští na přímku — plocha i determinant jsou nula, a co se jednou zploštilo, už se zpátky neroztáhne.

5. Násobení matic je skládání

Definice — součin matic

Nechť m, k, n ≥ 1, A ∈ ℝm×k a B ∈ ℝk×n (počet sloupců A se rovná počtu řádků B). Součin matic A a B je matice AB ∈ ℝm×n s prvky

(AB)ij = ∑l=1k AilBlj,   i = 1, …, m,  j = 1, …, n.

Prvek (i, j) je tedy skalární součin i-tého řádku A s j-tým sloupcem B. Pro tento součin platí:

  1. (složení) pro každé x ∈ ℝn je (AB)x = A(Bx) — součin matic je složení zobrazení, nejdřív B, pak A;
  2. (asociativita) pro každou C ∈ ℝn×p, p ≥ 1, je (AB)C = A(BC);
  3. (nekomutativita) obecně AB ≠ BA: existují A, B ∈ ℝ2×2 s AB ≠ BA (příklad R, Z níže).
Laicky řečeno

Vynásobit dvě matice znamená spojit dva stroje za sebe do jednoho. A stejně jako u funkcí záleží na pořadí: otočit a pak zkosit dopadne jinak než zkosit a pak otočit.

R = [0 −1; 1 0] (otočení),   Z = [1 1; 0 1] (zkosení)

RZ = [0 −1; 1 1],   ZR = [1 −1; 1 0]

Příklad — součin RZ prvek po prvku

Prvek (i, j) je skalární součin i-tého řádku R s j-tým sloupcem 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 vektoru x = (1, 2): Zx = (3, 2), R(Zx) = (−2, 3) a stejně tak (RZ)x = (0 − 2, 1 + 2) = (−2, 3).

Přímo podle definice se součin počítá třemi vnořenými cykly:

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ý řádek výsledku
        for j in range(n):            # každý sloupec výsledku
            for l in range(k):        # skalární součin řádku A se sloupcem B
                C[i][j] += A[i][l] * B[l][j]
    return C

To je m · k · n násobení: pro dvě matice 1000 × 1000 miliarda. Všechna jsou ale navzájem nezávislá, takže je grafická karta může dělat tisíce najednou.

6. Vrstva neuronové sítě je matice

Teď už se dá přesně říct, co dělá jedna vrstva neuronové sítě:

y = ReLU(W x + b)

y ∈ ℝm
výstup vrstvy — m čísel, která dostane další vrstva jako svůj vstup
ReLU
max(0, ·) po složkách — jediná nelineární část; bez ní by se celá síť slila do jedné matice (viz větu níž)
W ∈ ℝm×n
váhy — každý řádek je jeden neuron, který vstup váží po svém; tohle se síť učí
x ∈ ℝn
vstup — data nebo výstup předchozí vrstvy
b ∈ ℝm
posun (bias) — Wx je pro x = 0 vždy nula; posun dovolí neuronu „sepnout“ i jinde než v počátku
Lineární krok (váhy a posun) a po něm nelinearita — to je celá vrstva.

Matice W (váhy) a vektor b (posun) jsou parametry, které se síť učí. Pro W = [0,5 −1 2; 1 0 −0,5], vstup x = (1, 2, 3) a b = (0, −1) (barvy podle vzorce výše):

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 převedla tři čísla na dvě a záporné vynulovala. Hluboká síť je řada takových kroků za sebou — a bez nelineární funkce (ReLU, sigmoida) by se celá zhroutila do jediné matice, protože složení lineárních zobrazení je zase lineární zobrazení. Když síť zpracovává víc vstupů najednou (dávku), složí je do matice X a celá dávka se spočítá jedním násobením WX — a to je přesně ta operace, kterou grafické karty umějí nejrychleji.

Věta — dvě lineární vrstvy bez nelinearity jsou 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. Pak pro každé x ∈ ℝn platí

W2(W1x + b1) + b2 = (W2W1)x + (W2b1 + b2) = Wx + b.

Důkaz: roznásobení závorky (distributivita) a asociativita násobení matic. ∎ Indukcí totéž platí pro libovolný počet vrstev — sto lineárních vrstev umí přesně totéž co jedna.

7. Inverzní matice a soustavy rovnic

Definice — inverzní matice

Nechť n ≥ 1, A ∈ ℝn×n a I ∈ ℝn×n je jednotková matice. Matice A je regulární (invertovatelná), právě když

∃ B ∈ ℝn×n :  BA = AB = I.

Taková matice B je nejvýš jedna (je-li i B′A = AB′ = I, pak B′ = B′I = B′AB = IB = B); nazývá se inverzní matice k A a značí A−1. Matice, která regulární není, je singulární.

Věta. Nechť A = [a b; c d] ∈ ℝ2×2. Pak A je regulární, právě když det A = ad − bc ≠ 0, a v tom případě

A−1 = 1/ad − bc · [d −b; −c a].

(Pro obecné n platí totéž kritérium det A ≠ 0 s determinantem matice n × n, který tento díl nezavádí.) Je-li A ∈ ℝn×n regulární a y ∈ ℝn, má soustava Ax = y právě jedno řešení x = A−1y.

Laicky řečeno

Inverzní matice vrací transformaci zpátky. Jde to jen tehdy, když matice prostor nezploštila — a právě to hlídá determinant.

A−1 = 1/ad − bc · [d −b; −c a]

A−1
inverze — matice, která výsledek Ax vrátí zpět na x
1/ad − bc
jedna lomeno determinantem, vrací plochu — A plochy |det A|-krát zvětšila, inverze je musí stejně zmenšit; při det A = 0 se dělí nulou, a proto inverze neexistuje
[d −b; −c a]
prohozená diagonála a otočená znaménka — přesně taková matice, že její součin s A je (ad − bc) · I; zbývá jen vydělit
Ověření: [d −b; −c a] · [a b; c d] = [ad − bc  0; 0  ad − bc].
Příklad — inverze [2 1; 1 3] a řešení soustavy

det A = 2 · 3 − 1 · 1 = 5

A−1 = 1/5 · [3 −1; −1 2] = [0,6 −0,2; −0,2 0,4]   (barvy podle vzorce výše)

soustava 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)

Zkouška: 2 · 1 + 2 = 4 a 1 + 3 · 2 = 7. Velké soustavy se v praxi neřeší přes inverzi, ale Gaussovou eliminací — je rychlejší a numericky stabilnější; výsledek je stejný.

Pro A = [2 1; 1 3] je det A = 2 · 3 − 1 · 1 = 5 a A−1 = [0,6 −0,2; −0,2 0,4]. Ze známého výsledku (4, 7) tak dostaneme zpět vstup (1, 2). Takhle se v uzavřeném tvaru počítá i lineární regrese — metoda nejmenších čtverců vede na soustavu (X⊤X)θ = X⊤y.

8. Vlastní čísla a vlastní vektory

Definice — vlastní číslo a vlastní vektor

Nechť n ≥ 1 a A ∈ ℝn×n je čtvercová matice. Číslo λ ∈ ℝ je vlastní číslo matice A, právě když

∃ v ∈ ℝn, v ≠ 0 :  Av = λv.

Každý takový nenulový vektor v je vlastní vektor matice A příslušný vlastnímu číslu λ. (Obecně se připouštějí i komplexní λ ∈ ℂ a v ∈ ℂn; v tomto díle stačí reálné.)

Platí: λ je vlastní číslo A, právě když det(A − λI) = 0 (pro n = 2 s determinantem definovaným výše). Spektrální věta: je-li A symetrická, má n reálných vlastních čísel (počítáno s násobností) a existuje n navzájem kolmých vlastních vektorů délky 1.

Laicky řečeno

Většinu vektorů matice otočí jinam. Vlastní vektory jsou výjimky: matice je jen natáhne nebo zkrátí, směr zůstane. Vlastní číslo říká kolikrát. Jsou to „přirozené osy“ transformace.

λ = 3,62 λ = 1,38 souřadnice x (bez jednotky) souřadnice y (bez jednotky)
Matice A = [2 1; 1 3] změní kružnici v elipsu; oranžové osy jsou vlastní vektory jednotková kružnice → její obraz

Vlastní čísla matice [2 1; 1 3] jsou 5 ± √5/2, tedy ≈ 3,62 a ≈ 1,38. Elipsa je ve směru prvního vlastního vektoru natažená 3,62×, ve směru druhého 1,38×. Šedé šipky v obecném směru se po transformaci stočí, oranžové osy ne. Na tomhle stojí analýza hlavních komponent (PCA): vlastní vektory kovarianční matice dat ukazují směry, ve kterých se data liší nejvíc, a vlastní čísla, jak moc.

Příklad — vlastní čísla a vektory [2 1; 1 3] ručně

Rovnice Av = λv je totéž co (A − λI)v = 0. Nenulové řešení existuje jen tehdy, když A − λI zploští rovinu, tedy když 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

pro λ1: první řádek (2 − λ1)v1 + v2 = 0 dá v = (1; λ1 − 2) ≈ (1; 1,618), po normování ≈ (0,526; 0,851)

Kontrola: součet vlastních čísel 3,618 + 1,382 = 5 je součet diagonály (2 + 3) a jejich součin 5 je determinant.

Velké matice nemají vzorec pro kořeny a nikdo pro ně nepočítá determinant. Největší vlastní číslo a jeho vektor najde jednoduchá mocninná metoda: vektor opakovaně násobí maticí a zkracuje na délku 1. Složka ve směru nejsilnějšího vlastního vektoru roste nejrychleji, takže ostatní postupně přeroste:

def mocninna_metoda(A, v, kroky):
    v = v / norma(v)
    for _ in range(kroky):
        Av = A @ v
        odhad = v @ Av                # Rayleighův podíl v·Av: odhad vlastního čísla
        v = Av / norma(Av)            # zkrátit na délku 1, ať čísla neutečou
    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)

Start z v = (1, 0) a matice [2 1; 1 3]: po šesti krocích je odhad 3,618 a vektor se blíží (0,526; 0,851). Odchylka vektoru se v každém kroku zmenší zhruba v poměru λ2/λ1 ≈ 0,38, u symetrické matice odchylka odhadu dokonce s jeho druhou mocninou, ≈ 0,15. Stejnou myšlenkou původně Google počítal PageRank — vlastní vektor obří matice odkazů mezi stránkami.

9. Lineární algebra v umělé inteligenci

  • Data jsou matice: řádek je příklad, sloupec příznak.
  • Vložení (embeddingy) jsou vektory; podobnost se měří skalárním součinem nebo kosinem.
  • Vrstva sítě je Wx + b a nelinearita; trénink mění prvky matic W.
  • Pozornost v transformerech počítá skalární součiny všech dotazů se všemi klíči najednou — násobení matic QK⊤.
  • PCA a komprese hledají vlastní vektory, doporučovací systémy rozkládají matici „uživatel × film“ na součin menších matic.

10. Shrnutí

  • Vektor je seznam čísel i šipka; sčítá se po složkách.
  • Skalární součin měří, jak moc dva vektory míří stejně — kosinová podobnost je jeho normovaná verze.
  • Matice je lineární transformace prostoru; determinant říká, kolikrát mění plochu, a nula znamená, že se transformace nedá vrátit.
  • Násobení matic je skládání transformací a vrstva neuronové sítě je Wx + b s nelinearitou.
  • Vlastní vektory jsou směry, které matice jen natáhne — na nich stojí PCA.

Máte na to jiný názor? Napište na support@coden-app.com.

Agent na vašem počítači, ovládaný z telefonu