Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
Učení s učitelem, bez učitele, s částečným učitelem, samoučení a zpětnovazební učení — s přesnými definicemi, laickým vysvětlením a animacemi skutečných algoritmů.
Série Základy AI Díl 42 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
- Pět druhů strojového učení podle toho, jaký signál model při učení dostává.
- Proč může stačit pár štítků a hodně neoznačených dat — a jak se učí jazykové modely.
- Jak se agent naučí jednat jen z odměn a trestů.
Co se hodí znát předem: Mapa umělé inteligence: co je co a jak to do sebe zapadá, Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
„Model se to naučil.“ Tahle věta zní pokaždé stejně, ale znamená velmi různé věci. Jednou se model učil z tisíců fotek, u kterých mu někdo napsal, co na nich je. Jindy dostal jen hromadu dat bez jediného popisku a měl v nich najít řád. A jindy se učil jako pes na cvičišti — zkoušel, a za dobré kroky dostal odměnu.
Strojové učení se proto dělí podle toho, jaký signál model při učení dostává. Projdeme hlavní druhy od učení s učitelem až po zpětnovazební učení. U každého najdete přesnou definici, laické vysvětlení a graf, který je skutečným výsledkem algoritmu — nic není kreslené ručně.
1. Co znamená, že se stroj učí
Definice — učení (T. Mitchell, 1997)
Nechť je dán počítačový program a tyto tři objekty:
- T — třída úloh, které má program řešit (např. „rozhodni o e-mailu, zda je spam“);
- P — míra výkonu: pravidlo, které výsledku programu na úlohách z T přiřadí číslo, přičemž větší číslo znamená lepší výkon (např. podíl správně zařazených e-mailů);
- E — zkušenost: data nebo interakce, které program při učení dostane (např. e-maily, které už někdo roztřídil).
Program se učí ze zkušenosti E vzhledem ke třídě úloh T a míře výkonu P, právě když se jeho výkon na úlohách z T, měřený pomocí P, zlepšuje se zkušeností E — tj. program, který zpracoval víc zkušenosti z E, dosahuje na T (v průměru) vyšší hodnoty P.
Je to pojmová definice, ne matematická: T, P a E se pro každou konkrétní úlohu teprve musí zvolit. Formální tvar pro učení s učitelem je v další části.
Učí se to, co se zlepšuje praxí. Úloha T je třeba „poznat spam“, míra P „kolik e-mailů zařadí správně“ a zkušenost E „tisíc e-mailů, které už někdo roztřídil“. Druhy učení se liší hlavně v tom, jak vypadá ta zkušenost E.
Definice — model a parametry
Nechť 𝒳 je neprázdná množina (prostor vstupů), 𝒴 neprázdná množina (prostor výstupů) a p ∈ ℕ, p ≥ 1. Model s parametry θ ∈ ℝp je soustava funkcí
fθ : 𝒳 → 𝒴, x ↦ fθ(x), θ ∈ ℝp,
tj. každá volba vektoru θ určuje jednu funkci ze vstupů do výstupů.
Nechť J : ℝp → ℝ je účelová funkce spočítaná z dat (čím menší J(θ), tím lépe model s parametry θ data popisuje). Učení (trénink) je hledání parametrů
θ* ∈ argminθ ∈ ℝp J(θ) = {θ ∈ ℝp : J(θ) ≤ J(θ′) pro všechna θ′ ∈ ℝp}.
Je-li J diferencovatelná, hledá se typicky gradientním sestupem: zvol počáteční θ0 ∈ ℝp a rychlost učení η > 0 a pro t = 0, 1, 2, … polož
θt+1 = θt − η ∇J(θt),
dokud se J znatelně zmenšuje (nebo do pevného počtu kroků). Gradientní sestup obecně najde jen lokální minimum, ne nutně prvek argmin.
Model je stroj s mnoha knoflíky — parametry. Učení je otáčení knoflíky tak dlouho, dokud stroj nedělá to, co chceme. Účelová funkce je číslo, které říká, jak moc se zatím mýlí; gradientní sestup otáčí knoflíky vždycky tím směrem, kde se mýlí nejméně.
θ ← θ − η ∇J(θ)
- θ
- všechny parametry modelu najednou (vektor); šipka ← znamená „přepiš novou hodnotou“ — krok se opakuje, dokud se J zmenšuje
- ∇J(θ)
- gradient — vektor parciálních derivací ∂J/∂θj, j = 1, …, p; ukazuje směr, kterým chyba roste nejrychleji, a pro každý parametr říká, jak moc na něm chyba záleží
- −
- chceme chybu zmenšit, tedy jít opačně, než ukazuje gradient
- η
- rychlost učení (malé kladné číslo); gradient platí jen v okolí současného bodu, takže kroky musí být krátké — příliš velké η přeskočí údolí, příliš malé učí pomalu
Hlavní druhy učení v kostce — liší se tím, co je v datech k dispozici:
Naučit se odpovídat jako učitel.
Najít v datech strukturu.
Vytěžit i data bez popisků.
Tak se učí jazykové modely.
Naučit se jednat.
2. Učení s učitelem (supervised learning)
Definice — učení s učitelem
Nechť 𝒳 je prostor vstupů, 𝒴 prostor štítků (správných odpovědí) a P neznámé rozdělení pravděpodobnosti dvojic (X, Y) na 𝒳 × 𝒴. Dále nechť
- n ∈ ℕ, n ≥ 1, a trénovací množina D = ((xi, yi))i=1n je posloupnost dvojic (xi, yi) ∈ 𝒳 × 𝒴 vybraných z P navzájem nezávisle;
- {fθ : 𝒳 → 𝒴 : θ ∈ ℝp} je model (viz definice výše);
- L : 𝒴 × 𝒴 → [0, ∞) je ztrátová funkce — L(ŷ, y) je trest za odpověď ŷ, je-li správná odpověď y.
Učení s učitelem je hledání parametrů, které minimalizují empirické riziko R̂ : ℝp → [0, ∞):
R̂(θ) = 1/n ∑i=1n L(fθ(xi), yi), θ* ∈ argminθ ∈ ℝp R̂(θ).
Cílem ale není trénovací množina — model má mít malé skutečné riziko R(θ) = E(X, Y) ∼ P[L(fθ(X), Y)], tj. dobře fungovat na nových datech z téhož rozdělení (generalizace). R neznáme, proto se odhaduje průměrnou ztrátou na odložené testovací množině, která se k učení nepoužila.
Jako dítě s obrázkovou knížkou: u každého obrázku je napsáno „pes“ nebo „kočka“. Model se dívá na příklady se správnou odpovědí a ladí se tak, aby se trefoval. Ztrátová funkce je trest za každou chybu. A zkoušku dělá na obrázcích, které nikdy předtím neviděl — nazpaměť naučené odpovědi se nepočítají.
θ* = argminθ 1/n ∑i=1n L(fθ(xi), yi)
- fθ(xi)
- odpověď modelu na i-tý příklad — jediné místo, kde vystupují parametry, se kterými smíme hýbat
- yi
- správná odpověď od učitele; právě tenhle signál učení s učitelem odlišuje od ostatních druhů
- L
- ztráta převede rozdíl mezi odpovědí a štítkem na jedno nezáporné číslo, aby se dalo minimalizovat — pro třídy křížová entropie, pro čísla čtverec rozdílu
- 1/n ∑
- průměr přes trénovací množinu; skutečné riziko E[L] přes celé rozdělení P(X, Y) neznáme, tak ho odhadneme průměrem na vzorku (proto „empirické“)
- θ* = argminθ
- nezajímá nás nejmenší hodnota ztráty, ale parametry, při kterých nastane — ty jsou naučený model
Podle toho, co je štítek y, rozlišujeme dvě úlohy.
Klasifikace
Definice — klasifikace
Klasifikace je učení s učitelem, ve kterém je prostor štítků konečná množina tříd 𝒴 = {1, …, K}, K ∈ ℕ, K ≥ 2. Model k vstupu x ∈ 𝒳 vrací odhad rozdělení přes třídy, tj. čísla pθ(k | x) ≥ 0 pro k = 1, …, K s ∑k=1K pθ(k | x) = 1.
Běžná ztráta je křížová entropie: pro x ∈ 𝒳 se štítkem y ∈ 𝒴
L = −∑k=1K [y = k] log pθ(k | x) = −log pθ(y | x),
kde [y = k] je 1, právě když y = k, a jinak 0.
Logistická regrese pro dvě třídy 𝒴 = {0, 1}: nechť 𝒳 = ℝd, parametry jsou w ∈ ℝd a b ∈ ℝ a σ : ℝ → (0, 1) je logistická funkce
σ(z) = 1/1 + e−z.
Model je p(y = 1 | x) = σ(w⊤x + b) a p(y = 0 | x) = 1 − σ(w⊤x + b). Bod x zařadí do třídy 1, právě když σ(w⊤x + b) ≥ 0,5, tj. právě když w⊤x + b ≥ 0. Rozhodovací hranice je množina
{x ∈ ℝd : w⊤x + b = 0}
— pro w ≠ 0 nadrovina, v rovině (d = 2) přímka.
Klasifikace odpovídá „do které škatulky to patří“: spam, nebo ne? Pes, kočka, nebo papoušek? Logistická regrese natáhne mezi třídami čáru a o každém bodu řekne, s jakou jistotou leží na které straně.
V grafu je 60 bodů ze dvou tříd. Hranice začíná schválně špatně a gradientní sestup ji epochu po epoše posouvá, až třídy oddělí:
Pro dvě třídy se křížová entropie zapisuje jedním vzorcem (barvy tříd jako v grafu, p = σ(w⊤x + b) je odhad pravděpodobnosti třídy 1):
L(p, y) = −[ y log p + (1 − y) log(1 − p) ]
- y log p
- uplatní se jen u bodů třídy 1 (y = 1, jantarové): trestá, když model jejich třídě dá malou pravděpodobnost p
- (1 − y) log(1 − p)
- totéž pro třídu 0 (y = 0, zelené), jejíž pravděpodobnost je 1 − p; činitele y a 1 − y fungují jako vypínač — vždy platí jen jeden ze sčítanců
- −
- logaritmus pravděpodobnosti je záporný; minus z něj udělá kladný trest. Jistá správná odpověď stojí −log 1 = 0, jistá chybná → ∞ — sebevědomý omyl je nejdražší
Algoritmus — logistická regrese gradientním sestupem
Derivace průměrné křížové entropie J podle vah vyjde překvapivě jednoduše (díky σ′ = σ(1 − σ) se zkrátí):
∂J/∂w = 1/n ∑i=1n (pi − yi) xi, ∂J/∂b = 1/n ∑i=1n (pi − yi),
kde pi = σ(w⊤xi + b).
w, b ← počáteční hodnoty
opakuj E epoch: # epocha = jeden průchod všemi daty
g_w, g_b ← 0, 0
pro každý příklad (x, y):
p ← σ(w·x + b) # odhad pravděpodobnosti třídy 1
g_w ← g_w + (p − y)·x # chyba odhadu krát vstup
g_b ← g_b + (p − y)
w ← w − η·g_w / n # krok proti gradientu
b ← b − η·g_b / n
třída(x) = 1, pokud σ(w·x + b) ≥ 0,5, jinak 0
Přesnost (accuracy) je podíl správně zařazených příkladů: |{i ∈ {1, …, n} : třída(xi) = yi}|/n.
Příklad — co se děje v grafu
Start: w = (0,4; 1,2), b = −0,9, rychlost učení η = 2,5. První bod má souřadnice (0,604; 0,673) a třídu 0:
z = 0,4 · 0,604 + 1,2 · 0,673 − 0,9 = 0,148, p = σ(0,148) = 1/1 + e−0,148 = 0,537.
Model tedy bodu třídy 0 přisoudí třídu 1 s pravděpodobností 0,537 — chyba. Ztráta (y = 0, takže ze vzorce křížové entropie výše zbude jen druhý sčítanec) je −ln(1 − 0,537) = 0,770 (barvy podle vzorce výše) a příspěvek ke gradientu (p − y) x = 0,537 · (0,604; 0,673) táhne obě váhy dolů.
Na celých datech: přesnost na startu 15 %, po 5 epochách 95 %, od 16. epochy 100 %. Průměrná křížová entropie (přirozený logaritmus) klesne z 0,780 na 0,175 po 60 epochách; i když jsou už všechny body správně, model dál zvětšuje váhy, aby si byl jistější.
Regrese
Definice — regrese
Regrese je učení s učitelem, ve kterém jsou štítky reálná čísla: 𝒴 = ℝ. Nechť (xi, yi) ∈ 𝒳 × ℝ, i = 1, …, n, jsou trénovací dvojice a f : 𝒳 → ℝ model. Běžná ztráta je střední kvadratická chyba
MSE(f) = 1/n ∑i=1n (f(xi) − yi)2.
Lineární regrese s jedním vstupem: nechť 𝒳 = ℝ, n ≥ 2 a x1, …, xn nejsou všechna stejná. Model je f(x) = ax + b s parametry a, b ∈ ℝ. Označme průměry x̄ = 1/n ∑i=1n xi a ȳ = 1/n ∑i=1n yi. Pak MSE má jediné minimum (metoda nejmenších čtverců) v bodě
a = ∑i=1n (xi − x̄)(yi − ȳ)/∑i=1n (xi − x̄)2, b = ȳ − ax̄.
(Předpoklad, že xi nejsou všechna stejná, zaručuje nenulový jmenovatel.)
Regrese odpovídá „kolik“: kolik bude stát byt, jaká bude zítra teplota. Lineární regrese proloží body přímku tak, aby součet čtverců svislých vzdáleností — na obrázku čárkovaně — byl co nejmenší.
Odvození a příklad — proč zrovna tenhle vzorec pro přímku
MSE(a, b) je kvadratická funkce dvou proměnných, takže minimum je tam, kde jsou obě parciální derivace nulové:
∂/∂b: 2/n ∑ (axi + b − yi) = 0 ⇒ b = ȳ − ax̄ (přímka prochází těžištěm dat),
∂/∂a: 2/n ∑ (axi + b − yi) xi = 0; po dosazení b vyjde vzorec pro a z definice výše.
Pro 24 bytů v grafu: a = 0,797, b = 0,083, MSE = 0,0046, tedy typická svislá odchylka (čárkované úsečky) √MSE ≈ 0,068. Data jsme vyrobili jako y = 0,12 + 0,72 x + šum se směrodatnou odchylkou 0,06 — metoda z 24 bodů trefila skutečný sklon i šum zhruba, ne přesně.
Učení s učitelem pohání většinu praktických aplikací: filtry spamu, rozpoznávání obličejů, diagnostiku z rentgenových snímků, odhad ceny nemovitosti. Má ale jednu drahou podmínku — někdo musí data označit. A to bývá to nejdražší na celém projektu.
3. Učení bez učitele (unsupervised learning)
Definice — učení bez učitele
Nechť 𝒳 je prostor vstupů, PX neznámé rozdělení na 𝒳 a D = (xi)i=1n, xi ∈ 𝒳, vstupy vybrané z PX navzájem nezávisle — bez štítků. Učení bez učitele hledá z D strukturu rozdělení PX. Typické úlohy:
- shlukování — rozklad indexů {1, …, n} na k neprázdných, navzájem disjunktních množin C1, …, Ck (shluků) tak, aby si body v jednom shluku byly podobné;
- snížení dimenze — pro 𝒳 = ℝd zobrazení g : ℝd → ℝm, m < d, které zachová co nejvíc informace o datech;
- odhad hustoty — funkce p̂ : 𝒳 → [0, ∞), která aproximuje hustotu p(x) rozdělení PX.
Co přesně je „podobné“ nebo „co nejvíc informace“, určí až konkrétní metoda svou účelovou funkcí — jako k-means níže.
Dostanete krabici fotek bez popisků a máte je roztřídit. Nikdo vám neřekne podle čeho — sami si všimnete, že některé jsou z moře a jiné z hor. Model hledá podobnosti a vzory, které v datech jsou, i když je nikdo nepojmenoval.
Shlukování: k-means
Definice — k-means
Nechť x1, …, xn ∈ ℝd jsou body, k ∈ ℕ, 1 ≤ k ≤ n, a ‖·‖ je eukleidovská norma. Pro rozklad bodů do k navzájem disjunktních shluků C1, …, Ck (každý bod patří právě do jednoho) a středy μ1, …, μk ∈ ℝd je vnitroshluková suma čtverců
J(C1, …, Ck, μ1, …, μk) = ∑j=1k ∑x ∈ Cj ‖x − μj‖2.
Úloha k-means je najít shluky a středy, pro které je J minimální.
Lloydův algoritmus (přibližné řešení). Vstup: body x1, …, xn ∈ ℝd, počet shluků k a počáteční středy μ1, …, μk ∈ ℝd. Výstup: shluky C1, …, Ck a středy μ1, …, μk. Opakuj:
- přiřazení: každý bod xi zařaď do shluku Cj s j ∈ argminj′ ∈ {1, …, k} ‖xi − μj′‖2 (nejbližší střed);
- přesun středů: pro každé j = 1, …, k s Cj ≠ ∅ polož μj = 1/|Cj| ∑x ∈ Cj x (průměr bodů shluku).
Zastavení: když se v kroku 2 žádný střed nezmění. Žádný krok J nezvýší a možných rozkladů je konečně mnoho, takže algoritmus skončí — ale obecně jen v lokálním minimu J.
Postavíte do místnosti tři vlajky. Každý člověk se postaví k té nejbližší. Pak každou vlajku přenesete doprostřed jejího hloučku. Lidé se znovu přerozdělí, vlajky se znovu posunou — a za pár kol se nic nemění. Hloučky jsou shluky.
Středy (křížky) začínají schválně všechny v levém dolním rohu. Už po první iteraci se rozjedou ke svým skupinám a po čtyřech iteracích se přestanou hýbat.
Algoritmus — Lloydův algoritmus (k-means)
μ₁, …, μ_k ← počáteční středy
opakuj:
pro každý bod x: # krok 1: přiřazení
c(x) ← argmin_j ‖x − μ_j‖²
pro každé j = 1, …, k: # krok 2: přesun středů
μ_j ← průměr bodů s c(x) = j
dokud se středy hýbou
Proč J neroste. Krok 1 mění jen přiřazení a každý bod přejde k bližšímu středu, takže jeho sčítanec ‖x − μj‖2 neroste. Krok 2 mění jen středy a průměr je bod, který minimalizuje součet čtverců vzdáleností ke skupině bodů (derivace ∑ ‖x − μ‖2 podle μ je −2 ∑ (x − μ), nulová právě pro průměr). Možných přiřazení je konečně mnoho, takže algoritmus skončí.
V našem grafu (66 bodů) má J v jednotlivých iteracích hodnoty 19,330 → 2,937 → 1,048 → 0,655 — největší kus práce udělá hned první přesun středů ze špatného startu.
Další úlohy bez učitele: snížení dimenze (například PCA promítne data do několika směrů, ve kterých se nejvíc liší — užitečné pro vizualizaci i kompresi), detekce anomálií (co se nepodobá ničemu, co už známe — podvodná platba, porucha stroje) a odhad hustoty.
4. Učení s částečným učitelem (semi-supervised learning)
Definice — učení s částečným učitelem
Nechť 𝒳 je prostor vstupů, 𝒴 prostor štítků, P neznámé rozdělení na 𝒳 × 𝒴 a l, u ∈ ℕ, l ≥ 1. Jsou dány
- malá označená množina DL = ((xi, yi))i=1l, (xi, yi) ∈ 𝒳 × 𝒴, vybraná nezávisle z P;
- velká neoznačená množina DU = (xj)j=l+1l+u, xj ∈ 𝒳, vybraná nezávisle z rozdělení samotných vstupů X (štítky yj existují, ale neznáme je), kde u ≫ l.
Učení s částečným učitelem má stejný cíl jako učení s učitelem — model fθ : 𝒳 → 𝒴 s malým skutečným rizikem —, ale k jeho dosažení využije DL i DU.
Neoznačená data mohou pomoci jen tehdy, když rozdělení vstupů něco říká o štítcích. Používají se tyto předpoklady (každá metoda stojí aspoň na jednom z nich):
- hladkost — jsou-li dva vstupy x, x′ ∈ 𝒳 blízko sebe v oblasti, kde je hodně dat, mají (s velkou pravděpodobností) stejný štítek;
- shluky — vstupy z jednoho shluku mají (s velkou pravděpodobností) stejný štítek, takže hranice tříd vede místy s malou hustotou dat;
- varieta — data v 𝒳 = ℝd leží blízko plochy (variety) dimenze m < d a vzdálenost bodů se má měřit po této ploše, ne přímou čarou v ℝd.
Máte deset tisíc fotek, ale popsat jste stihli jen deset. Neoznačené fotky přesto pomáhají: ukazují, jak data „vypadají“ — kde jsou hloučky a kudy mezi nimi vede prázdno. Štítky se pak rozšíří po hloučcích samy.
Šíření štítků po grafu
Vstup: body x1, …, xN ∈ ℝd, z nichž některé mají štítek ze 𝒴 = {0, 1}, a počet sousedů k ∈ ℕ (zde k = 4). Výstup: štítek pro každý bod, do kterého se dá z označených bodů dojít po hranách grafu.
- Sestroj neorientovaný graf: body xi a xj (i ≠ j) spoj hranou, právě když xj patří mezi k nejbližších sousedů bodu xi, nebo xi mezi k nejbližších sousedů bodu xj (podle eukleidovské vzdálenosti).
- V jednom kole projdi všechny neoznačené body; každý, který má aspoň jednoho označeného souseda, dostane štítek, který má většina jeho označených sousedů (při rovnosti hlasů štítek 0). Štítky přidělené v kole platí až od dalšího kola.
- Zastavení: opakuj krok 2, dokud jsou neoznačené body a v posledním kole přibyl aspoň jeden štítek.
Data jsou dva „měsíce“ po 40 bodech. Štítek mají jen dva body — jeden v každém měsíci, zvýrazněné obrysem. Ostatní jsou šedé:
Štítky se šíří po měsících jako požár po suché trávě a za 10 kol jsou správně označené všechny body. Kdybychom neoznačená data ignorovali a každý bod zařadili jen podle toho, ke kterému ze dvou označených bodů má blíž, bylo by správně jen 84 %: konce měsíců leží blíž k cizímu označenému bodu než k vlastnímu. Rozdíl dělá právě tvar dat, který známe jen díky neoznačeným bodům.
Podobně fungují pseudoštítky (self-training): model natrénovaný na malé označené množině označí ta neoznačená data, kde si je nejjistější, a učí se dál i z nich.
5. Samoučení (self-supervised learning)
Definice — samoučení
Nechť D = (xi)i=1n, xi ∈ 𝒳, jsou neoznačená data a nechť g je pevně zvolené (případně náhodné) pravidlo, které z každého vstupu x ∈ 𝒳 automaticky, bez lidské práce, vyrobí dvojici
g(x) = (x̃, t),
kde x̃ je část nebo poškozená verze vstupu x a t to, co v x̃ chybí. Samoučení je učení s učitelem na trénovací množině (g(xi))i=1n: model dostane x̃ a má předpovědět t. Tato uměle vyrobená úloha se jmenuje předtextová úloha (pretext task).
Předpověď dalšího tokenu — tak se předtrénovávají velké jazykové modely. Nechť V je konečný slovník tokenů a text je posloupnost x1, …, xT ∈ V, T ≥ 1. Model pro každé t = 1, …, T vrací rozdělení pθ(· | x1, …, xt−1) na V (pro t = 1 bez podmínky) a parametry θ se volí tak, aby byla co největší
∑t=1T log pθ(xt | x1, …, xt−1).
Tady x̃ = (x1, …, xt−1) a t-tý token je štítek.
Učitel tu je, ale nikdo ho nemusel platit: odpovědi jsou schované přímo v datech. Zakryjete slovo ve větě a model hádá, jaké tam bylo. Text z internetu tak sám sebe opraví — a model si cestou musí osvojit gramatiku, fakta i kus uvažování, jinak by hádal špatně.
Samoučení je technicky učení s učitelem, ale štítky stojí nula korun — a proto se dá použít na celý internet. Pro obrázky se používá podobný trik: model dostane dva různé ořezy téže fotky a učí se, že patří k sobě (kontrastivní učení). Výsledek, takzvaný základní model, se pak pro konkrétní úlohu doladí na malém množství označených dat.
6. Zpětnovazební učení (reinforcement learning)
Definice — Markovův rozhodovací proces
Markovův rozhodovací proces (prostředí) je pětice (S, A, P, R, γ), kde
- S je neprázdná množina stavů (u nás konečná — políčka mřížky);
- A je neprázdná konečná množina akcí;
- P je pravděpodobnost přechodu: pro každé s ∈ S a a ∈ A je P(· | s, a) rozdělení pravděpodobnosti na S, tj. P(s′ | s, a) ≥ 0 a ∑s′ ∈ S P(s′ | s, a) = 1 (P(s′ | s, a) je pravděpodobnost, že akce a ve stavu s vede do stavu s′);
- R : S × A × S → ℝ je odměna za přechod z s akcí a do s′;
- γ ∈ [0, 1) je diskontní faktor.
Politika agenta je pravidlo π, které každému stavu s ∈ S přiřadí rozdělení π(· | s) na A. Agent začne ve stavu s0 a pro t = 0, 1, 2, … volí akci at podle π(· | st), prostředí vybere další stav st+1 podle P(· | st, at) a agent dostane odměnu rt = R(st, at, st+1). Návrat je
G = ∑t=0∞ γt rt
(v koncovém stavu epizoda končí a další odměny jsou 0) a cílem je najít politiku, která maximalizuje jeho střední hodnotu E[G].
Hodnota akce Q(s, a) je očekávaný návrat, když agent ve stavu s provede akci a a dál hraje nejlépe. Q-learning ji odhaduje tabulkou Q : S × A → ℝ (na začátku např. samé nuly): po každém kroku (s, a, r, s′) s rychlostí učení α ∈ (0, 1] provede
Q(s, a) ← Q(s, a) + α [r + γ maxa′ ∈ A Q(s′, a′) − Q(s, a)],
přičemž je-li s′ koncový stav, bere se maxa′ Q(s′, a′) = 0.
Nikdo agentovi neřekne, co je správný tah. Zkouší, a svět mu za každý krok vrátí odměnu nebo trest. Postupně si zapamatuje, které tahy se kde vyplácejí — včetně těch, které se vyplatí až za deset kroků. Diskontní faktor γ říká, jak moc mu na budoucích odměnách záleží oproti těm okamžitým.
Q(s, a) ← Q(s, a) + α [r + γ maxa′ Q(s′, a′) − Q(s, a)]
- Q(s, a)
- dosavadní odhad, kolik vynese akce a ve stavu s; uvnitř závorky se odečítá, aby závorka měřila překvapení — rozdíl mezi tím, co agent čekal, a tím, co právě zažil
- r
- odměna, kterou svět vrátil hned po kroku (−1, +10 nebo −10) — jediný skutečný signál zvenku
- maxa′ Q(s′, a′)
- odhad všeho, co přijde potom, když bude agent od stavu s′ hrát nejlépe; díky tomuhle členu se hodnota cíle šíří zpět po cestě krok za krokem. Maximum (ne skutečně zvolená akce) dovolí učit se nejlepší politiku, i když agent občas zkouší náhodné tahy. V koncovém stavu je tento člen 0
- γ
- budoucí odměny mají menší váhu než okamžité; zároveň díky γ < 1 zůstane nekonečný součet G konečný
- α
- rychlost učení — jakou část překvapení převzít; odměny i přechody mohou být náhodné, tak nový zážitek starý odhad jen posune, nepřepíše
Definice — ε-hladová volba akcí
Nechť A je konečná neprázdná množina akcí, Q : S × A → ℝ tabulka hodnot akcí a ε ∈ [0, 1]. Pro stav s ∈ S zvolme a*(s) ∈ argmaxa ∈ A Q(s, a) (při rovnosti libovolnou z nejlepších). ε-hladová politika zvolí ve stavu s akci a ∈ A s pravděpodobností
π(a | s) = ε/|A| + (1 − ε) · [a = a*(s)],
kde [a = a*(s)] je 1, právě když a = a*(s), jinak 0. Jinými slovy: s pravděpodobností ε zvolí akci náhodně (rovnoměrně ze všech), jinak akci s největším Q(s, a). U nás ε = 0,2.
Kdo chodí pořád do své oblíbené restaurace, nikdy nezjistí, že o ulici dál vaří líp. Agent proto v pětině kroků zkusí něco náhodného — průzkum — a jinak dělá to, co zatím považuje za nejlepší — využití.
Agent (oranžový) se pohybuje po mřížce. Každý krok stojí −1, cíl dává +10 a past −10; do zdí vstoupit nejde. Na začátku nic neví. Po 600 epizodách Q-learningu (α = 0,5, γ = 0,95, s náhodným průzkumem v 20 % kroků) ukazují šipky nejlepší naučenou akci v každém políčku:
Agent jde nejkratší cestou do cíle a past obchází. Jak se to učil, je vidět na průměrném návratu: v prvních 50 epizodách byl −11,1 (agent bloudil a padal do pasti), v posledních 50 už −1,8 — rozdíl proti optimu dělá náhodný průzkum, který agent při tréninku nevypíná.
Příklad — první aktualizace a hodnota startu
První krok. Na začátku je celá tabulka Q nulová. Agent udělá krok na obyčejné políčko: r = −1 a maxa′ Q(s′, a′) = 0, takže
Q(s, a) ← 0 + 0,5 · [−1 + 0,95 · 0 − 0] = −0,5
(barvy podle vzorce Q-learningu výše). Krok do cíle je koncový, takže člen maxa′ Q(s′, a′) je 0: Q ← 0 + 0,5 · [10 − 0] = 5. Při dalších návštěvách se pětka posune k 10 a po cestě zpět se šíří dál, vždy vynásobená 0,95 a zmenšená o cenu kroku.
Hodnota startu. Nejkratší cesta má 10 kroků: devět obyčejných za −1 a poslední do cíle za +10. Nediskontovaný návrat je 9 · (−1) + 10 = 1, diskontovaný
G = −(1 + 0,95 + … + 0,958) + 0,959 · 10 = −1 − 0,959/1 − 0,95 + 10 · 0,959 = −7,395 + 6,302 = −1,093.
Naučená tabulka má na startu maxa Q(start, a) = −1,093 — Q-learning tu hodnotu optimální cesty našel přesně.
Zpětnovazební učení stojí za programy, které porazily mistry světa v go, za řízením robotů — a také za doladěním jazykových modelů: RLHF (zpětnovazební učení z lidské zpětné vazby) používá jako odměnu model natrénovaný na tom, které odpovědi lidé hodnotili lépe.
7. Další způsoby dělení
Druh učitele není jediné hledisko. Pár dalších, které potkáte:
Definice — přenos učení (transfer learning)
Nechť Jzdroj, Jcíl : ℝp → ℝ jsou účelové funkce zdrojové úlohy (obvykle s hodně daty) a cílové úlohy (obvykle s málo daty) pro model se stejnými parametry θ ∈ ℝp, a nechť θ0 jsou parametry naučené na zdrojové úloze, tj. (přibližně) θ0 ∈ argminθ Jzdroj(θ). Přenos učení hledá
θ* ∈ argminθ Jcíl(θ)
gradientním sestupem, který začne v θ0 (místo náhodných hodnot). Při doladění (fine-tuning) se často mění jen parametry s indexy z malé množiny I ⊂ {1, …, p}; ostatní zůstanou rovné hodnotám v θ0.
Kdo umí jezdit na kole, naučí se motorku rychleji. Model, který už „viděl svět“, stačí doučit na pár stovkách příkladů z vaší úlohy.
Definice — aktivní učení
Nechť DL je označená a DU neoznačená množina (jako u učení s částečným učitelem), 𝒴 = {1, …, K} a model pθ(· | x) natrénovaný na DL. Aktivní učení opakuje tyto kroky:
- model sám vybere vstup x* ∈ DU, o kterém je nejméně jistý — například s nejvyšší entropií: x* ∈ argmaxx ∈ DU H(pθ(· | x));
- člověk (učitel) mu doplní štítek y*; dvojice (x*, y*) se přesune z DU do DL;
- model se znovu natrénuje na DL;
dokud nedojde rozpočet na označování.
Nechť p je rozdělení na {1, …, K}, tj. p(k) ≥ 0 a ∑k=1K p(k) = 1. Jeho entropie (v bitech) je
H(p) = −∑k=1K p(k) log2 p(k), kde se klade 0 · log2 0 = 0.
Pro dvě třídy: odhad 50 : 50 má H = −2 · 0,5 · log2 0,5 = 1 bit (nejvíc možného), odhad 90 : 10 H = −0,9 log2 0,9 − 0,1 log2 0,1 ≈ 0,137 + 0,332 = 0,469 bitu, odhad 99 : 1 jen 0,081 bitu. K označení půjde jako první příklad, kde model váhá 50 : 50.
Místo aby člověk popisoval všechno, model se ptá jen na to, čemu nerozumí. Stejný výsledek za zlomek práce.
Definice — generativní a diskriminativní modely
Nechť 𝒳 je prostor vstupů a 𝒴 prostor štítků.
- Diskriminativní model se učí přímo podmíněné rozdělení pθ(y | x) pro x ∈ 𝒳, y ∈ 𝒴, nebo rovnou rozhodovací funkci fθ : 𝒳 → 𝒴 (a tedy rozhodovací hranici). O tom, jak jsou rozdělené samotné vstupy x, nic neříká.
- Generativní model se učí rozdělení dat pθ(x) na 𝒳, případně sdružené rozdělení pθ(x, y) na 𝒳 × 𝒴, a umí z něj vzorkovat nová data. Ze sdruženého rozdělení se dá dopočítat i podmíněné (pro konečné 𝒴): pθ(y | x) = pθ(x, y)/∑y′ ∈ 𝒴 pθ(x, y′).
Diskriminativní model pozná psa od kočky. Generativní model ví, jak pes vypadá, tak dobře, že ho umí nakreslit. Jazykové modely i generátory obrázků jsou generativní.
A ještě dávkové vs. průběžné učení (model se natrénuje jednou na všech datech, nebo se učí průběžně z každého nového příkladu) a parametrické vs. neparametrické modely (pevný počet parametrů jako logistická regrese, nebo model, který roste s daty jako k nejbližších sousedů).
8. Srovnání
| Druh učení | Data | Signál | Typické úlohy | Příklady algoritmů |
|---|---|---|---|---|
| S učitelem | (x, y) | správná odpověď | klasifikace, regrese | logistická regrese, rozhodovací stromy, neuronové sítě |
| Bez učitele | x | žádný | shlukování, snížení dimenze, anomálie | k-means, PCA, autoenkodéry |
| S částečným učitelem | málo (x, y) + hodně x | pár odpovědí | klasifikace s drahými štítky | šíření štítků, pseudoštítky |
| Samoučení | x | vyrobený z dat | předtrénování základních modelů | předpověď tokenu, maskování, kontrastivní učení |
| Zpětnovazební | interakce s prostředím | odměna | hry, roboti, řízení, RLHF | Q-learning, policy gradient, PPO |
9. Shrnutí
- Druhy učení se liší tím, jakou zkušenost E model dostane: správné odpovědi, jen data, trochu obojího, odpovědi vyrobené z dat, nebo odměny za činy.
- Učení s učitelem je nejpřímočařejší, ale potřebuje drahé štítky.
- Bez učitele se hledá struktura; s částečným učitelem pomáhá neoznačená data rozšířit pár štítků na všechno.
- Samoučení vyrábí štítky z dat samotných — na něm stojí dnešní jazykové modely.
- Zpětnovazební učení učí jednat: zkoušet, sbírat odměny a myslet dopředu.
V praxi se druhy kombinují. Velký jazykový model se předtrénuje samoučením, doladí s učitelem na ukázkových odpovědích a nakonec zpětnovazebním učením podle hodnocení lidí. Tři druhy učení v jednom modelu, se kterým si možná zrovna píšete.
Máte na to jiný názor? Napište na support@coden-app.com.