Hlavní obsah

Čech vymýšlí pro Google „umělou inteligenci“. Dokáže překvapit

Foto: Pixabay.com

Ilustrační foto.

Pandemie koronaviru a vývoj umělé inteligence mají jedno společné: Jejich vývoj je na lidský mozek někdy moc rychlý. Proč to tak je a jak dnešní „AI“ fungují, vysvětluje Augustin Žídek z firmy, která „AI“ vyvíjí pro Google.

Článek

„Umělá inteligence“ je považována za jednu z průlomových technologií současnosti. Byť nevíme, co přesně zvládne a kdy, jisté je, že již dokáže překvapovat.

Před několika lety například zaskočil fanoušky hry go software AlphaGo – porazil v této nesmírně složité hře, která podle odhadů měla zůstat ještě dlouho doménou trénované lidské intuice, i nejlepší světové lidské hráče. V roce 2020 pak software AlphaFold předvedl do té doby nejlepší řešení problému, se kterým se už desítky let potýkali biologové i tradiční software, když dokázal poměrně přesně předpovídat, jak vypadají látky, bez kterých život nemůže existovat.

Události měly společného více než jen to, že v obou případech počítač porazil člověka. Mají společný původ ve společnosti DeepMind, londýnském start-upu, který dnes patří do skupiny společností Google (tedy holdingu Alphabet).

Ve vývojářském týmu této dnes bedlivě sledované a vysoce ceněné společnosti posledních pět let působí i rodák z Česka Augustin Žídek. Ve firmě začal působit brzy po dokončení studií na Cambridge, dnes je na pozici seniorního výzkumného inženýra. Jak vidí vývoj „počítačové inteligence“ v posledních letech, co vlastně umí a jak moc si uvědomujeme, kolik toho už umí?

Když novináři chtějí psát o vaší práci, nevyhnutelně nakonec skončí u výrazu „umělá inteligence“. Používáte ten výraz u vás ve firmě?

Ne, interně výraz umělá inteligence moc nepoužíváme. Asi proto, že je příliš obecný nebo proto, že ho považujeme za „rezervovaný“ pro obecnou umělou inteligenci (vžitý anglický název je tzv. artificial general intelligence, pozn.red.). Tu zatím ovšem ještě nemáme. V některých případech říkáme „model“ nebo „síť“ nebo česky „neuronka“. V jiných případech, pokud se bavíme o reinforcement learning, tak používáme výraz „agent“. Ale když mluvím s laiky, používám výraz umělá inteligence nebo AI.

A jak byste laikovi popsal, co umí a jak toho dosáhne?

Tradiční způsob, jak programovat počítače, je napsat program pomocí nějakého programovacího jazyka. Tento přístup je velmi užitečný a dá se jím hodně dosáhnout, protože počítače jsou hodně rychlé a dovedou dobře dělat věci jako „změň trochu barvu pro každý pixel na tomto obrázku“. I když má tento obrázek miliony pixelů, počítač tento úkol zvládne téměř okamžitě.

Nyní si ale představte, že chcete na tomto obrázku najít obrázek kočky. Pokud byste na to chtěli napsat program ručně, bylo by to velmi obtížné – například jak v programu uchopíte, co to je kočka, jen na základě vztahů mezi pixely a jejich pozicemi a barvami?

Pokud máme problém, který neumíme řešit tradiční cestou, sesbíráme velké množství dat a pustíme na to strojové učení.
Augustin Žídek, výzkumník DeepMind

Co kdybychom však mohli napsat program, který se naučí rozeznávat kočky na obrázku na základě velkého datasetu obrázků koček? Programátor se najednou nemusí zabývat komplikovanými vztahy mezi pixely, které definují „kočkovitost“. A to je to, co děláme s „umělou inteligencí“ v dnešní době – pokud máme problém, který je příliš těžké vyřešit tradičním programem (tento problém často nastává pokud máme data vygenerovaná lidmi, jako například psaný text, nahrávky řeči, obrázky, videa atd.), tak ho často umíme vyřešit tím, že sesbíráme velký dataset a ten dáme „AI“ na to, aby se sama naučila program, který bychom jinak museli pracně a manuálně psát sami.

Je pro tento princip podle vás dobrá metafora „intuice“? Tedy že AI se na základě předchozích dat učí „intuitivně“ zpracovávat data, ale neumí tu „intuici“ vysvětlit, podobně jako člověk neumí plně vysvětlit svá intuitivní rozhodnutí?

Mám pocit, že v systémech často nahrazujeme pomocí AI tu část algoritmu, kterou bychom obvykle řešili pomocí nějaké heuristiky (tj. zkusmého řešení problému včetně metody pokus-omyl, pozn. red.), případně tu část, kterou lidé řeší intuicí. Například když člověk hraje šachy nebo go, tak do nějaké míry prohledává strom možných her a intuici používá na zúžení výběru větví tohoto stromu, nad kterými se vyplatí přemýšlet. Například nemá smysl uvažovat nad tím, co by se stalo, kdybych bezdůvodně obětoval věž, tak s tím hráč prostě neztrácí čas.

Podobně to je v našem softwaru AlphaGo (ten, který poprvé poráží i nejlepší lidské hráče ve hře go, pozn. red.). Necháme strom možností a jeho algoritmické prohledávání, ale výběr větví a ohodnocování pozic necháme na neuronovou síť, tedy nahradili jsme intuici. Rozhodně bych tedy neřekl, že naše „AI“ je to samé jako intuice. Ale dá se říci, že intuici můžeme realizovat pomocí AI.

Augustin Žídek

  • Absolvoval gymnázium ve Frýdlantě nad Ostravicí, poté nastoupil na University of Cambridge, kde studoval matematiku a informatiku.
  • Studium dokončil v roce 2016, na podzim téhož roku nastoupil do společnosti DeepMind.
  • V současné době tam působí jako „seniorní výzkumník“, a to primárně na projektu AlphaFold.

Je to nějaký rozdíl proti klasickému programování?

Ten rozdíl není ani tak v tom, jak vypadá programování samotné, ale spíš v tom, na jaké úrovni abstrakce se pohybujeme. V klasickém programování řeším v kódu přímo daný problém, zatímco při programování AI napíšu algoritmus, který se sám naučí daný problém řešit. V obou případech ale používám stejné principy programování a řeším podobné problémy. Nemám tedy pocit, že bych měl nějaké dva programovací módy podle toho, zda programuji AI algoritmus, nebo ne. Je to spíš jako rozdíl mezi psaním webové aplikace a počítačové hry – spousta věcí je podobná, některé věci jsou jiné.

Tento princip učení na datech sám o sobě není nový. Proč se podle Vás tak rozvinul ve 21. století?

Z několika důvodů: 1. Máme mnohem rychlejší počítače – mobil, který mám v kapse, je více než milionkrát rychlejší než počítač, který používalo Apollo při cestě na Měsíc. Tím pádem můžeme zpracovat více dat a mít mnohonásobně komplexnější modely. 2. V posledních několika letech dokonce máme hardware, který je specializovaný na strojové učení (například TPU), a tím pádem umožňuje efektivnější trénování modelů. 3. Máme více trénovacích dat a standardizované datasety, na kterých můžeme trénovat. 4. Hodně jsme se posunuli i co se algoritmů týče, případně staré algoritmy jsou konečně praktické a použitelné na současném rychlém hardware.

A co se dnešní „umělé neinteligence“ takto umí naučit? Umí něco, co by do nich laik neřekl?

Myslím, že AI se v posledních několika letech velmi posunula v jazykových schopnostech (strojový překlad, odpovídání na otázky, sumarizace textu, dialog). Myslím, že hodně lidí by překvapilo, jak daleko se v tomto vývojáři dostala a jak rychlý je současný vývoj.

Jak rychlý tedy je? Jak byste to přiblížil?

Například počet parametrů („počet neuronů“) neuronových sítí, které se používají jako jazykové modely, roste za poslední tři roky exponenciálně: model GPT-1 v lednu 2018 měl 117 milionů parametrů, model GPT-2 v únoru 2019 měl 1 500 milionů parametrů, model Meena v lednu 2020 měl 2 600 milionů parametrů, model GPT-3 v únoru 2020 měl 175 miliard parametrů, model T5-XXL v lednu 2021 měl 1 600 miliard parametrů.

Tedy za tři roky se počet parametrů zvětšil zhruba desettisíckrát. Neříkám, že je počet parametrů vše (i když v metrikách, kterými se tyto modely ohodnocují, se stále zlepšují), ale je to zajímavá ukázka toho, že škála těchto modelů se zvětšuje exponenciálním tempem. A pokud se něco mění exponenciálně, má to často tendenci lidi překvapit svojí rychlostí změny.

Umělá inteligence dělá zvláštní chyby

A byl jste vy osobně vyloženě překvapený tím, co neuronová síť dokázala?

Ano – nevěřili jsme, že neuronová síť bude stačit na skládání proteinů (to je laikovi neznámá, ale veledůležitá biologická disciplína, o které si můžete přečíst více v našem článku, pozn. red.). Mysleli jsme si, že bude třeba přístup, který více používá fyziku, ale nakonec překvapivě stačila neuronová síť.

A překvapilo vás naopak někdy, jaké chyby udělala?

Vzpomínám si na jeden případ, kdy jsme trénovali agenta, který měl stát na plošině v simulovaném 3D prostředí a dělat nějaký úkol. Pokud úkol splní, tak dostane +1 bod, a pokud ne nebo mu vyprší čas, tak dostane -1 bod. Chtěli jsme, aby se agent taky naučil stát na plošině, protože tam měl dělat daný úkol. Takže jsme naprogramovali prostředí, aby dalo agentovi -1 000 bodů, pokud skočí dolů z plošiny – aby se naučil, že to doopravdy nemá dělat.

Hledat chyby v neuronové síti je těžší, než hledat chyby v klasických programech. Je chyba v datech? Nevhodná architektura? Špatně nastavené odměny?
Augustin Žídek, výzkumník DeepMind

Nechali jsme agenta trénovat nějakou dobu a po čase jsme na grafech celkového skóre viděli, že agent začal dostávat neskutečně vysoká skóre. Očekávali jsme průměrně deset bodů, agent dostával řádově miliardy. Když jsme se podívali, co agent dělá, tak jsme zjistili, že se naučil využívat chybu v prostředí. Pokud skočil z plošiny mnohokrát, pak dosáhl tak nízkého skóre, že na to software nebyl připravený. Díky integer underflow tak najednou celkový součet bodů místo velmi malého negativního čísla je velmi velké pozitivní číslo (můžete si to představit tak, že číselná osa softwaru je uzavřený kruh. Nejnižší a nejvyšší číslo jsou tedy v jednom místě těsně vedle sebe a hodnota může „přeskočit“ z jedné na druhou, pozn.red.). Takže jsme museli přidat zábradlí kolem plošiny.

Strojové učení a neuronové sítě

Strojové učení funguje na principu analýzy velkého množství dat. Počítačové programy jsou sadou instrukcí a podle těchto instrukcí zpracovávají předložená data. Strojové učení umožňuje nový přístup k řešení problémů počítačem. Než aby programátor počítači napsal veškeré instrukce pro všechny eventuality jednotlivě, tak naprogramuje způsob, kterým se počítač sám učí na dodaných „trénovacích“ datech. Učení probíhá pomocí sítí samostatných programů, tzv. umělých neuronů, proto se systému říká neuronová síť.

Například v případě strojového překladu se počítač trénuje na velkém množství textů, které jsou dostupné v angličtině i češtině. Neuronová síť zkouší překládat části textu a poté zkontroluje, nakolik se její verze liší od té správné. Ty části neuronů, jež napovídaly správnou možnost, budou posíleny a příště budou hrát v rozhodování větší roli. Čím rozsáhlejší a kvalitnější jsou vstupní data, tím lepší může být výsledek.

Taková chyba se odhalí celkem snadno. Ale platí to obecně? Jak snadno se dají hledat chyby v nastavení umělé inteligence?

Když máte chybu v tradičním algoritmu, tak většinou jednoduše nefunguje. Když ale nefunguje trénování AI, tak je chybu často těžké najít. Je chyba v datech? Nebo daná neuronová síť není dostatečně silná na to, aby se naučila řešit daný problém? Nebo někde máte plus místo minus a agent se místo co největšího skóre snaží získat co nejnižší skóre? Nebo je chyba v knihovně, kterou používáte na násobení matic? AI přidává více úrovní, kde může být chyba, a tím, že může fungovat i jen tak trochu. Takže vznikne software, který porazí v šachách běžného člověka, ale ne velmistra. Často je těžké zjistit, zda je to nějakou chybou nebo jste zkrátka použili nevhodnou architekturu.

Přemýšlíte nyní – poté, co se už roky věnujete vývoji strojového učení – jinak o tom, jak přemýšlejí lidé?

Moc ne, jen mě sem tam pobaví nějaká podobnost v chování lidí a chování agentů (myšleno strojovým učením simulovaných agentů, pozn. red.).

Například kompromis mezi „exploration“ (zkoumání) a „exploitation“ (užívání), který se projeví u lidí v restauraci. Když jste v restauraci, tak můžete buď dělat „exploration“ – vyzkoušet nové jídlo a potenciálně zjistit, že je to vaše nové nejoblíbenější jídlo a rozšíříte si tím možnosti do budoucna. Anebo můžete jít na „exploitation“ – dáte si jídlo, které už znáte a víte, že vám chutná. Pokud to člověk přehání s užíváním známého, tak možná nikdy neobjeví jídlo, které by mu chutnalo více než jídla, která už zná. Pokud to zase přehání se zkoumáním nového, tak může mít smůlu a vyzkoušet hodně jídel, která mu moc nechutnají. Důležité je najít dobrý poměr těchto dvou strategií a je to jedna z otázek, která se hodně řeší.

Přistihnete třeba někdy sám sebe u toho, že o svém vlastním myšlení uvažujete tak, jako byste uvažoval o neuronové síti?

Ne. Neuronové sítě jsou jen velmi zjednodušený model mozku, respektive spíš bych řekl, že jsou lidským mozkem jen inspirované, podobně jako jsou například letadla inspirovaná ptáky.

V druhé části rozhovoru se budeme věnovat podrobněji práci společnosti DeepMind, třeba ohledně jejího softwaru AlphaFold, který chce pomoci odstranit jeden velký problém současné biologie.

Doporučované