V březnu 2016 zasedl jihokorejský mistr go Lee Sedol, jeden z nejlepších hráčů této hry v historii, k zápasu proti programu AlphaGo od firmy DeepMind. Go je o řády komplikovanější než šachy, počet možných pozic na desce převyšuje počet atomů ve vesmíru, a odborníci dlouho věřili, že počítač na téhle úrovni člověka neporazí ještě celé desetiletí. AlphaGo zápas vyhrál čtyři ku jedné. V druhé partii zahrál tah, který komentátoři i profesionální hráči go popsali jako tak neobvyklý, že ho zpočátku považovali za chybu, než pochopili, o co programu šlo.
Za AlphaGo, stejně jako za dnešními chatboty, generátory obrázků nebo doporučeními filmů na Netflixu, stojí stejný základní princip: strojové učení a neuronové sítě. Tenhle text vysvětluje, jak to funguje, na jednoduchých příkladech a bez zbytečné matematiky.
Čím se strojové učení liší od klasického programu
Klasický počítačový program funguje na principu pravidel, která napsal člověk. Chcete-li naprogramovat kalkulačku, napíšete přesný postup, jak se čísla sčítají, a počítač ho vždy poslušně vykoná stejně.
Strojové učení funguje opačně. Místo napsání pravidel ručně, dáte programu spoustu příkladů a necháte ho, aby si pravidla odvodil sám. Chcete-li naučit program rozeznat kočku na fotce, nenapíšete pravidlo „kočka má fousy a špičaté uši”. Ukážete mu tisíce fotek koček a tisíce fotek toho, co kočka není, a program si sám postupně odvodí, jaké vzory fotky koček spojují.
Termín strojové učení (machine learning) poprvé použil v roce 1959 americký informatik Arthur Samuel, který v tehdejší IBM vytvořil program hrající dámu, jenž se zlepšoval tím, že hrál sám proti sobě tisíce partií a upravoval svoji strategii podle toho, co fungovalo. Šlo o jeden z prvních příkladů programu, který se „naučil” lépe zahrát, aniž by mu člověk krok za krokem naprogramoval každý konkrétní tah.
Jak se program vlastně „učí”
Uvnitř strojového učení program pracuje s obrovským množstvím čísel, takzvaných vah, které určují, jak moc je která vlastnost vstupu důležitá pro výsledek. Na začátku má program tahle čísla nastavená prakticky náhodně, a jeho první odhady jsou proto téměř vždy špatné.
Trénink probíhá tak, že programu ukážete příklad, porovnáte jeho odhad se správnou odpovědí, a čísla uvnitř mírně upravíte směrem, který by příště vedl ke správnějšímu odhadu. Tenhle krok se opakuje miliony až miliardykrát, s obrovským množstvím různých příkladů, dokud se váhy neustálí na hodnotách, které pro naprostou většinu příkladů dávají správnou odpověď.
Přirovnání, které se používá často: je to podobné, jako když se učíte házet šipky na terč se zavázanýma očima. První hod dopadne náhodně. Někdo vám řekne, jestli jste házeli moc doleva nebo moc doprava, upravíte hod, zkusíte znovu. Po tisících pokusů začnete trefovat střed čím dál spolehlivěji, aniž byste kdy viděli terč přímo, jen podle zpětné vazby po každém pokusu.
Dva základní způsoby, jak se model učí
Strojové učení se dělí na víc kategorií podle toho, jaký typ dat a zpětné vazby model při tréninku dostává. U učení s učitelem (supervised learning) dostane model dvojice, vstup a správná odpověď, třeba fotku a popisek „kočka” nebo e-mail a příznak „spam”. Model se učí odhadovat správnou odpověď u nových, neoznačených vstupů podle vzoru, který se naučil na označených datech.
U učení bez učitele (unsupervised learning) model dostane jen data bez správných odpovědí a hledá v nich sám nějakou strukturu, třeba shluky podobných zákazníků podle nákupního chování, aniž by mu někdo dopředu řekl, kolik skupin má hledat nebo podle čeho. Třetí, novější kategorií je posilované učení (reinforcement learning), kdy se model učí metodou pokus omyl v prostředí, které mu dává odměnu za dobré rozhodnutí, přesně tímhle způsobem se učilo i zmíněné AlphaGo hrát proti sobě samému.
Co jsou neuronové sítě
Neuronové sítě jsou konkrétní způsob, jak strojové učení uvnitř postavit, volně inspirovaný tím, jak jsou propojené neurony v mozku, byť podobnost je spíš metaforická než doslovná. Síť se skládá z vrstev jednoduchých výpočetních jednotek, které dostanou vstup, na základě aktuálních vah spočítají výstup a předají ho dál do další vrstvy.
Jednotlivá vrstva sama o sobě zvládne jen velmi jednoduchý výpočet. Síla přichází z toho, že se vrstvy skládají za sebe, desítky až stovky, a každá další vrstva pracuje s trochu abstraktnějším přepisem informace než ta předchozí. U rozpoznávání obrázku první vrstva třeba zachytí jen hrany a kontrasty, další vrstva z nich poskládá tvary, jako je oko nebo ucho, a další vrstva teprve z těchhle tvarů rozezná celou kočku.
Právě kvůli velkému množství vrstev za sebou se tomuhle přístupu říká hluboké učení (deep learning), „hluboké” odkazuje na hloubku, tedy počet vrstev sítě, ne na nějakou metaforickou hloubku porozumění. Jak do sebe pojmy AI, strojové učení a hluboké učení zapadají, rozebírá samostatný text.
Zlom, který spustil dnešní boom
Neuronové sítě jako koncept existují od padesátých let dvacátého století, dlouho ale narážely na dva praktické limity: nedostatek trénovacích dat a nedostatek výpočetního výkonu na trénink dost velkých sítí. Obojí se výrazně změnilo s nástupem internetu, plného obrovského množství digitálních dat, a grafických karet, které se ukázaly nečekaně vhodné pro typ výpočtů, jaké neuronové sítě potřebují.
Zlomový okamžik přišel v roce 2012, kdy tým kolem Geoffreyho Hintona a jeho studenta Alexe Krizhevského představil síť jménem AlexNet na prestižní soutěži v rozpoznávání obrázků ImageNet. AlexNet porazil konkurenci s tak výrazným náskokem, že to celý obor přesvědčilo, že hluboké učení si zaslouží vážné investice, ne jen akademický zájem.
Vztah k dnešním jazykovým modelům
Velké jazykové modely, jako je ten za ChatGPT nebo Claude, jsou v jádru obří neuronové sítě, natrénované na obrovském množství textu místo obrázků. Princip zůstává stejný, jaký jsme popsali výše: váhy sítě se postupně ladí tak, aby model co nejlíp předpovídal, jaké slovo pravděpodobně následuje po předchozích. Rozdíl je hlavně v měřítku, dnešní jazykové modely mají miliardy až biliony vah, a ve specifické architektuře zvané transformer, která síti umožňuje efektivně pracovat s dlouhými texty a souvislostmi mezi slovy vzdálenými od sebe. Detailnímu vysvětlení, jak konkrétně fungují jazykové modely, se věnuje samostatný přehled o LLM. Pro rychlou orientaci v dalších pojmech kolem AI slouží i glosář základních pojmů.
Kde se strojové učení používá kolem vás už dnes
Strojové učení dávno přesáhlo ChatGPT a AlphaGo, je zabudované v řadě běžných služeb, aniž by si to lidé uvědomovali. Doporučení filmů na Netflixu, seznam skladeb, které vám navrhne Spotify, filtr spamu ve schránce, rozeznání podvodné platby kartou během sekundy, to všechno běží na strojovém učení, trénovaném na historii milionů podobných rozhodnutí.
Navigace v telefonu odhaduje dobu jízdy pomocí modelu natrénovaného na historických datech o dopravě ve stejnou denní dobu a stejný den v týdnu. Banky používají strojové učení k odhalování podezřelých transakcí, model porovná novou platbu s tím, jak obvykle vypadá chování daného účtu, a označí ji, pokud se výrazně vymyká. Ani jeden z těchhle příkladů nevyžaduje jazykový model ani generování textu, jde o starší, úžeji zaměřené použití stejného základního principu.
Na co si dát pozor
Strojové učení je jen tak dobré, jak dobrá jsou data, na kterých se trénuje. Pokud tréninková data obsahují zkreslení, třeba historické předsudky v tom, komu banka dřív schvalovala úvěry, model se tohle zkreslení naučí opakovat, i když to nikdo záměrně nezamýšlel.
Druhý limit je takzvaný problém černé skříňky: u složité sítě s miliardami vah je i pro samotné tvůrce těžké přesně vysvětlit, proč model u konkrétního vstupu dospěl zrovna k téhle odpovědi. Výzkum interpretovatelnosti, tedy snahy nahlédnout dovnitř rozhodování sítě, patří k aktivním oblastem dnešního výzkumu AI, kompletně vyřešený problém to ale zatím není.
Shrnutí
Strojové učení znamená, že se program místo ručně napsaných pravidel učí z příkladů. Neuronové sítě jsou dnes nejúspěšnější způsob, jak tenhle princip uvnitř postavit, poskládané z vrstev jednoduchých jednotek, které dohromady zvládnou překvapivě složité úlohy.
Od AlexNetu v roce 2012 po dnešní jazykové modely vede přímá vývojová linka, založená na stejném principu ve stále větším měřítku. Kdo tomuhle základu rozumí, snáz pochopí i to, jak fungují konkrétní nástroje, které dnes běžně používá.