Data, model, trénink, inference: základní pojmy na jednom příkladu
Celá cesta strojového učení na odhadu ceny bytu: data a jejich rozdělení, model s parametry, trénink gradientním sestupem, hyperparametry a rychlost učení, vyhodnocení, inference a slovníček pojmů s odkazy na díly série.
Série Základy AI Díl 3 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 znamenají data, model, trénink a inference a jak spolu souvisejí.
- Rozdíl mezi parametry a hyperparametry a proč záleží na rychlosti učení.
- Proč je trénink drahý jednou a inference levná, ale častá.
Co se hodí znát předem: Mapa umělé inteligence: co je co a jak to do sebe zapadá
V celé sérii se opakují čtyři slova: data, model, trénink a inference. Ať jde o rozpoznávání číslic, filtr spamu nebo velký jazykový model, cesta je pořád stejná: z příkladů se naučí funkce, která pak odpovídá na nové otázky. V tomhle dílu tu cestu projdeme celou na nejmenším možném příkladu — odhadu ceny bytu podle plochy — a u každého kroku řekneme, jak vypadá u velkých modelů. Na konci je slovníček pojmů s odkazy na díly, kde se o nich dozvíte víc.
Navazuje na díly Mapa umělé inteligence a Stručná historie AI.
1. Data: příklady se správnými odpověďmi
Definice — data, příznaky a štítky
Data jsou příklady, ze kterých se model učí. Každý příklad se skládá z
- příznaků — vstupů, které o něm víme (u nás plocha bytu),
- a při učení s učitelem i ze štítku — správné odpovědi (u nás cena bytu).
Data se dělí na tři navzájem disjunktní části, každou s jiným účelem:
- trénovací — z nich se model učí (hledají se podle nich parametry);
- validační — podle nich ladíme nastavení učení a vybíráme mezi modely;
- testovací — použijí se jen jednou, na konci, aby poctivě odhadly, jak model dopadne na nových datech.
Přesný zápis je v definici „datová sada formálně“ níže.
Učebnice s příklady a výsledky vzadu. Na trénovacích příkladech se učíte, na cvičné písemce zjistíte, jestli to umíte, a ostrá písemka (kterou jste předtím neviděli) ukáže, jak na tom doopravdy jste.
Naše data jsou vymyšlená: 60 bytů, u každého plocha (příznak) a cena v milionech korun (štítek). Cena roste s plochou, ale ne přesně — dva stejně velké byty se liší polohou, stavem, patrem. Rozdělíme je na 40 trénovacích, 10 validačních a 10 testovacích.
Definice — datová sada formálně
Nechť d, n ∈ ℕ, d, n ≥ 1, a nechť Y je množina možných štítků (Y = ℝ u regrese, konečná množina tříd u klasifikace). Datová sada je konečná posloupnost dvojic
D = ((x(1), y(1)), …, (x(n), y(n))), kde x(i) ∈ ℝd a y(i) ∈ Y pro i = 1, …, n.
Vektor x(i) obsahuje d příznaků i-tého příkladu a y(i) je jeho štítek. Předpokládá se, že existuje (neznámé) rozdělení pravděpodobnosti na ℝd × Y, ze kterého jsou dvojice vybrány navzájem nezávisle a ze kterého pocházejí i budoucí dotazy.
Rozdělení dat je dáno rozkladem množiny indexů na tři navzájem disjunktní množiny
{1, …, n} = Itr ∪ Ival ∪ Itest, Itr ∩ Ival = Itr ∩ Itest = Ival ∩ Itest = ∅;
části dat jsou Dtr = ((x(i), y(i)))i ∈ Itr a obdobně Dval, Dtest. Každý příklad tedy patří do právě jedné části. U nás d = 1 (plocha), Y = ℝ (cena v milionech Kč), n = 60 a části mají 40, 10 a 10 příkladů.
Tabulka, kde každý řádek je jeden byt: sloupce s příznaky a poslední sloupec s cenou. Disjunktní znamená, že žádný byt není ve dvou částech zároveň — jinak by „ostrá písemka“ obsahovala příklady, které model už viděl. A předpoklad stejného rozdělení říká, že testovací byty jsou z téhož trhu jako ty, na které se pak budeme ptát; bez něj by chyba na testu o budoucnosti nevypovídala nic.
U velkých jazykových modelů jsou daty biliony tokenů textu z webu, knih a kódu; příznakem je dosavadní text a štítkem další token (díl o předtrénování). Princip je stejný.
2. Model: funkce s parametry
Definice — model a parametry
Nechť X je množina vstupů, Y množina výstupů a Θ ⊆ ℝp, p ≥ 1, množina přípustných hodnot parametrů. Model je systém funkcí
{fθ : X → Y | θ ∈ Θ},
tj. pro každou volbu θ = (θ1, …, θp) ∈ Θ jedna funkce, která ze vstupu x ∈ X spočítá výstup fθ(x) ∈ Y. Čísla θ1, …, θp jsou parametry modelu (u neuronových sítí váhy). Tvar funkce (a tím X, Y, Θ) volíme my; hodnoty parametrů hledá učení.
Náš model je přímka: X = Y = ℝ, Θ = ℝ2, θ = (w, b) a fw,b(x) = w · x + b, kde x je plocha, w říká, o kolik stoupne cena s každou jednotkou plochy, a b, kde přímka začíná.
Model je stroj s knoflíky. Náš má knoflíky dva. Jazykový model jich má miliardy — ale je to pořád stroj, který ze vstupu počítá výstup, a jeho „znalosti“ nejsou nic jiného než nastavení knoflíků.
ŷ = w · x + b
- ŷ
- předpověď ceny; stříška ji odlišuje od skutečné ceny y, se kterou ji pak porovnáváme
- w
- sklon — kolik milionů přidá každý metr navíc; bez něj by cena na ploše vůbec nezávisela
- x
- plocha v m², jediný příznak; to jediné, co model o bytě ví
- b
- posun — „cena nulového bytu“; bez něj by přímka musela procházet počátkem, a ceny bytů k nule nemíří
3. Trénink: ladění parametrů
Definice — ztrátová funkce a trénink
Nechť {fθ : θ ∈ Θ}, Θ ⊆ ℝp, je model a Dtr = ((x1, y1), …, (xn, yn)), n ≥ 1, trénovací data. Ztrátová funkce je funkce
J : Θ → [0, ∞),
která každé volbě parametrů θ přiřadí číslo J(θ) udávající, jak moc se model fθ na Dtr mýlí — u nás průměr druhých mocnin chyb (MSE), zapsaný celý v rozboru níže. Trénink je hledání parametrů s co nejmenší ztrátou, ideálně θ* ∈ argminθ ∈ Θ J(θ).
Je-li J diferencovatelná a Θ = ℝp, označme ∇J(θ) = (∂J/∂θ1, …, ∂J/∂θp) její gradient. Gradientní sestup je algoritmus:
- Vstup: počáteční parametry θ0 ∈ ℝp, rychlost učení η > 0, počet kroků T ∈ ℕ.
- Výstup: parametry θT ∈ ℝp.
- Pro t = 0, 1, …, T − 1 polož θt+1 = θt − η · ∇J(θt).
- Po T krocích skonči a vrať θT.
Sestup tedy v každém kroku spočítá, kterým směrem ztráta nejrychleji roste, a posune parametry malým krokem opačně. Epocha je jeden průchod všemi trénovacími daty; u našeho sestupu, kde každý krok počítá gradient ze všech n příkladů, je jedna epocha právě jeden krok.
Mlha na kopci a cíl dostat se do údolí. Vidíte jen svah pod nohama, tak uděláte krok z kopce, znovu se podíváte, další krok. Každý krok je jedna úprava knoflíků, údolí jsou knoflíky, se kterými se model mýlí nejmíň.
Naše ztrátová funkce, střední kvadratická chyba (MSE), zapsaná celá:
J(w, b) = 1/n ∑i=1n ( w xi + b − yi )2
- J(w, b)
- ztráta jako funkce parametrů — data jsou pevná, měnit smíme jen w a b, proto jsou v závorce jen ony
- 1/n ∑
- průměr přes všech n = 40 trénovacích bytů — ať je ztráta srovnatelná pro různě velká data a žádný byt nemá přednost
- w xi + b − yi
- chyba na i-tém bytě: předpověď ŷi minus skutečná cena; kladná, když model přestřelí, záporná, když podstřelí
- 2
- druhá mocnina — aby se kladné a záporné chyby nevyrušily, velké chyby vážily víc než malé a ztráta šla hladce derivovat
Věta — gradient MSE pro přímku
Nechť n ≥ 1, (x1, y1), …, (xn, yn) ∈ ℝ2 jsou trénovací data a J : ℝ2 → ℝ je MSE přímky,
J(w, b) = 1/n ∑i=1n (w xi + b − yi)2.
Označme ŷi = w xi + b pro i = 1, …, n. Pak pro všechna (w, b) ∈ ℝ2 platí
∂J/∂w = 2/n ∑i=1n (ŷi − yi) · xi, ∂J/∂b = 2/n ∑i=1n (ŷi − yi).
Důkaz. Derivace součtu je součet derivací a konstantní násobek 1/n se derivováním zachová. Pro jeden člen podle pravidla o derivaci složené funkce: ∂/∂w (w xi + b − yi)2 = 2 (w xi + b − yi) · xi, protože vnitřek závorky má podle w derivaci xi; podle b má derivaci 1. ∎
Každý byt „tahá“ za parametry úměrně tomu, jak moc se model na něm spletl. U w se tah ještě násobí plochou: chyba u velkého bytu říká o sklonu víc než chyba u garsonky.
Jeden krok gradientního sestupu pak posune oba parametry proti gradientu:
w ← w − η · ∂J/∂w
- w
- parametr před krokem a po něm — šipka ← znamená „přepiš novou hodnotou“, ne rovnost
- −
- jdeme opačně než gradient, tedy z kopce: ztrátu chceme zmenšit, ne zvětšit
- η
- rychlost učení — jak dlouhý krok uděláme; gradient platí jen v okolí bodu, takže krok musí být malý (viz další kapitola)
- ∂J/∂w
- gradient — kterým směrem a jak strmě ztráta roste, když w zvětšíme
Celý trénink jako algoritmus (přesně tak to počítá obrázek níže):
w, b = 0, 0 # počáteční parametry
for epocha in range(200): # hyperparametr: počet epoch
gw = gb = 0
for plocha, cena in trenovaci_data: # jedna epocha = všechna data
x = plocha / 100 # plocha ve stovkách m²
chyba = (w * x + b) - cena # ŷ − y
gw += 2 * chyba * x / n # ∂J/∂w
gb += 2 * chyba / n # ∂J/∂b
w, b = w - eta * gw, b - eta * gb # krok z kopce, eta = rychlost učení
Plochu dosazujeme ve stovkách m² (52 m² → 0,52). V metrech by gradient podle w vycházel desítkykrát větší než podle b a jedna rychlost učení by nesedla oběma parametrům zároveň. Takové škálování příznaků je v praxi běžné. Proto w níže vychází v milionech za 100 m².
Příklad — první krok sestupu
V bodě w = b = 0 model všude předpovídá 0, takže chyba na každém bytě je −yi. Gradient je proto
∂J/∂w = −2 · 1/n ∑i=1n xi yi = −2 · 5,678 = −11,36, ∂J/∂b = −2 · ȳ = −2 · 6,88 = −13,76,
kde 5,678 je průměr součinů plochy (ve stovkách m²) a ceny a ȳ = 6,88 průměrná cena v milionech. S rychlostí učení η = 0,5 (barvy odpovídají členům vzorce kroku výše):
w ← 0 − 0,5 · (−11,36) = 5,68, b ← 0 − 0,5 · (−13,76) = 6,88.
(w je zde v milionech za 100 m².) Ztráta klesne z 54,2 na 17,7. Oba gradienty byly záporné (model všude podstřeloval), a tak oba parametry vzrostly.
Začneme s w = 0 a b = 0 (model říká „všechno stojí nula“, ztráta 54,2) a uděláme 200 epoch gradientního sestupu. Výsledek: w = 0,0910 milionu za m², tedy zhruba 91 000 Kč za každý metr navíc, a b = 0,35 milionu. Přesné řešení metodou nejmenších čtverců (u přímky ho jde spočítat vzorcem, viz díl o lineární regresi) se liší až na čtvrtém desetinném místě. Sestup dorazil tam, kam měl.
4. Hyperparametry: co nastavujeme my
Definice — hyperparametry
Trénink je postup, který z trénovacích dat Dtr a z nastavení h spočítá parametry θ* (např. gradientní sestup výše). Hyperparametry jsou složky nastavení h: veličiny, které ovlivňují tvar modelu nebo průběh učení, nejsou součástí θ, trénink je nemění a volíme je my předem. Patří k nim:
- tvar a velikost modelu (tvar funkce fθ a množina Θ);
- rychlost učení η > 0 — jak velký je krok gradientního sestupu;
- počet epoch;
- velikost dávky B ∈ {1, …, n} — kolik trénovacích příkladů se použije na výpočet gradientu v jednom kroku.
Hyperparametry se ladí podle výsledků na validačních datech Dval, nikdy na testovacích.
Parametry jsou to, co se žák naučí. Hyperparametry jsou to, jak ho učíme: jak rychle, jak dlouho, kolik příkladů najednou.
S rychlostí 0,05 se model učí pomalu — po 200 epochách má ztrátu 0,48 a ještě není v cíli. S 0,5 dorazí za pár desítek epoch na 0,165. S 1,6 jsou kroky tak velké, že model přeskakuje údolí čím dál dál a ztráta exploduje — po pěti epochách je 46 310 590. Správná rychlost učení je jedno z nejčastějších ladění v celém strojovém učení.
U přímky a MSE se dá přesně spočítat, kde leží hranice mezi „pomalu“ a „exploduje“. Ztráta je kvadratická funkce parametrů, takže její zakřivení je všude stejné a popisují ho dvě čísla — zakřivení ve strmém a v plochém směru údolí (vlastní čísla λ Hessovy matice, tabulky druhých derivací).
et+1 = (1 − η λ) · et
- et+1
- vzdálenost parametrů od nejlepších hodnot po další epoše (v jednom ze dvou směrů) — tu chceme dostat k nule
- 1
- bez kroku by vzdálenost zůstala, jaká byla; krok z ní ubere díl η λ. Je-li |1 − η λ| < 1, vzdálenost se zmenšuje, je-li větší než 1, roste geometrickou řadou
- η
- rychlost učení — jediné, co tu volíme my
- λ
- zakřivení ztráty v daném směru — dané daty, ne námi; ve strmém směru je gradient velký, a krok proto dlouhý
- et
- vzdálenost před epochou; vzorec se opakuje, takže po t epochách je et = (1 − η λ)t e0
Věta — kdy gradientní sestup konverguje
Nechť p ≥ 1, H ∈ ℝp×p je symetrická matice s vlastními čísly λ1, …, λp, kde λmin = minj λj > 0 a λmax = maxj λj, θ* ∈ ℝp, c ∈ ℝ a ztráta je kvadratická funkce
J(θ) = c + 1/2 (θ − θ*)T H (θ − θ*), θ ∈ ℝp,
s Hessovou maticí H a minimem v θ*. Nechť η ∈ ℝ a θt+1 = θt − η ∇J(θt) pro t = 0, 1, 2, … Pak θt → θ* pro každý počáteční bod θ0 ∈ ℝp, právě když
0 < η < 2/λmax.
Důkaz. Platí ∇J(θ) = H(θ − θ*), takže odchylka et = θt − θ* splňuje et+1 = (I − ηH) et. V ortonormální bázi vlastních vektorů H se j-tá složka et(j) vyvíjí jako et+1(j) = (1 − η λj) et(j), tedy et(j) = (1 − η λj)t e0(j). Všechny složky jdou pro každé e0 k nule, právě když |1 − η λj| < 1 pro všechna j, tj. 0 < η λj < 2; protože λj > 0, je nejpřísnější podmínka pro λmax. ∎
Příklad — mez pro naše byty
Pro MSE přímky je H = 2/n · [[∑xi2, ∑xi], [∑xi, n]] = [[1,193, 1,435], [1,435, 2]] (plocha ve stovkách m²). Vlastní čísla vyjdou λmax = 3,087 a λmin = 0,106, takže sestup konverguje pro η < 2/3,087 = 0,648. Barvy odpovídají členům vzorce et+1 = (1 − η λ) · et výše.
η = 0,05: násobitel v plochém směru je 1 − 0,05 · 0,106 = 0,9947; po 200 epochách zbývá 0,9947200 ≈ 35 % původní odchylky — proto model není v cíli.
η = 0,5: násobitele jsou |1 − 0,5 · 3,087| = 0,544 a 1 − 0,5 · 0,106 = 0,947; po 200 epochách zbývá 0,947200 ≈ 2 · 10−5 odchylky — prakticky nic.
η = 1,6 > 0,648: ve strmém směru je |1 − 1,6 · 3,087| = 3,94. Odchylka se každou epochu zhruba zečtyřnásobí a ztráta, která roste s její druhou mocninou, 15,5krát — v grafu z 801 na 12 395.
Údolí je úzký žlab: napříč strmý, podél skoro rovný. Rychlost učení musí být dost malá na strmé stěny, jinak přeskočíte na protější svah výš, než jste byli. Jenže pak podél žlabu postupujete pomaloučku. Tenhle spor mezi strmým a plochým směrem je důvod, proč se u velkých modelů používají chytřejší varianty sestupu.
5. Jak dobrý model je
Nechť D′ je libovolná část dat s m ≥ 1 příklady (x, y) a ŷ(x) = fθ*(x) předpověď naučeného modelu. Chybu na D′ měříme odmocninou ze střední kvadratické chyby (RMSE):
RMSE = √1/m ∑(x, y) ∈ D′ (ŷ(x) − y)2
- √
- odmocnina vrátí výsledek z (mil. Kč)² zpátky do milionů korun — číslo se dá číst jako „typická chyba“
- 1/m ∑D′
- průměr přes vybranou část — trénovací, validační, nebo testovací; každá odpovídá na jinou otázku
- (ŷ(x) − y)2
- čtverec chyby na jednom bytě, stejně jako ve ztrátě — měříme tím, co jsme minimalizovali
Průměrná chyba (odmocnina z MSE) je na trénovacích datech 0,41 milionu, na validačních 0,60 a na testovacích 0,51 milionu, tedy zhruba půl milionu korun. Lepší to s jediným příznakem být nemůže: šum, který jsme do cen přidali (poloha, stav), má právě takovou velikost a z plochy se uhodnout nedá. Kdo chce přesnější odhad, potřebuje víc příznaků — ne chytřejší přímku. Kdybychom naopak model udělali příliš pružný, naučil by se šum trénovacích dat nazpaměť (přeučení) a na nových bytech by se mýlil víc.
6. Inference: model v provozu
Definice — inference
Nechť {fθ : θ ∈ Θ} je model a θ* ∈ Θ parametry, které našel trénink. Inference je výpočet předpovědi
ŷ = fθ*(x)
pro nový vstup x ∈ X, přičemž parametry θ* zůstávají pevné. Model se při inferenci neučí (pokud ho výslovně znovu netrénujeme). U jazykových modelů je inferencí každá odpověď — model generuje token po tokenu a pro každý token udělá jeden průchod sítí.
Trénink je studium, inference je zkouška — nebo práce. Studuje se jednou a dlouho, pracuje se pak denně a rychle. Když si s chatbotem píšete, neučíte ho (to se děje jindy a jinak), jen ho používáte.
Náš model pro byt o 65 m² odhadne 6,27 milionu. Stojí to 3 početní operace. Trénink stál zhruba 72 000 operací. U velkých modelů je poměr podobný, jen v jiném měřítku: trénink trvá měsíce na tisících grafických karet, jedna odpověď vteřiny. Jenže odpovědí jsou miliardy, takže u nejpoužívanějších modelů může inference dohromady stát víc výpočtu než jejich trénink — a proto se tolik řeší, jak modely zmenšit a zrychlit.
Příklad — inference a počet operací
Dosadíme naučené parametry w = 9,0957 milionu za 100 m² (tj. 0,0910 za m²) a b = 0,3538; plochu ve stovkách m², x = 0,65:
ŷ = 9,0957 · 0,65 + 0,3538 = 5,9122 + 0,3538 = 6,2660 ≈ 6,27 milionu
(barvy odpovídají členům vzorce ŷ = w · x + b v kapitole o modelu).
To jsou 3 operace: převod jednotek (dělení stem), násobení a sčítání. Jedna epocha tréninku udělá pro každý z 40 bytů předpověď, chybu a oba příspěvky ke gradientu — počítáme zhruba 9 operací na byt (přesný počet záleží na tom, co za jednu operaci považujeme), tedy 40 · 9 · 200 = 72 000 operací za celý trénink. Poměr trénink : jedna předpověď je 24 000 : 1.
7. Slovníček
Pojmy z tohoto dílu a kde se o nich v sérii dozvíte víc:
- data
- příklady, ze kterých se model učí — u nás 60 bytů s plochou a cenou — podrobně
- příznak
- vstupní údaj o příkladu (plocha); obrázek má příznaků tisíce — pixely — podrobně
- štítek
- správná odpověď, kterou chceme předpovídat (cena) — podrobně
- trénovací, validační a testovací data
- na prvních se model učí, na druhých se ladí nastavení, třetí se použijí jednou na konci — podrobně
- model
- funkce s nastavitelnými parametry, která ze vstupu počítá výstup — podrobně
- parametr (váha)
- číslo uvnitř modelu, které se učí; jazykové modely jich mají miliardy — podrobně
- ztrátová funkce
- číslo, které měří, jak moc se model mýlí; učení ho zmenšuje — podrobně
- trénink (učení)
- hledání parametrů, při kterých je ztráta na trénovacích datech malá — podrobně
- gradient
- směr, kterým ztráta roste nejrychleji; trénink jde opačně — podrobně
- epocha
- jeden průchod všemi trénovacími daty — podrobně
- dávka (batch)
- kolik příkladů se použije na jeden krok učení — podrobně
- hyperparametr
- nastavení, které si volíme my a model se ho neučí (rychlost učení, počet epoch, velikost modelu) — podrobně
- přeučení
- model se naučí trénovací data nazpaměť a na nových datech selhává — podrobně
- inference
- použití naučeného modelu na nový vstup — to, co děláte, když se ptáte chatbota — podrobně
- token
- kousek textu, se kterým jazykový model pracuje — podrobně
- embedding
- vektor čísel, který reprezentuje slovo, obrázek nebo jiný objekt — podrobně
- kontext a prompt
- všechen text, který model dostane při inferenci — podrobně
8. Shrnutí
- Data = příklady s příznaky a štítky, rozdělené na trénovací, validační a testovací část.
- Model = funkce s parametry; trénink hledá parametry s nejmenší ztrátou, typicky gradientním sestupem.
- Náš model se naučil 91 000 Kč za m² — stejně jako přesný výpočet.
- Hyperparametry volíme my: s malou rychlostí učení je trénink pomalý, s velkou se rozpadne.
- Chyba na testu (0,51 mil.) odpovídá šumu v datech; lepší model potřebuje víc příznaků.
- Inference = použití naučeného modelu; je levná na jeden dotaz, ale dotazů je obrovské množství.
Chcete si to osahat? Požádejte AI agenta, ať stáhne skutečná data o cenách bytů ve vašem městě, rozdělí je na tři části a natrénuje stejnou přímku — a pak ať přidá druhý příznak (třeba vzdálenost od centra) a porovná chybu na testu.
Máte na to jiný názor? Napište na support@coden-app.com.