Mapa umělé inteligence: co je co a jak to do sebe zapadá
Umělá inteligence, strojové učení, hluboké učení, jazykové modely a AI agenti — jak spolu souvisí, na jedné stránce. Úvodní díl série Základy AI.
Série Základy AI Díl 1 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
- Jak do sebe zapadá umělá inteligence, strojové učení, hluboké učení a jazykové modely.
- Dvě velké rodiny AI: systémy, které hledají, a systémy, které se učí.
- Co je AI agent a proč v něm potkáte všechno ostatní.
Umělá inteligence, strojové učení, neuronové sítě, jazykové modely, agenti. Slova, která se dnes používají skoro jako synonyma — a přitom každé znamená něco jiného. Tenhle díl je mapa: ukáže, co je co a jak to do sebe zapadá. Do hloubky jdou další díly série; každý z nich se dá číst i samostatně.
1. Co je umělá inteligence
Definice — racionální agent (Russell a Norvig)
Agent je cokoliv, co vnímá své prostředí pomocí senzorů a působí na něj pomocí akcí. Jeho chování se popisuje takto.
Nechť P je neprázdná množina možných vjemů a A neprázdná množina akcí, které má agent k dispozici. Označme P* množinu všech konečných posloupností vjemů (p1, …, pt), kde t ∈ ℕ a pi ∈ P pro i = 1, …, t. Agentní funkce je funkce
f : P* → A, (p1, …, pt) ↦ f(p1, …, pt),
která každé dosavadní historii vjemů přiřadí akci, kterou agent provede.
Nechť dále U je míra výkonu — číslo, které hodnotí, jak dobře agent v prostředí uspěl — a pro historii (p1, …, pt) ∈ P* a akci a ∈ A nechť E[U | p1, …, pt, a] je očekávaná hodnota U za předpokladu, že agent po této historii provede akci a (spočtená z toho, co agent o prostředí ví). Předpokládejme, že maximum níže existuje (např. je-li A konečná). Agent f je racionální, právě když
∀ (p1, …, pt) ∈ P* : f(p1, …, pt) ∈ argmaxa ∈ A E[U | p1, …, pt, a].
Racionální agent tedy po každé historii vjemů zvolí některou z akcí s největší očekávanou mírou výkonu (je-li jich víc, je jedno kterou).
Umělá inteligence je v pojetí Russella a Norviga obor, který racionální agenty navrhuje a staví. To už je popis oboru, ne matematický pojem — formální definice umělé inteligence neexistuje.
Umělá inteligence je obor, který se snaží postavit programy, co se rozhodují rozumně: dívají se, co se kolem děje, a volí to, co nejspíš povede k cíli. Šachový program, navigace i chatbot jsou umělá inteligence — jen každý řeší jinou úlohu a jinými prostředky.
Racionalitu jde zapsat jedním vzorcem — agent volí akci s nejlepším očekávaným výsledkem:
a* = argmaxa ∈ A E[ U | p1, …, pt, a ]
- a*
- akce, kterou agent provede — výstup celé funkce f
- argmaxa ∈ A
- vyzkoušej v úvaze všechny dostupné akce a vezmi tu nejlepší; tady se rozhoduje
- E
- očekávaná (průměrná) hodnota — svět je nejistý, stejná akce může dopadnout různě, a tak se výsledky váží pravděpodobnostmi
- U
- míra výkonu (užitek) — co znamená „dobře“; bez ní by nebylo podle čeho vybírat
- p1, …, pt
- všechno, co agent dosud vnímal — rozhoduje jen podle toho, co ví, ne podle skutečného stavu světa
Příklad — navigace volí trasu
Užitek U je záporně vzatý čas jízdy v minutách. Po dálnici je to 20 minut, ale s pravděpodobností 0,3 bude zácpa a 50 minut; okreskou vždy 30 minut. Barvy odpovídají členům vzorce výše.
Dálnice: E[U | …, dálnice] = 0,7 · (−20) + 0,3 · (−50) = −14 − 15 = −29. Okreska: E[U | …, okreska] = −30 = −30.
a* = argmaxa ∈ {dálnice, okreska} E[U | …, a] = dálnice, protože −29 > −30. Racionální agent zvolí dálnici — v průměru je o minutu rychlejší, i když zhruba ve třetině případů dopadne hůř.
Celá oblast se dá nakreslit jako do sebe vnořené množiny. Hluboké učení je druh strojového učení, strojové učení je jedna z cest k umělé inteligenci — a AI agent dnes často kombinuje obojí, hledání i učení:
2. AI, která hledá
Nejstarší rodina AI se nic neučí. Dostane přesný popis úlohy — kde začínám, co můžu udělat, kam se chci dostat — a prohledává možnosti, dokud nenajde řešení. Tak funguje navigace, která hledá nejkratší trasu, šachový program, který propočítává tahy dopředu, nebo plánovač rozvrhu.
Výhoda: když je úloha dobře popsaná, výsledek je spolehlivý a dá se dokázat, že je nejlepší možný. Nevýhoda: někdo musí úlohu přesně popsat — a svět se přesně popsat nedá skoro nikdy.
Definice — úloha prohledávání
Úloha prohledávání je šestice (S, s0, A, T, G, c), kde
- S je neprázdná množina stavů;
- s0 ∈ S je počáteční stav;
- A je funkce, která každému stavu s ∈ S přiřadí množinu A(s) akcí použitelných ve stavu s;
- T je přechodová funkce: pro každé s ∈ S a a ∈ A(s) je T(s, a) ∈ S stav, do kterého akce a ze stavu s vede;
- G ⊆ S je množina cílových stavů;
- c je cena kroku: pro každé s ∈ S a a ∈ A(s) je c(s, a) ∈ ℝ, c(s, a) ≥ 0.
Řešení úlohy je posloupnost akcí (a1, …, ak), k ∈ ℕ, spolu se stavy s1, …, sk ∈ S takovými, že
- ai ∈ A(si−1) a si = T(si−1, ai) pro každé i = 1, …, k;
- sk ∈ G.
Cena řešení je
C(a1, …, ak) = ∑i=1k c(si−1, ai).
Řešení je optimální, právě když jeho cena je menší nebo rovna ceně každého jiného řešení. Řešení je tedy cesta z počátečního stavu do cíle po povolených krocích; optimální je ta nejlevnější.
U navigace jsou stavy křižovatky, akce „jeď touhle ulicí“, cíl je adresa a cena kroku délka ulice. Kdo umí úlohu takhle popsat, může na ni pustit obecný algoritmus — ten nemusí vědět nic o mapách.
hledej(s₀):
hranice ← [s₀] # stavy, kam umíme dojít, ale ještě jsme je nerozvinuli
navštívené ← {s₀}
dokud hranice není prázdná:
s ← vyjmi stav z hranice # KTERÝ stav, určuje druh hledání
jestliže s ∈ G: vrať cestu do s
pro každou akci a ∈ A(s):
s′ ← T(s, a)
jestliže s′ ∉ navštívené:
přidej s′ do navštívené a do hranice
vrať „řešení neexistuje“
Háček je v počtu možností: má-li každý stav b pokračování, je po d krocích až bd cest. V šachu je typicky b ≈ 35, a propočítat jen pět tahů každé strany (d = 10) znamená 3510 ≈ 2,8 · 1015 pozic. Proto šachové programy nehledají naslepo, ale chytře prořezávají.
Do hloubky: díl 2 — Prohledávání stavového prostoru.
3. AI, která se učí
Definice — strojové učení (T. Mitchell)
Definice pracuje se třemi objekty:
- T — úloha: třída problémů, které má program řešit (např. „rozhodni o e-mailu, zda je spam“);
- P — míra výkonu: předpis, který programu řešícímu T přiřadí číslo, čím vyšší, tím lepší (např. podíl správně zařazených e-mailů);
- E — zkušenost: data, která program dostává (např. e-maily s označením „spam“ / „ne spam“).
Program se učí ze zkušenosti E vzhledem k úloze T a míře výkonu P, právě když se jeho výkon na T, měřený P, zlepšuje se zkušeností E.
Mitchellova definice je slovní a záměrně obecná — „zlepšuje se“ v ní není dál formalizováno. Pro učení s učitelem má přesný tvar, který je rozebraný níže: T je předpovídat odpověď y ze vstupu x, E jsou trénovací dvojice (xi, yi) a výkon je tím lepší, čím menší je průměrná ztráta.
Místo pravidel dostane program příklady a pravidla si z nich odvodí sám. Nikdo mu nenapíše, jak vypadá spam — ukáže se mu tisíc e-mailů a on si všimne, čím se spam liší.
Strojové učení se dělí podle toho, jaký signál model při učení dostává: správné odpovědi (učení s učitelem), jen data bez odpovědí (bez učitele), trochu obojího (s částečným učitelem), odpovědi vyrobené z dat samotných (samoučení), nebo odměny za činy (zpětnovazební učení).
U učení s učitelem jde Mitchellova „míra výkonu“ napsat konkrétně. Nechť (x1, y1), …, (xn, yn), n ≥ 1, jsou trénovací příklady (vstup xi ∈ X a správná odpověď yi ∈ Y), fθ : X → Y model s parametry θ ∈ Θ a L : Y × Y → [0, ∞) ztrátová funkce. Model se učí tak, že hledá parametry s nejmenší průměrnou ztrátou na datech:
θ* = argminθ 1/n ∑i=1n L(fθ(xi), yi)
- θ*
- naučené parametry — výsledek celého tréninku; s nimi pak model běží v provozu
- argminθ
- hledáme ta čísla θ, pro která je chyba nejmenší — „učení“ je tu doslova hledání minima
- 1/n ∑
- průměr přes všech n příkladů — model má být dobrý na všech, ne na jednom; dělení n dělá chybu srovnatelnou pro různě velká data
- L
- ztrátová funkce — převádí „jak moc se model spletl“ na číslo, a tím říká, které chyby jsou horší
- fθ(xi)
- odpověď modelu na i-tý vstup — jediné místo, kde parametry θ do vzorce vstupují
- yi
- správná odpověď od učitele — bez ní by nebylo s čím porovnávat
Příklad — přímka třemi body
Data (x, y): (1, 2), (2, 4), (3, 5), tedy n = 3. Model fw(x) = w · x má jediný parametr w ∈ ℝ; ztráta je čtverec chyby L(ŷ, y) = (ŷ − y)². Barvy odpovídají členům vzorce výše.
- w = 1: odpovědi 1, 2, 3, chyby −1, −2, −2, ztráty 1, 4, 4, průměrná ztráta 1/3 · (1 + 4 + 4) = 3.
- w = 2: odpovědi 2, 4, 6, chyby 0, 0, 1, ztráty 0, 0, 1, průměrná ztráta 1/3 · (0 + 0 + 1) = 1/3 ≈ 0,333.
- Minimum: derivace podle w je nulová pro w* = ∑xiyi/∑xi² = 2 + 8 + 15/1 + 4 + 9 = 25/14 ≈ 1,786, s průměrnou ztrátou 5/42 ≈ 0,119.
U velkých modelů se minimum nedá spočítat vzorcem, a hledá se postupně gradientním sestupem.
Do hloubky: díl 3 — Druhy strojového učení.
4. Hluboké učení a neuronové sítě
Hluboké učení je strojové učení s jedním konkrétním druhem modelu: neuronovou sítí s mnoha vrstvami. Každá vrstva přepočítá vstup trochu jinak — první vrstvy sítě na obrázky poznávají hrany, další tvary, poslední celé předměty. Nikdo jim neřekne, co mají hledat; naučí se to z dat.
Definice — vrstvená neuronová síť
Nechť L ∈ ℕ, L ≥ 1, je počet vrstev a n0, n1, …, nL ≥ 1 jsou jejich šířky (n0 je rozměr vstupu, nL rozměr výstupu). Pro l = 1, …, L nechť
- Wl ∈ ℝnl×nl−1 je matice vah,
- bl ∈ ℝnl je vektor posunů,
a nechť φ : ℝ → ℝ je nelineární aktivační funkce; pro vektor z značí φ(z) vektor, který vznikne použitím φ na každou složku zvlášť. Vrstva l je funkce
fl : ℝnl−1 → ℝnl, fl(h) = φ(Wlh + bl).
Neuronová síť s L vrstvami je složená funkce
f = fL ∘ … ∘ f2 ∘ f1 : ℝn0 → ℝnL, tj. f(x) = fL(… f2(f1(x))).
(U poslední vrstvy se φ často vynechává nebo nahrazuje jinou funkcí, např. softmaxem.) Parametry sítě jsou θ = (W1, b1, …, WL, bL). Vrstvy 1, …, L − 1 se nazývají skryté. Síť je hluboká, když má víc skrytých vrstev (obvykle se myslí L − 1 ≥ 2; ostrá hranice ustálená není).
hl = φ(Wl hl−1 + bl)
- hl
- výstup vrstvy l — nový popis vstupu, se kterým pracuje další vrstva
- φ
- nelinearita (např. ReLU(z) = max(0, z)) — bez ní by se vrstvy složily do jediné lineární funkce a hloubka by nic nepřinesla
- Wl
- váhy — co se síť učí: kolik který vstup přispívá ke kterému neuronu
- hl−1
- výstup předchozí vrstvy (u první je to vstup x) — tady se vrstvy řetězí
- bl
- posun — umožní neuronu „zapnout se“ i tehdy, když jsou vstupy nulové, a posouvá práh
Příklad — jeden neuron s ReLU
Váhy w = (0,5; −1), posun b = 0,2, aktivace φ = ReLU (barvy odpovídají členům vzorce výše).
Pro vstup x = (2, 1): z = 0,5 · 2 + (−1) · 1 + 0,2 = 0,2 a výstup ReLU(0,2) = 0,2.
Pro x = (1, 3): z = 0,5 · 1 + (−1) · 3 + 0,2 = −2,3 a ReLU(−2,3) = 0 — neuron mlčí. Síť je tisíce takových neuronů vedle sebe a desítky vrstev za sebou.
Proč „hluboké“? Kvůli počtu vrstev. A proč teprve teď, když neuronové sítě existují od padesátých let? Protože až dnes máme dost dat a dost výpočetního výkonu (grafické karty), aby se velké sítě daly natrénovat.
Do hloubky: připravujeme díly Gradientní sestup a Neuronová síť od nuly.
5. Generativní AI a jazykové modely
Většina modelů odpovídá na otázku „co to je?“ — spam, nebo ne? Generativní modely vytvářejí nová data: text, obrázky, zvuk, kód. Velký jazykový model je neuronová síť, která se na obrovském množství textu naučila jediné: odhadnout další slovo. Když to umí dost dobře, umí cestou i odpovídat, překládat a psát kód.
Jazykové modely se učí ve třech krocích, a každý je jiný druh učení: samoučení na textech z internetu, doladění s učitelem na ukázkových odpovědích a zpětnovazební učení podle toho, které odpovědi lidé hodnotí lépe.
„Odhadnout další slovo“ má přesný tvar — pravděpodobnost celého textu se rozloží na součin předpovědí slovo po slovu:
P(w1, …, wT) = ∏t=1T Pθ(wt | w1, …, wt−1)
- P(w1, …, wT)
- jak pravděpodobný je celý text — to, co jazykový model vlastně popisuje
- ∏
- součin přes pozice — pravidlo řetězení pravděpodobností; díky němu stačí umět jedinou věc, předpovědět další slovo
- Pθ
- neuronová síť s parametry θ, která vrací rozdělení pravděpodobností přes celý slovník
- wt
- slovo (token), které se právě předpovídá
- w1, …, wt−1
- všechno předtím — kontext; proto model při psaní vidí jen to, co už napsal
Příklad — co se při učení měří
Kontext „Hlavní město Česka je“. Model dá slovu „Praha“ pravděpodobnost 0,8 a slovu „Brno“ 0,1. Ztráta je záporný logaritmus pravděpodobnosti správného slova: −ln 0,8 ≈ 0,223. Kdyby správnému slovu dal jen 0,1, ztráta by byla −ln 0,1 ≈ 2,303 — zhruba desetkrát víc. Trénink (minimalizace ztráty z kapitoly o učení) tlačí pravděpodobnost správných slov nahoru.
Dvě slova za sebou: dá-li model po „Praha“ tečce pravděpodobnost 0,9, je pravděpodobnost pokračování „Praha.“ podle vzorce výše (barvy odpovídají jeho členům)
P(Praha, . | kontext) = Pθ(Praha | … Česka je) · Pθ(. | … je Praha) = 0,8 · 0,9 = 0,72.
Do hloubky: připravujeme díl Transformery a velké jazykové modely.
6. AI agenti: kde se to všechno potká
AI agent je jazykový model, který nejen odpovídá, ale jedná: čte soubory, spouští příkazy, prohledává web a podle výsledků se rozhoduje, co udělat dál. Tady se obě rodiny AI zase potkávají — model se naučil jazyk a úsudek, ale úlohu řeší jako hledání: zkusí krok, podívá se na výsledek, a když nevede k cíli, zkusí jiný.
Jádro každého takového agenta je krátká smyčka — přesně agent z první kapitoly, který vnímá a jedná:
agent(úkol):
kontext ← [úkol]
opakuj:
odpověď ← jazykový_model(kontext) # rozhodni: text, nebo volání nástroje?
jestliže odpověď je hotový výsledek:
vrať odpověď
výsledek ← spusť_nástroj(odpověď) # jednej: čti soubor, spusť příkaz, hledej
připoj odpověď a výsledek ke kontextu # vnímej: co z toho vyšlo
dokud nedojde rozpočet kroků
Agenti dnes píšou a opravují kód, a právě pro práci s nimi vzniklo coden: agent pracuje na vašem počítači a vy ho řídíte z telefonu.
Do hloubky: připravujeme díl Jak funguje AI agent.
7. Jak číst tuhle sérii
- Každý díl jde číst samostatně. Nahoře najdete, co si odnesete a co se hodí znát předem.
- Laické vysvětlení stačí. Přesné matematické definice jsou schované pod rozbalením — pro ty, kdo je chtějí.
- Obrázky jsou skutečné. Animace v dílech jsou výsledek opravdového běhu algoritmů, ne ilustrace.
Seznam všech dílů, včetně těch, které připravujeme, je v rámečku série nahoře a v přehledu článků.
Máte na to jiný názor? Napište na support@coden-app.com.