Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
Umelá inteligencia, strojové učenie, hlboké učenie, jazykové modely a AI agenti — ako spolu súvisia, na jednej stránke. Úvodný diel série Základy AI.
Séria Základy AI Diel 1 z 52
- Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
- Stručná história umelej inteligencie: od Turinga po jazykové modely
- Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
- Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
- Funkcie a zobrazenia: prečo je každý model v AI funkcia
- Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
- Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
- Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
- Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
- Gradientný zostup: ako sa model učí
- Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
- Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
- Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
- Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
- Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
- Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
- Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
- Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
- Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
- Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
- Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
- Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
- Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
- Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
- Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
- Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
- Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
- Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
- Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
- Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
- Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
- Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
- Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
- Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
- Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
- Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
- Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
- Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
- Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
- Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
- Prompty, kontext a RAG: ako modelu dať správne informácie
- Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
- Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
- Difúzne modely: ako sa z čistého šumu stane obrázok
- Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
- Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
- Policy gradient a PPO: učenie priamo stratégie
- Ako funguje AI agent: jazykový model v slučke s nástrojmi
- Programovanie s AI agentmi: zadanie, testy a kontrola
- Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť
Celá osnova série Hotovo: 52 z 83 tém
- Ako do seba zapadá umelá inteligencia, strojové učenie, hlboké učenie a jazykové modely.
- Dve veľké rodiny AI: systémy, ktoré hľadajú, a systémy, ktoré sa učia.
- Čo je AI agent a prečo v ňom stretnete všetko ostatné.
Umelá inteligencia, strojové učenie, neurónové siete, jazykové modely, agenti. Slová, ktoré sa dnes používajú skoro ako synonymá — a pritom každé znamená niečo iné. Tento diel je mapa: ukáže, čo je čo a ako to do seba zapadá. Do hĺbky idú ďalšie diely série; každý z nich sa dá čítať aj samostatne.
1. Čo je umelá inteligencia
Definícia — racionálny agent (Russell a Norvig)
Agent je čokoľvek, čo vníma svoje prostredie pomocou senzorov a pôsobí naň pomocou akcií. Jeho správanie sa opisuje takto.
Nech P je neprázdna množina možných vnemov a A neprázdna množina akcií, ktoré má agent k dispozícii. Označme P* množinu všetkých konečných postupností vnemov (p1, …, pt), kde t ∈ ℕ a pi ∈ P pre i = 1, …, t. Agentová funkcia je funkcia
f : P* → A, (p1, …, pt) ↦ f(p1, …, pt),
ktorá každej doterajšej histórii vnemov priradí akciu, ktorú agent vykoná.
Nech ďalej U je miera výkonu — číslo, ktoré hodnotí, ako dobre agent v prostredí uspel — a pre históriu (p1, …, pt) ∈ P* a akciu a ∈ A nech E[U | p1, …, pt, a] je očakávaná hodnota U za predpokladu, že agent po tejto histórii vykoná akciu a (vypočítaná z toho, čo agent o prostredí vie). Predpokladajme, že maximum nižšie existuje (napr. ak je A konečná). Agent f je racionálny práve vtedy, keď
∀ (p1, …, pt) ∈ P* : f(p1, …, pt) ∈ argmaxa ∈ A E[U | p1, …, pt, a].
Racionálny agent teda po každej histórii vnemov zvolí niektorú z akcií s najväčšou očakávanou mierou výkonu (ak ich je viac, je jedno ktorú).
Umelá inteligencia je v ponímaní Russella a Norviga odbor, ktorý racionálnych agentov navrhuje a stavia. To už je opis odboru, nie matematický pojem — formálna definícia umelej inteligencie neexistuje.
Umelá inteligencia je odbor, ktorý sa snaží postaviť programy, čo sa rozhodujú rozumne: pozerajú sa, čo sa okolo deje, a volia to, čo najskôr povedie k cieľu. Šachový program, navigácia aj chatbot sú umelá inteligencia — len každý rieši inú úlohu a inými prostriedkami.
Racionalitu možno zapísať jedným vzorcom — agent volí akciu s najlepším očakávaným výsledkom:
a* = argmaxa ∈ A E[ U | p1, …, pt, a ]
- a*
- akcia, ktorú agent vykoná — výstup celej funkcie f
- argmaxa ∈ A
- vyskúšaj v úvahe všetky dostupné akcie a vezmi tú najlepšiu; tu sa rozhoduje
- E
- očakávaná (priemerná) hodnota — svet je neistý, rovnaká akcia môže dopadnúť rôzne, a tak sa výsledky vážia pravdepodobnosťami
- U
- miera výkonu (úžitok) — čo znamená „dobre“; bez nej by nebolo podľa čoho vyberať
- p1, …, pt
- všetko, čo agent doteraz vnímal — rozhoduje len podľa toho, čo vie, nie podľa skutočného stavu sveta
Príklad — navigácia volí trasu
Úžitok U je záporne vzatý čas jazdy v minútach. Po diaľnici je to 20 minút, ale s pravdepodobnosťou 0,3 bude zápcha a 50 minút; okreskou vždy 30 minút. Farby zodpovedajú členom vzorca vyššie.
Diaľnica: E[U | …, diaľnica] = 0,7 · (−20) + 0,3 · (−50) = −14 − 15 = −29. Okreska: E[U | …, okreska] = −30 = −30.
a* = argmaxa ∈ {diaľnica, okreska} E[U | …, a] = diaľnica, pretože −29 > −30. Racionálny agent zvolí diaľnicu — v priemere je o minútu rýchlejšia, aj keď zhruba v tretine prípadov dopadne horšie.
Celú oblasť sa dá nakresliť ako do seba vnorené množiny. Hlboké učenie je druh strojového učenia, strojové učenie je jedna z ciest k umelej inteligencii — a AI agent dnes často kombinuje oboje, hľadanie aj učenie:
2. AI, ktorá hľadá
Najstaršia rodina AI sa nič neučí. Dostane presný popis úlohy — kde začínam, čo môžem urobiť, kam sa chcem dostať — a prehľadáva možnosti, kým nenájde riešenie. Tak funguje navigácia, ktorá hľadá najkratšiu trasu, šachový program, ktorý prepočítava ťahy dopredu, alebo plánovač rozvrhu.
Výhoda: keď je úloha dobre popísaná, výsledok je spoľahlivý a dá sa dokázať, že je najlepší možný. Nevýhoda: niekto musí úlohu presne popísať — a svet sa presne popísať nedá skoro nikdy.
Definícia — úloha prehľadávania
Úloha prehľadávania je šestica (S, s0, A, T, G, c), kde
- S je neprázdna množina stavov;
- s0 ∈ S je počiatočný stav;
- A je funkcia, ktorá každému stavu s ∈ S priradí množinu A(s) akcií použiteľných v stave s;
- T je prechodová funkcia: pre každé s ∈ S a a ∈ A(s) je T(s, a) ∈ S stav, do ktorého akcia a zo stavu s vedie;
- G ⊆ S je množina cieľových stavov;
- c je cena kroku: pre každé s ∈ S a a ∈ A(s) je c(s, a) ∈ ℝ, c(s, a) ≥ 0.
Riešenie úlohy je postupnosť akcií (a1, …, ak), k ∈ ℕ, spolu so stavmi s1, …, sk ∈ S takými, že
- ai ∈ A(si−1) a si = T(si−1, ai) pre každé i = 1, …, k;
- sk ∈ G.
Cena riešenia je
C(a1, …, ak) = ∑i=1k c(si−1, ai).
Riešenie je optimálne práve vtedy, keď je jeho cena menšia alebo rovná cene každého iného riešenia. Riešenie je teda cesta z počiatočného stavu do cieľa po povolených krokoch; optimálna je tá najlacnejšia.
Pri navigácii sú stavy križovatky, akcie „choď touto ulicou“, cieľ je adresa a cena kroku dĺžka ulice. Kto vie úlohu takto popísať, môže na ňu pustiť všeobecný algoritmus — ten nemusí vedieť nič o mapách.
hľadaj(s₀):
hranica ← [s₀] # stavy, kam vieme dôjsť, ale ešte sme ich nerozvinuli
navštívené ← {s₀}
kým hranica nie je prázdna:
s ← vyber stav z hranice # KTORÝ stav, určuje druh hľadania
ak s ∈ G: vráť cestu do s
pre každú akciu a ∈ A(s):
s′ ← T(s, a)
ak s′ ∉ navštívené:
pridaj s′ do navštívené a do hranice
vráť „riešenie neexistuje“
Háčik je v počte možností: ak má každý stav b pokračovaní, je po d krokoch až bd ciest. V šachu je typicky b ≈ 35, a prepočítať len päť ťahov každej strany (d = 10) znamená 3510 ≈ 2,8 · 1015 pozícií. Preto šachové programy nehľadajú naslepo, ale šikovne orezávajú.
Do hĺbky: diel 2 — Prehľadávanie stavového priestoru.
3. AI, ktorá sa učí
Definícia — strojové učenie (T. Mitchell)
Definícia pracuje s tromi objektmi:
- T — úloha: trieda problémov, ktoré má program riešiť (napr. „rozhodni o e-maile, či je spam“);
- P — miera výkonu: predpis, ktorý programu riešiacemu T priradí číslo, čím vyššie, tým lepšie (napr. podiel správne zaradených e-mailov);
- E — skúsenosť: dáta, ktoré program dostáva (napr. e-maily s označením „spam“ / „nie spam“).
Program sa učí zo skúsenosti E vzhľadom na úlohu T a mieru výkonu P práve vtedy, keď sa jeho výkon na T, meraný pomocou P, zlepšuje so skúsenosťou E.
Mitchellova definícia je slovná a zámerne všeobecná — „zlepšuje sa“ v nej nie je ďalej formalizované. Pre učenie s učiteľom má presný tvar, ktorý je rozobraný nižšie: T je predpovedať odpoveď y zo vstupu x, E sú trénovacie dvojice (xi, yi) a výkon je tým lepší, čím menšia je priemerná strata.
Namiesto pravidiel dostane program príklady a pravidlá si z nich odvodí sám. Nikto mu nenapíše, ako vyzerá spam — ukáže sa mu tisíc e-mailov a on si všimne, čím sa spam líši.
Strojové učenie sa delí podľa toho, aký signál model pri učení dostáva: správne odpovede (učenie s učiteľom), len dáta bez odpovedí (bez učiteľa), trochu oboch (s čiastočným učiteľom), odpovede vyrobené zo samotných dát (samoučenie), alebo odmeny za činy (učenie posilňovaním).
Pri učení s učiteľom sa dá Mitchellova „miera výkonu“ napísať konkrétne. Nech (x1, y1), …, (xn, yn), n ≥ 1, sú trénovacie príklady (vstup xi ∈ X a správna odpoveď yi ∈ Y), fθ : X → Y model s parametrami θ ∈ Θ a L : Y × Y → [0, ∞) stratová funkcia. Model sa učí tak, že hľadá parametre s najmenšou priemernou stratou na dátach:
θ* = argminθ 1/n ∑i=1n L(fθ(xi), yi)
- θ*
- naučené parametre — výsledok celého tréningu; s nimi potom model beží v prevádzke
- argminθ
- hľadáme tie čísla θ, pre ktoré je chyba najmenšia — „učenie“ je tu doslova hľadanie minima
- 1/n ∑
- priemer cez všetkých n príkladov — model má byť dobrý na všetkých, nie na jednom; delenie n robí chybu porovnateľnou pre rôzne veľké dáta
- L
- stratová funkcia — prevádza „ako veľmi sa model pomýlil“ na číslo, a tým hovorí, ktoré chyby sú horšie
- fθ(xi)
- odpoveď modelu na i-tý vstup — jediné miesto, kde parametre θ do vzorca vstupujú
- yi
- správna odpoveď od učiteľa — bez nej by nebolo s čím porovnávať
Príklad — priamka tromi bodmi
Dáta (x, y): (1, 2), (2, 4), (3, 5), teda n = 3. Model fw(x) = w · x má jediný parameter w ∈ ℝ; strata je štvorec chyby L(ŷ, y) = (ŷ − y)². Farby zodpovedajú členom vzorca vyššie.
- w = 1: odpovede 1, 2, 3, chyby −1, −2, −2, straty 1, 4, 4, priemerná strata 1/3 · (1 + 4 + 4) = 3.
- w = 2: odpovede 2, 4, 6, chyby 0, 0, 1, straty 0, 0, 1, priemerná strata 1/3 · (0 + 0 + 1) = 1/3 ≈ 0,333.
- Minimum: derivácia podľa w je nulová pre w* = ∑xiyi/∑xi² = 2 + 8 + 15/1 + 4 + 9 = 25/14 ≈ 1,786, s priemernou stratou 5/42 ≈ 0,119.
Pri veľkých modeloch sa minimum nedá vypočítať vzorcom a hľadá sa postupne gradientným zostupom.
Do hĺbky: diel 3 — Druhy strojového učenia.
4. Hlboké učenie a neurónové siete
Hlboké učenie je strojové učenie s jedným konkrétnym druhom modelu: neurónovou sieťou s mnohými vrstvami. Každá vrstva prepočíta vstup trochu inak — prvé vrstvy siete na obrázky rozpoznávajú hrany, ďalšie tvary, posledné celé predmety. Nikto im nepovie, čo majú hľadať; naučia sa to z dát.
Definícia — vrstvená neurónová sieť
Nech L ∈ ℕ, L ≥ 1, je počet vrstiev a n0, n1, …, nL ≥ 1 sú ich šírky (n0 je rozmer vstupu, nL rozmer výstupu). Pre l = 1, …, L nech
- Wl ∈ ℝnl×nl−1 je matica váh,
- bl ∈ ℝnl je vektor posunov,
a nech φ : ℝ → ℝ je nelineárna aktivačná funkcia; pre vektor z označuje φ(z) vektor, ktorý vznikne použitím φ na každú zložku zvlášť. Vrstva l je funkcia
fl : ℝnl−1 → ℝnl, fl(h) = φ(Wlh + bl).
Neurónová sieť s L vrstvami je zložená funkcia
f = fL ∘ … ∘ f2 ∘ f1 : ℝn0 → ℝnL, t. j. f(x) = fL(… f2(f1(x))).
(Pri poslednej vrstve sa φ často vynecháva alebo nahrádza inou funkciou, napr. softmaxom.) Parametre siete sú θ = (W1, b1, …, WL, bL). Vrstvy 1, …, L − 1 sa nazývajú skryté. Sieť je hlboká, keď má viac skrytých vrstiev (obvykle sa myslí L − 1 ≥ 2; ostrá hranica ustálená nie je).
hl = φ(Wl hl−1 + bl)
- hl
- výstup vrstvy l — nový popis vstupu, s ktorým pracuje ďalšia vrstva
- φ
- nelinearita (napr. ReLU(z) = max(0, z)) — bez nej by sa vrstvy zložili do jedinej lineárnej funkcie a hĺbka by nič nepriniesla
- Wl
- váhy — čo sa sieť učí: koľko ktorý vstup prispieva ku ktorému neurónu
- hl−1
- výstup predchádzajúcej vrstvy (pri prvej je to vstup x) — tu sa vrstvy reťazia
- bl
- posun — umožní neurónu „zapnúť sa“ aj vtedy, keď sú vstupy nulové, a posúva prah
Príklad — jeden neurón s ReLU
Váhy w = (0,5; −1), posun b = 0,2, aktivácia φ = ReLU (farby zodpovedajú členom vzorca vyššie).
Pre vstup x = (2, 1): z = 0,5 · 2 + (−1) · 1 + 0,2 = 0,2 a výstup ReLU(0,2) = 0,2.
Pre x = (1, 3): z = 0,5 · 1 + (−1) · 3 + 0,2 = −2,3 a ReLU(−2,3) = 0 — neurón mlčí. Sieť je tisíce takých neurónov vedľa seba a desiatky vrstiev za sebou.
Prečo „hlboké“? Kvôli počtu vrstiev. A prečo až teraz, keď neurónové siete existujú od päťdesiatych rokov? Pretože až dnes máme dosť dát a dosť výpočtového výkonu (grafické karty), aby sa veľké siete dali natrénovať.
Do hĺbky: pripravujeme diely Gradientný zostup a Neurónová sieť od nuly.
5. Generatívna AI a jazykové modely
Väčšina modelov odpovedá na otázku „čo to je?“ — spam, alebo nie? Generatívne modely vytvárajú nové dáta: text, obrázky, zvuk, kód. Veľký jazykový model je neurónová sieť, ktorá sa na obrovskom množstve textu naučila jediné: odhadnúť ďalšie slovo. Keď to vie dosť dobre, vie popritom aj odpovedať, prekladať a písať kód.
Jazykové modely sa učia v troch krokoch a každý je iný druh učenia: samoučenie na textoch z internetu, doladenie s učiteľom na ukážkových odpovediach a učenie posilňovaním podľa toho, ktoré odpovede ľudia hodnotia lepšie.
„Odhadnúť ďalšie slovo“ má presný tvar — pravdepodobnosť celého textu sa rozloží na súčin predpovedí slovo po slove:
P(w1, …, wT) = ∏t=1T Pθ(wt | w1, …, wt−1)
- P(w1, …, wT)
- aký pravdepodobný je celý text — to, čo jazykový model vlastne opisuje
- ∏
- súčin cez pozície — pravidlo reťazenia pravdepodobností; vďaka nemu stačí vedieť jedinú vec, predpovedať ďalšie slovo
- Pθ
- neurónová sieť s parametrami θ, ktorá vracia rozdelenie pravdepodobností cez celý slovník
- wt
- slovo (token), ktoré sa práve predpovedá
- w1, …, wt−1
- všetko predtým — kontext; preto model pri písaní vidí len to, čo už napísal
Príklad — čo sa pri učení meria
Kontext „Hlavné mesto Česka je“. Model dá slovu „Praha“ pravdepodobnosť 0,8 a slovu „Brno“ 0,1. Strata je záporný logaritmus pravdepodobnosti správneho slova: −ln 0,8 ≈ 0,223. Keby správnemu slovu dal len 0,1, strata by bola −ln 0,1 ≈ 2,303 — zhruba desaťkrát viac. Tréning (minimalizácia straty z kapitoly o učení) tlačí pravdepodobnosť správnych slov nahor.
Dve slová za sebou: ak dá model po „Praha“ bodke pravdepodobnosť 0,9, je pravdepodobnosť pokračovania „Praha.“ podľa vzorca vyššie (farby zodpovedajú jeho členom)
P(Praha, . | kontext) = Pθ(Praha | … Česka je) · Pθ(. | … je Praha) = 0,8 · 0,9 = 0,72.
Do hĺbky: pripravujeme diel Transformery a veľké jazykové modely.
6. AI agenti: kde sa to všetko stretne
AI agent je jazykový model, ktorý nielen odpovedá, ale koná: číta súbory, spúšťa príkazy, prehľadáva web a podľa výsledkov sa rozhoduje, čo urobiť ďalej. Tu sa obe rodiny AI opäť stretávajú — model sa naučil jazyk a úsudok, ale úlohu rieši ako hľadanie: skúsi krok, pozrie sa na výsledok, a keď nevedie k cieľu, skúsi iný.
Jadro každého takého agenta je krátka slučka — presne agent z prvej kapitoly, ktorý vníma a koná:
agent(úloha):
kontext ← [úloha]
opakuj:
odpoveď ← jazykový_model(kontext) # rozhodni: text, alebo volanie nástroja?
ak odpoveď je hotový výsledok:
vráť odpoveď
výsledok ← spusti_nástroj(odpoveď) # konaj: čítaj súbor, spusti príkaz, hľadaj
pripoj odpoveď a výsledok ku kontextu # vnímaj: čo z toho vyšlo
kým sa neminie rozpočet krokov
Agenti dnes píšu a opravujú kód, a práve na prácu s nimi vzniklo coden: agent pracuje na vašom počítači a vy ho riadite z telefónu.
Do hĺbky: pripravujeme diel Ako funguje AI agent.
7. Ako čítať túto sériu
- Každý diel sa dá čítať samostatne. Hore nájdete, čo si odnesiete a čo je dobré vedieť vopred.
- Laické vysvetlenie stačí. Presné matematické definície sú schované pod rozbalením — pre tých, ktorí ich chcú.
- Obrázky sú skutočné. Animácie v dieloch sú výsledkom naozajstného behu algoritmov, nie ilustrácie.
Zoznam všetkých dielov, vrátane tých, ktoré pripravujeme, je v rámčeku série hore a v prehľade článkov.
Máte na to iný názor? Napíšte na support@coden-app.com.