Umělá inteligence: Jak přimět počítač, aby se sám učil

Rozvoj umělé inteligence je sice v poslední době obrovský, jak ale vlastně naučit počítač, aby se sám učil? K čemu je superpočítač, který ovládá šachy, když nás neporazí v piškvorkách?

V minulé části jsme se seznámili se základními principy studia umělé inteligence. Tentokrát se podíváme na některé postupy, pomocí kterých se počítače učí rozpoznávat data.

Softwarový šachový mistr vás neporazí v piškvorkách

Současné počítačové algoritmy mají jednu zásadní vadu – jsou úzce specializované na konkrétní úlohu. Program, který dokáže porazit šachového velmistra, by nedokázal s tím samým kódem porazit velmistra v piškvorkách a dámě, i když se jedná o logické hry podobného zaměření. Člověk naopak dokáže řešit obrovský rozsah různých problémů z všemožných oblastí.

769436256 596733222
Šachový superpočítač Deep Blue a jeho protivník Garri Kasparov (Zdroj: James the photographer, Oven Williams, CC-BY-SA)

Jak ale něco takového napodobit počítačovým kódem? I v této oblasti se udály určité pokroky. Jedná se o algoritmy, které se učí a zlepšují vyhodnocováním předchozích chyb. Nemají tedy pevnou strukturu a postupně se mění. Podobně jako živý tvor.

Různé přístupy k učení

Podívejme se tedy na různé způsoby, jak učit počítač interpretovat data. Existují v zásadě dva přístupy učení algoritmů: s učitelem a bez učitele. Všechny počítače, které se dnes používají, jsou založené na principu tzv. Turingova stroje, který deterministicky vykonává jednu činnost za druhou.

To znamená, že když stroj spustíme se stejným vstupem tak dostaneme stejný výstup. Takže i rozpoznávání je vlastně deterministická algoritmická úloha. Někde v kódu je implementována rozhodovací podmínka IF založená na nějakém porovnání hodnot, která nám řekne, do jaké skupiny je objekt zařazen – rozdělí hrušky a jablka.

Při interpretaci je tedy důležité najít vhodnou charakterizaci dat pomocí nějakého (malého) počtu čísel (příznaků, anglicky features), podle kterých se mají data porovnávat.

Učení s učitelem a bez učitele

Učení s učitelem znamená, že existuje nějaká autorita, která řekne, jak interpretovat data. Dejme tomu, že bude muset stroj rozdělit hodnoty na obrázku níže do dvou skupin. Ale jak? Existuje přeci hromada způsobů. Onou autoritou tedy může být třeba podmínka, že je třeba rozdělit čísla na kladná a záporná.

336047716 634370082
Data na obrázku vlevo lze jednoduše rozdělit třeba na kladné a záporné hodnoty podle osy X

Pokud nebudeme mít autoritu, která řekne, že mají data příslušnost do třídy jako na obrázku, pak může být výstupem učení bez učitele takřka cokoliv. Na obrázku níže je tak třeba rozřazení pomocí algoritmu k-means.

793605869
Rozdělení hodnot bez učitele – třeba pomocí algoritmu k-means

Učení bez učitele tedy znamená, že algoritmus optimalizuje nějaké matematické kritérium. Snaží se najít způsob, jak data rozdělit tak, aby tomuto kritériu vyhovovala. Příkladem může být zmíněný algoritmus k-means, který rozděluje data na předem daný počet tříd (clusters) takovým způsobem, aby součet vzdáleností každého bodu od těžiště třídy dat byl minimální.

Obecným problémem je samozřejmě nejednoznačnost dat. Potíže nastávají v případech, pokud nelze data jednoduše rozdělit jen pomocí přímek a hranice tříd nejsou úplně zjevné, jako na obrázku níže. V takovém případě se používají různé triky – třeba všemožné transformace, které zlepší čitelnost.

877091345 963103325
Bez určení tříd učitelem může být i pro člověka obtížné poznat, kam data vlastně patří. Ale i když máme určené třídy dat, může být pro počítač těžké zjistit, jak je co nejlépe mezi sebou oddělit.

Není obličej jako obličej

Pojďme se ale podívat na mnohem složitější data než jsou pouhá čísla – třeba lidskou tvář. Jednou ze starších populárních metod k její analýze je třeba PCA (Principal Component Analysis). Na obrázku níže je příklad použití PCA na sadě tváří, které mají oči, nos a ústa na podobných místech. Algoritmus spočítá, jak vypadají čtyři tzv. bázové tváře, a potom pro popis libovolného obličeje stačí použít jenom čtyř čísel, které reprezentují jejich váhy. Zjednodušeně řečeno můžete spočítat, že Honza má tvář z 60 % jako Petr, z 20 % jako Josef, z 10 % jako Milan a z 10 % jako Jana.

841480145 49891835
Čtyři bázové tváře a zrekosntruovaná tvář

Pro rozpoznávání je možné naučit klasifikátor rozpoznávat osoby takovým způsobem, že spočítá tyto koeficienty a najde v databázi tvář, která je k ní nejbližší (ve smyslu euklidovské vzdálenosti – pomocí zobecněné Pythagorovy věty pro více rozměrů).

V podstatě se v této metodě jedná o to, že se v obrázcích najde nejpopisnější způsob pro daná data. Pak se dají i tváře vyhledávat podle nejpodobnější tvá­ře.

Jiný modernější způsob je založen na využití hlubokých neuronových sítí, které mají několika vrstev a naučí se vytvářet vhodnou reprezentaci dat a extrakci příznaků.

Algoritmy založené na neuronových sítích

Neuronová síť, která obsahuje jednu skrytou vrstvu, se dokáže naučit klasifikovat libovolný tvar dat. Potíž je ale v tom, že není známo kolik neuronů je vlastně v takové síti potřeba a jak jí dobře naučit. G. Hinton, Alex Krizhevsky a Ilya Sutskever popsali novou topologii sítě, tzv. hlubokou konvoluční neuronovou síť. Tato síť způsobila průlom v počítačovém vidění úspěšným testem na obrázkové databázi ImageNet a výrazně ovlivnila výzkum v této oblasti.

Při tvorbě této topologie sítě se v mnohém inspirovali ze znalostí neurovědy, jako použití dropoutu při učení sítě (některé neurony se někdy vypnou při učení, což odpovídá vypínání a zapínání aktivity neuronů v mozku, což pomáhá k jakési „samostatnosti“ v rozhodování neuronů) nebo konvoluční sítě na první vrstvě (neuronové buňky koček při sítnici mají podobné chování).

Stejně tak je potvrzené, že lze postavit turingův stroj z neuronové sítě což znamená, že by bylo možné postavit počítač, který by dokázal dělat všechno, co dokáží dnešní počítače s použitím neuronové sítě.

Testování úspěšnosti algoritmů

Pro dobré porovnání úspěšnosti různých algoritmů existují různé soubory dat, které si můžete stáhnout a vyzkoušet, jak dobře daná technika funguje. K těm nezjpopulárnějším souborům patří:

  • ImageNet – jedná se o velkou databázi fotografií. Obsahuje tisíc kategorii a dohromady 1 200 000 obrázků. Vychází z databáze WordNet, což je hierarchická slovní databáze, ke které autoři přiřadili obrázky z Flickru a jiných svobodných zdrojů, které nejvíc odpovídají daným slovům. Obrázky jsou různorodé a mají vícero podobných kategorii, jako jsou různé rasy psů, druhy ptáků a podobně.
  • MNIST – ručně psané číslice
  • LFW – klasifikace tváří
  • TIMIT – klasifikace fonémů (řeči)

Mnoho dalších je možné najít na stránkách DeepLearningu.

Aby byli specialisté na strojové učení motivovaní k co nejlepším výsledkům, v minulosti bylo vyhlášeno mnoho soutěží až o stovky tisíc dolarů. Sdružuje je třeba projekt Kaggle. Soutěže mají praktický dopad od medicíny (diabetické retinopatie), fyziku (zpracování dat z LHC v CERNu) až po byznys (ceny pronájmů v západní Austrálii).

Zajímavé vývojářské nástroje:

Vývojářské nástroje pro strojové učení většinou používají Python a Lua; za zmínku stojí hlavně Theano, Torch nebo Keras. Jejich seznam najdete třeba na stránkách DeepLearningu.

Zapojili se Google a další velikáni

Velké společnosti jako Google, Facebook nebo IBM otevřeně publikují své výzkumné aktivity pro další zájemce především z řad akademické sféry. Právě tyto společnosti mají dostatečné výpočetní kapacity, takže vlastně v mnoha směrech suplují akademický výzkum a experti se tak snáze dostanou k závěrům analýz. Pravděpodobně se jedná o způsob, jakým si vychovat další generaci odborníků, kteří by mohli tyto objevy využít v praxi.

Hromadu dalších informací najdete také na Redditu, Quoře a přední odborníci vedou také vzdělávací kurzy. Třeba Andew Ng na Coursera.

Autor článku je magisterský student oboru Umělé Inteligence na ČVUT (michal.sustr.sk)

Diskuze (28) Další článek: YouTube Red je placené YouTube bez reklam za 240 Kč měsíčně

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,