Autor knihy vygenerované počítačem: Neuronová síť umí i metafory

6. 6. 2016

Sdílet

 Autor: Redakce

Pod básnickou sbírkou Poezie umělého světa, kterou elektronicky vydalo nakladatelství Backstage Books, je podepsaný vedoucí výzkumu ve společnosti Seznam.cz Jiří Materna. Ve skutečnosti ale nenapsal ani řádku poezie. Místo toho stvořil „básníka“, který to udělá za něj a to rychlostí desítek básní za sekundu – poezii totiž za pomoci umělých neuronových sítí generuje počítač. Smysl prý dává každá třicátá báseň.

Jak to přesně
funguje? Jak jste počítač „naučil“ psát básně?

Generátor básní je založený na umělé neuronové síti, což je
v podstatě matematický model lidského mozku, schopný učit se na základě
trénovacích příkladů. Takové neuronové síti jsem předložil přibližně osmdesát
tisíc básní, na základě kterých se síť postupně naučila z písmen skládat
slova, ze slov verše a z veršů básně. Jde o náhodný proces, nicméně
nejvyšší pravděpodobnost mají taková písmena, která budou tvořit smysluplné
pokračování básně. Přičemž tu smysluplnost určují předložené příklady. Síť se
snaží napodobovat to, co viděla v trénovacích datech, aniž by je však
kopírovala.

Jiří Materna
Jiří Materna 

Proč je těch trénovacích dat potřeba tolik, tedy desítky tisíc básní?

Při menším množství buď algoritmus ztratí schopnost
generalizace a bude pouze kopírovat části trénovacích dat, nebo se nedokáže
naučit dostatečně. Potřeba velkého množství trénovacích dat je také důvod, proč
jsem si vybral server Písmák.cz. Tam se básní nachází dostatek. Nevýhodou
samozřejmě je, že neprochází žádnou redakční kontrolou, takže mají různou
úroveň, která se potom projevuje na kvalitě básní generovaných. Ideální by bylo
mít desítky tisíc básní od jednoho vysoce hodnoceného autora.

Z hlediska neuronové sítě má na kvalitu výsledku vliv co?

Její architektura. Pokud bude příliš jednoduchá, neuronová
síť se nebude schopná kvalitně naučit a v důsledku nebude generovat
smysluplná slova. Pokud bychom naopak zvolili složitou architekturu z velkého
množství neuronů a zároveň bychom neměli dostatek trénovacích dat, mohlo by se
stát, že se síť přeučí a bude trénovací data jen kopírovat.

Jak rychle to generování probíhá?

Když dáme stranou fázi trénování,
která je výpočetně náročná a může trvat i několik dnů, proces generování je
velice rychlý - algoritmus je schopný vytvořit desítky básní za sekundu. Ne
každá vygenerovaná báseň je však kvalitní a zejména ty delší často nedávají
smysl. Je to dáno tím, že po vygenerování delšího textu už algoritmus zapomene,
o čem „psal“ na začátku, a odbíhá od tématu. Můj nejnovější algoritmus už ale
s tímto problémem pracuje. Nejprve je vygenerován název básně a
z něho extrahováno základní téma v podobě vektoru čísel. Program si
tento vektor uloží a poté ho použije v procesu dalšího generování. Tím je
zajištěna mnohem větší konzistence a nyní je použitelná zhruba každá třicátá
vygenerovaná báseň.

 

Jaká je hardwarová
náročnost?

Trénování rekurentních neuronových sítí, které můj
generátor básní využívá, je obecně dost náročné. Lze sice v zásadě použít
libovolný hardware, trénování by však trvalo velmi dlouho. V poslední době
se tedy čím dál častěji využívají výkonné grafické karty, díky nimž lze celý
proces výrazně urychlit a oproti výpočtu pouze na CPU ho z týdnů zkrátit
na hodiny až dny. Důležitá je také velikost paměti - aby byly výpočty na
grafické kartě efektivní, musí se do ní vejít celý model. Neuronová síť, kterou
jsem používal, vyžadovala zhruba 6 GB.

Musel jste se nějakým
způsobem potýkat se specifiky českého jazyka?

Strojové zpracování češtiny je například v porovnání
s angličtinou o poznání náročnější problém a to kvůli složité morfologii
jazyka. Projevuje se to ale zejména u pravidlových systémů, kde musí pravidla
postihovat její komplexitu. U statistického zpracování jazyka, což je i případ
generování básní pomocí neuronových sítí, to až takový problém není - pokud je
síť dostatečně velká, nemá problém se s komplikovanější morfologií
vypořádat.

Ten program se
primárně učí nápodobou, přesto se v generovaných básních objevují novotvary.
Do jaké míry zvládá počítač vytvořit něco skutečně vlastního a být invenční?

Algoritmus generuje básně po znacích, teoreticky tedy může
vytvořit libovolná slova. Jedním z takových příkladů je slovo „pokropaní“.
Přestože v češtině neexistuje, dá se odhadnout, co by mohlo znamenat.
Mnohem zajímavější ale je, že algoritmus umí vytvářet i nové metafory. Za
příklad může posloužit výraz „tělo plné červánků“, který odkazuje k mrtvému
tělu zavražděné osoby, nebo přirovnání „tak vzácný jako listí“, vyjadřující se
k lidskému chtíči. Ten zcela určitě vzácný není, stejně tak jako listí.

Poezie umělého světa
Poezie umělého světa

Z kolika textů
jste vybíral básně do sbírky Poezie umělého světa? A podle čeho?

Ve sbírce je zařazeno třicet básní z několika stovek
vygenerovaných a vybíral jsem je podle dvou kritérií. Tím prvním bylo, aby báseň
dávala alespoň trochu smysl, což byl zejména u delších básní problém. Druhým
kritériem byla zajímavost - některé básně dávaly výborně smysl, ale byly příliš
banální. Důsledně jsem se rovněž držel zásady básně ani jejich názvy
neupravovat, čili jsem musel pro drobnou chybu vyřadit jinak zajímavé básně.

Pokud se dá bez dalších
úprav vygenerovat sbírka básní, kdy máme čekat počítačem napsaný román?

Jak už jsem říkal, při generování delších textů je
potíž v udržení tématu. Jednotlivá slova na sebe sice dobře navazují a
kratší úseky mohou dávat smysl, u delších úseků to však již neplatí. Pěkné
příklady delších textů v angličtině, generovaných podobným algoritmem,
jako je ten můj, má na svém blogu Andrej
Karpathy ze Stanfordu. Zkoušel generovat například Shakespeara, matematické
dokumenty v LaTeXu nebo zdrojové kódy linuxového jádra. Na pohled vypadá
výsledek dobře, ale pokud se do textu začtete, zjistíte, že moc smysl nedává.

bitcoin_skoleni

To ale neznamená, že by se už teď nedala automaticky
generovat beletrie, která je k nerozeznání od té stvořené člověkem.
Příkladem z poslední doby je třeba japonský román Konpyuta ga shosetsu wo
kaku hi (Den, kdy počítač napíše román), který téměř vyhrál literární soutěž. Pro
generování beletrie je ale potřeba použít jiný algoritmus a ten by
pravděpodobně zase nešel použít pro generování básní.

Je to pěkná ilustrace jednoho z významných nedostatků
současných systémů umělé inteligence – jsme schopní vytvořit umělou
inteligenci, která dokáže velmi dobře řešit jeden konkrétní problém, zatím se
ale nikomu nepodařilo vytvořit univerzální umělou
inteligenci, která by dokázala řešit libovolné problémy. Pokud se to jednou
podaří, takový systém bude mimo jiné schopný vylepšovat sebe sama, čímž jeho
schopnosti exponenciálně porostou. Teoreticky by tak mohla přijít doba, kdy nás
počítače překonají v řešení všech problémů. Toho, že by nás stroje ovládly
a převzaly vládu nad světem, se však nebojím.