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