Co je umělá inteligence · lekce 2 z 10 · 13 min čtení
Jak se stroj učí: data, vzory a neuronové sítě
Proč se dnešní AI nepíše jako sada pravidel, ale učí se z příkladů. Co je trénink, jak funguje neuronová síť bez matematiky a proč kvalita dat rozhoduje o všem.
Představ si, že máš napsat program, který pozná spam. Asi začneš pravidly: když e-mail obsahuje „vyhrál jste“, je to spam. Když obsahuje „Viagra“, taky. Když je celý napsaný velkými písmeny, nejspíš taky. Po týdnu máš sto pravidel, a stejně ti spam proklouzává, protože podvodníci začnou psát „vyhr@l jste“. A k tomu ti filtr zahodí e-mail od kolegy, který se ptá, jestli jsi „vyhrál“ v losování o parkovací místo.
Tohle je přesně ten problém, kvůli kterému vzniklo strojové učení. V téhle lekci uvidíš, jak se stroj „učí“, co to slovo doopravdy znamená a proč je kvalita dat tak zásadní. Bez vzorců, ale tak, abys tomu skutečně rozuměl.
Pravidla od lidí vs. učení z příkladů
Klasický program funguje tak, že člověk vymyslí pravidla a počítač je poslušně vykonává. Na spoustu věcí je to ideální: spočítat mzdy, seřadit faktury, ověřit, že rodné číslo má správný formát. Pravidla jsou průhledná, předvídatelná a snadno se kontrolují.
Jenže některé úlohy se pravidly popsat nedají. Zkus někomu napsat přesný postup, jak poznat kočku na fotce. Nebo jak poznat, že je zákazník v e-mailu naštvaný, i když to nenapíše. Lidé to zvládají intuitivně, ale svá „pravidla“ neumějí vyslovit.
Strojové učení na to jde obráceně. Místo pravidel dáš počítači příklady se správnými odpověďmi a necháš ho, ať si pravidla odvodí sám.
| Klasický program | Strojové učení | |
|---|---|---|
| Člověk dodá | Pravidla | Příklady (data) a správné odpovědi |
| Počítač vytvoří | Výsledek podle pravidel | Vlastní „pravidla“ (model), která pak použije na nové případy |
| Silná stránka | Průhlednost, přesnost | Zvládne úlohy, které neumíme popsat |
| Slabina | Nepružnost, ruční údržba | Je jen tak dobrý jako jeho data, hůř se vysvětluje |
- Model(model)
- Výsledek učení: soubor naučených čísel a struktura, která z nového vstupu (třeba e-mailu) vypočítá výstup (třeba „spam s pravděpodobností 97 %“). Když se mluví o „AI modelu“, myslí se právě tohle.
U spamového filtru to vypadá takto: vezmeš statisíce e-mailů, u každého je napsáno, jestli je to spam, nebo ne (protože to lidé označili). Program si sám všimne, která slova, odesílatelé, odkazy nebo jejich kombinace se ve spamu objevují častěji. Nikdo mu neřekl „hledej Viagru“. Přišel na to z dat. A když se podvodníci změní, stačí model přeučit na nových příkladech, místo psaní dalších pravidel.
Trénovací data, trénink a testování
Učení modelu probíhá ve dvou hlavních fázích, které je dobré rozlišovat.
- Trénovací data(training data)
- Příklady, ze kterých se model učí. U spamového filtru jsou to označené e-maily, u jazykového modelu obrovské množství textu.
- Trénink(training)
- Proces, při kterém si model postupně upravuje svá vnitřní čísla tak, aby na trénovacích datech dával co nejsprávnější odpovědi. Dělá se předem a bývá výpočetně náročný.
Po tréninku přichází zkouška. Část dat se předem schová a model ji při učení vůbec neuvidí. Na ní se pak měří, jak dobře funguje. Proč? Protože nás nezajímá, jestli si model zapamatoval příklady, které už viděl. Zajímá nás, jestli zvládne nové, které ještě neviděl. Přesně tak to bude v ostrém provozu.
Když pak model běží a odpovídá na skutečné vstupy, říká se tomu inference (odvozování). Už se nic neučí, jen používá to, co se naučil. To je důležité i pro běžné používání ChatGPT a podobných nástrojů: když s nimi mluvíš, model se v tu chvíli „neučí“ jako při tréninku, jen pracuje s tím, co mu napíšeš. Jak přesně se trénují velké jazykové modely, probereme v lekci o tréninku modelů.
Tři způsoby učení
Strojové učení se obvykle dělí na tři velké skupiny podle toho, jaké „zpětné vazby“ se modelu při učení dostává.
Učení s učitelem
- Učení s učitelem(supervised learning)
- Model dostává příklady i se správnými odpověďmi (tzv. štítky, labels) a učí se je předpovídat.
Je to nejčastější typ v byznysu. Příklady: spam / ne spam, fotka kočky / psa, odhad ceny bytu podle plochy a lokality, předpověď, jestli zákazník odejde ke konkurenci. Háček je v tom, že někdo musí ty správné odpovědi připravit, a to bývá drahé a pracné.
Učení bez učitele
- Učení bez učitele(unsupervised learning)
- Model dostane data bez správných odpovědí a hledá v nich strukturu sám: podobné skupiny, neobvyklé případy, souvislosti.
Typický příklad: e-shop má data o nákupech tisíců zákazníků a chce je rozdělit do skupin s podobným chováním, aniž by předem věděl, jaké skupiny existují. Model třeba najde „víkendové nakupující s malým košíkem“ a „firemní zákazníky, kteří objednávají jednou měsíčně ve velkém“. Pojmenovat a vyložit ty skupiny ale musí člověk. Podobně se hledají neobvyklé transakce, které mohou znamenat podvod.
Zpětnovazební učení
- Zpětnovazební učení(reinforcement learning)
- Model (často se mu říká agent) zkouší akce v nějakém prostředí a dostává za ně odměnu nebo trest. Postupně se učí jednat tak, aby celková odměna byla co největší.
Představ si, jak se pes učí aport: nikdo mu nevysvětlí postup, ale za správné chování dostane pamlsek. Slavný příklad je program AlphaGo od DeepMind, který v roce 2016 porazil jednoho z nejlepších hráčů go na světě, Lee Sedola. Nejdřív se učil z partií lidských hráčů a pak hrál znovu a znovu sám proti sobě a učil se z toho, které tahy vedly k výhře. Varianta zpětnovazebního učení se používá i při dolaďování jazykových modelů, aby odpovídaly užitečněji, ale o tom až ve druhém modulu.
Neuronová síť bez matematiky
Většina dnešní AI, o které se mluví, stojí na neuronových sítích. Název zní tajemně a svádí k představě umělého mozku. Ve skutečnosti jde o něco mnohem střízlivějšího: o obrovský počet jednoduchých výpočtů zapojených za sebou.
- Neuronová síť(neural network)
- Matematický model složený z mnoha jednoduchých jednotek (umělých neuronů) uspořádaných do vrstev. Každá jednotka vezme čísla od předchozí vrstvy, zváží je, sečte a výsledek pošle dál. Volně se inspiruje mozkem, ale funguje mnohem jednodušeji.
Nejlíp si jeden neuron představíš jako hlasování s váhami. Řekněme, že rozhoduješ, jestli jít o víkendu na výlet. Zvažuješ několik věcí: bude hezky? Má čas partner? Nejsi unavený? Každá z těch věcí má pro tebe jinou důležitost. Počasí třeba hodně, únava trochu. Sečteš to a když součet překročí určitou hranici, jdeš.
Umělý neuron dělá přesně tohle, jen s čísly:
- Dostane několik vstupů (čísel).
- Každý vstup vynásobí jeho váhou: velká váha znamená „na tomhle hodně záleží“, záporná „tohle mluví proti“.
- Všechno sečte a výsledek trochu upraví (aby neuron nebyl jen obyčejná sčítačka).
- Výsledek pošle neuronům v další vrstvě.
- Váhy a parametry(weights, parameters)
- Čísla uvnitř sítě, která určují, jak silně který vstup ovlivňuje výsledek. Právě tyhle hodnoty se při tréninku nastavují. Celé „vědění“ modelu je uložené v nich. Počet těchto čísel se označuje jako počet parametrů.
Síla neuronové sítě je v tom, že těch neuronů jsou tisíce až miliardy a jsou propojené ve vrstvách. První vrstvy u rozpoznávání obrázků zachytí jednoduché věci, třeba hrany a skvrny barev. Další vrstvy z nich skládají tvary, pak části (oko, ucho) a nakonec celé objekty. Nikdo jim neřekl „hledej uši“. Ukázalo se, že takové mezikroky si síť sama vytvoří, protože jí pomáhají dávat správné odpovědi. Slovo hluboké v „hlubokém učení“ znamená právě to, že vrstev je mnoho.
Pro představu měřítka: síť, která v roce 2012 způsobila průlom v rozpoznávání obrázků (více v lekci o historii), měla podle svých autorů 60 milionů parametrů. Jazykový model GPT-3 z roku 2020 měl 175 miliard. Nejnovější modely jsou často ještě větší, ale firmy jejich velikost obvykle nezveřejňují.
Jak se síť doopravdy učí: chyba a drobné opravy
Teď to nejdůležitější: jak se ty váhy vlastně nastaví? Princip je překvapivě jednoduchý a opakuje se pořád dokola.
- Pokus. Síť dostane trénovací příklad (třeba fotku kočky) a se svými současnými vahami spočítá odpověď. Na začátku je to skoro náhodný tip, třeba „pes, 60 %“.
- Změření chyby. Odpověď se porovná se správnou („kočka“). Rozdíl se vyjádří jedním číslem, kterému se říká chyba nebo ztráta.
- Malá oprava. Každá váha se trochu posune směrem, který by chybu příště zmenšil.
- Opakování. Totéž se udělá s dalším příkladem, a s dalším, milionkrát, miliardkrát.
- Chyba (ztráta)(loss)
- Číslo, které říká, jak moc se odpověď modelu liší od správné. Cílem tréninku je dostat ho co nejníž, a to na datech, která model ještě neviděl.
Žádný jednotlivý krok model „nenaučí“ nic velkého. Učení je součet obrovského počtu nepatrných oprav. Proto je trénink velkých modelů tak náročný na výpočetní výkon: každý příklad znamená spočítat a upravit všechny ty miliony nebo miliardy vah.
Do hloubkyGradientní sestup a zpětné šíření chyby
Jak síť pozná, kterým směrem má kterou váhu posunout? Tady pomáhají dva pojmy, které uslyšíš v každém odbornějším textu.
Gradientní sestup (gradient descent). Představ si, že stojíš v mlze na kopci a chceš se dostat do údolí, kde je chyba nejmenší. Nevidíš daleko, ale pod nohama cítíš, kterým směrem terén klesá. Uděláš malý krok tím směrem, znovu se rozhlédneš a uděláš další. Matematicky je ten „sklon terénu“ takzvaný gradient: pro každou váhu říká, jestli by její zvýšení chybu zvětšilo, nebo zmenšilo, a jak výrazně. Velikost kroku se nazývá rychlost učení (learning rate). Když je moc velká, přeskakuješ údolí. Když je moc malá, jdeš do něj věčnost.
Zpětné šíření chyby (backpropagation). Síť má mnoho vrstev a chyba se měří až na konci. Zpětné šíření je postup, jak chybu efektivně „rozpočítat“ zpátky přes všechny vrstvy a zjistit, jak velký podíl na ní měla každá jednotlivá váha. Používá k tomu pravidlo z matematické analýzy o skládání funkcí (řetízkové pravidlo). Díky tomu se dá spočítat gradient pro miliony vah najednou, a ne zkoušet každou zvlášť.
Ještě jedna drobnost: v praxi se chyba nepočítá po jednom příkladu, ale po malých dávkách (batches), třeba po několika desítkách nebo stovkách příkladů. A jednomu průchodu všemi trénovacími daty se říká epocha.
Pokud chceš tyhle principy vidět názorně, výborné animované vysvětlení má 3Blue1Brown (odkaz ve Zdrojích).
Přeučení: biflování místo porozumění
S učením z dat souvisí jedna zrádná past, které se říká přeučení.
- Přeučení(overfitting)
- Stav, kdy se model naučí trénovací data tak doslova, že si zapamatuje i jejich náhodné zvláštnosti a šum. Na trénovacích datech pak vypadá skvěle, ale na nových případech selhává.
Přesně kvůli tomu se odkládá testovací část dat: pokud model na trénovacích datech exceluje a na testovacích výrazně zaostává, je to typický znak přeučení. Opačný problém, kdy je model tak jednoduchý, že nezachytí ani skutečné vzory, se jmenuje nedoučení (underfitting). Dobrý model je někde mezi.
Ve firemní praxi to má jednoduchý důsledek: věř číslům z testů na nových datech, ne z dat, na kterých se model učil. Když ti dodavatel hlásí „99% přesnost“, zeptej se, na jakých datech se to měřilo a jestli model ta data mohl vidět při tréninku.
Smetí dovnitř, smetí ven
Pokud si z téhle lekce máš zapamatovat jedinou věc, je to tahle: model je jen tak dobrý jako data, ze kterých se učil. V oboru se tomu říká „garbage in, garbage out“, smetí dovnitř, smetí ven.
Model nemá jak poznat, že jsou data špatně. Prostě převezme vzory, které v nich jsou, ať jsou správné, nebo ne. Co se může pokazit:
- Chybné štítky. Když lidé při přípravě dat omylem označí část běžných e-mailů jako spam, filtr se to naučí taky.
- Nereprezentativní data. Model trénovaný na fotkách z jasného dne může selhávat v dešti. Systém trénovaný na zákaznících z jednoho regionu nemusí fungovat v jiném.
- Zastaralá data. Svět se mění. Model nákupního chování z doby před velkou změnou na trhu může předpovídat minulost, ne budoucnost.
- Zkreslení z minulosti. Pokud se systém na výběr uchazečů učí z historických rozhodnutí, ve kterých lidé (třeba nevědomky) zvýhodňovali určitou skupinu, model to zvýhodnění převezme a může ho dokonce zesílit.
Poslední bod je jedním z nejvážnějších témat celé AI a podrobně se mu věnujeme v lekci o znalostech a zaujatosti.
Co si odnést
- Strojové učení nahrazuje ručně psaná pravidla učením z příkladů. Hodí se na úlohy, které umíme dělat, ale ne přesně popsat.
- Model se učí na trénovacích datech a ověřuje se na datech, která nikdy neviděl. Jen tak zjistíš, jestli zvládne skutečný provoz.
- Tři hlavní způsoby učení: s učitelem (příklady se správnými odpověďmi), bez učitele (hledání struktury) a zpětnovazební (odměna za dobré jednání).
- Neuronová síť je soustava jednoduchých „hlasování s váhami“ ve vrstvách. Váhy jsou to, co se model naučí, a jsou jich miliony až miliardy.
- Učení je obrovský počet drobných oprav, které zmenšují chybu. Pozor na přeučení, kdy se model nabifluje data místo zobecnění.
- Smetí dovnitř, smetí ven: kvalita a reprezentativnost dat rozhoduje víc než volba modelu.
Zdroje a další čtení
- Google Machine Learning Crash Course: Overfitting – srozumitelné vysvětlení přeučení a práce s trénovacími a testovacími daty (anglicky).
- 3Blue1Brown: Neural Networks – animovaná série o tom, jak neuronové sítě a gradientní sestup fungují (anglicky).
- Elements of AI – Úvod do umělé inteligence – bezplatný kurz se samostatnými kapitolami o strojovém učení a neuronových sítích, i v češtině.
- Google DeepMind: AlphaGo – příběh programu, který se naučil hrát go mimo jiné hraním sám proti sobě (anglicky).