Středověk umělé inteligence skončil, seznamte se s neuronovými sítěmi, které umí psát básně

Nikdy jsem si nemyslel, že by jednou počítače mohly nahradit v člověka v tak kreativních a neexaktních činnostech jako je malba nebo skládání básní. Pomalu ale začínám měnit názor.

Není tomu dlouho, co se i v neodborných časopisech začalo psát o neuronových sítích, které dokáží generovat obrazy, připomínající psychedelické výtvory surrealistických malířů. Jak je to ale s automatickým generováním textů? Několik článků na toto téma vzniklo (např. http://karpathy.github.io/2015/05/21/rnn-effectiveness/), ale žádný zatím nezískal takový ohlas jako generátory obrazů. Pojďme tedy tuto oblast podpořit a ukažme si, jak pomocí umělých neuronových sítí vytvořit automatického básníka.

Rekurentní neuronové sítě

Většina neuronových sítí, které jsou používány k analýze i ke generování obrazu, je dopředných. To znamená, že signál v neuronové síti může proudit pouze jedním směrem a nemůže se vracet nebo se např. točit ve smyčce. Sítě, které toto umožňují se nazývají rekurentní. Takové sítě mnohem blíže připomínají lidský mozek a především mají jednu zásadní vlastnost — a tou je možnost uchování informace. Jinými slovy, rekurentní sítě mají paměť. Díky tomu je vyjadřovací schopnost těchto sítí větší než u dopředných neuronových sítí, a je dokonce dokázáno, že je ekvivalentní Turingovu stroji.

Paměť není nutná vždy, pokud však chceme pracovat se sekvenčními daty jako jsou texty, bez paměti se obejdeme jen stěží. Nevýhodou rekurentních neuronových sítí je však obtížnost trénování. Zatím existuje jen několik málo architektur rekurentních sítí, které dokážeme trénovat efektivně. Jednou z nich je takzvaná Long Short-Term Memory (LSTM), kterou použijeme jako stavební prvek našeho automatického básníka.

Jedna paměťová buňka Long Short-Term Memory je znázorněna na obrázku 1, převzatém z http://www.willamette.edu/~gorr/classes/cs449/lstm.html.

Long Short-Term Memory

Obrázek 1: Long Short-Term Memory.

Její jádro tvoří stavový neuron spolu se zpětnovazební smyčkou, označený jako „cell state“. Díky zpětné vazbě je neuron schopný uchovávat informaci, která byla přivedena na vstup i poté, co je vstup odpojen. Připojení a odpojení vstupu je ovládáno neuronem označeným jako „input gate“. Podobně je aktivace výstupu řízena neuronem označeným jako „output gate“.

Automatický básník

Abychom mohli natrénovat neuronovou síť generující básně, potřebujeme jí ukázat, jak takové básně mají vypadat. K tomu by ideálně posloužil velký korpus básní. Vzhledem k tomu, že jsem žádný velký neměl k dispozici, použil jsem databázi písňových textů ze serveru supermusic.sk. Sice nejde o básně, ale písňové texy mají k poezii blízko. Pomocí jednoduché detekce jazyka byly odstraněny nečeské texy a vznikl tak 10 MB velký textový korpus. Kvůli oddělení jednotlivých písní byly jejich názvy ve formě nadpisů převedeny na kapitálky a samotné texty na malá písmena.

Neuronová síť pro generování básní je sestavena z pěti vrstev. Vstupní vrstva sestává ze 157 neuronů (což je počet různých znaků v korpusu). Následují tři vzájemně úplně propojené vrstvy LSTM, přičemž každou vrstvu tvoří 1024 buněk. Výstup je tvořen 157neuronovou softmax vrstvou, jejíž výstupem je pravděpodobnostní rozdělení přes 157 stavů. Architektura celé sítě je znázorněna na obrázku 2.

Automatický básník

Obrázek 2: Automatický básník.

Síť je trénována tak, aby na základě historie a písmene na aktuální pozici v korpusu predikovala následující písmeno. Díky tomu, že síť pracuje na úrovni písmen a ne slov, jak by se nabízelo, je možné se naučit i formátování, specifické pro zápis písňových textů.

Vzrůstající popularita neuronových sítí s sebou přinesla celou řadu hotových nástrojů a knihoven. Není tak už naštěstí potřeba programovat vše od píky. Pro natrénování výše popsané sítě byla použita implementace Char-rnn využívající framework Torch.

Výsledek není vůbec špatný

Poté, co byla síť natrénovaná na písňovém korpusu, bylo možné ji použít pro generování nových textů. Pro účely testování byla inicializována náhodně, ale je možné ji inicializovat například i vložením názvu básně nebo počátečních veršů. Teoreticky může natrénovaná sít vygenerovat neomezené množství různých textů, nechal jsem tedy vygenerovat několik desítek básní a vybral pár nejlepších. Básně jsou přesně v té podobě, v jaké je vygenerovala síť.

Zde je jedna z nejlepších:

PÍSEŇ PODZIMU

proč se nedorazíš?
telefonát není naděje
pořád doma na týhle planetě
čas pro tebe stále dupe svou

na na na...

já vím, že v duchu prozrazuju snář
poznám že nejsem nic víc

Soudě podle tohoto příkladu dokázala síť bezchybně použít českou slovní zásobu, morfologii i syntax. Nejzajímavější ale je, že i obsahově dává báseň víceméně smysl a není úplně hloupá. Dalo by se namítnou, že mohlo dojít k přetrénování a síť jen opakuje verše, které viděla při trénování. Pokud se však podíváme do korpusu, žádný z použitých veršů se tam nevyskytuje.

Je zřejmé, že je tato neuronová síť schopná pochopit i netriviální sémantické konstrukce. Příkladem může být přirovnání „vzácný jako listí“ v následující básni. Opět se jedná o sousloví, které se v korpusu vůbec nevyskytlo:

VŠE PRÝ JE MŮJ HŘÍCH

já nechci slyšet chtíč
tak vzácný jako listí
slzy v očích mám
a měl bych řvát

kdo mi to vášně ukrývá
netuším, každý je tu sám
jen pár let jsem přísahal
že pro mne má smysl žít.

Obecně se dá říci, že čím kratší báseň je, tím větší smysl dává. Je to samozřejmě dáno tím, že v delších textech je větší prostor pro odbočení od tématu. Občas má síť tendenci vytvořit velmi krátkou báseň. Pokud to udělá, téměř vždy se jedná o něco povedeného a úsměvného. Zde jsou dva příklady:

NEJSI TAMARA

jsi ludmila

NEJHEZČÍ DÁREK

50 kčs, tak mám tě rád

Někdy se stane, že si síť vymyslí nové slovo. Pokud k tomu dojde, často se však jedná o velmi zajímavý novotvar jako v názvu následující básně:

DŽÍNOVÁ POKROPANÍ

tak přestaň, smiř se s tím
moje řeč, můj dech, být svá bez peněz
myslím, že jsi žena co dech ti dá
s tebou už nevím co s tím

když večer temně září
chuť ve mně zůstane
jen v klidu mi tvý kroky jdou
už dávno se směje

zkouším se vrátit
nechci se ptát
hledám skrýš
každou noc

a pak se ztratí
neumím lhát
a nejde to vrátit

A na závěr několik dalších výtvorů různých kvalit:

NEJSI

sníh a mrazivá
vím vím

proč zrovna jedna z tebe chce žít
to není možný ty to víš
a já mám ho rád
jen tak promlouvej

ztrácím sílu žít

PROČ SE MI ZDÁ

já vím, že jsem sám
a tak to mám rád
a tak se mi zdá
že tě nechci bít

já vím, že tě nechci bít

já vím, že jsem jen tvůj

ZÁTONÍ

nikdo nemá kolotoč.
krásné paže hostí,
troubí žlutejch koní
a k večeru opilí.

déšť očima život hledá,
musím odeslat je dál,
protože jsi laciná
přece dobře už není.

člověk náš kruh co pustý sen
chceš-li vedle nosit chlast.
oh, jak miliady třeští?
pak mi řekli: nebudeš, tak se střež

KRÁLOVNA VČEL

nebude to divně znít,
pozor na tvůj strach
nesměj se hned
a hned od lidí

proč pocit mi nedáš,
nechci to hned
chceš mi říkat zatím starý poslání
když to ale nevíš, nevadí

poslední ráj,
hledám nahoru a dolů
že je nevěrná
ať není dál

venku je den
tak proč se bojíme
spát

dobře víme
že je něco v ní
a já už to vím

ooou jé

Pokud vás zajímají další příklady počítačem generovaných básní, můžete si zdarma stáhnout mou básnickou sbírku Poezie umělého světa. Pro vygenerování obsažených básní byl použitý vylepšený algortitmus napsaný v TensorFlow a jako trénovací sada posloužily básně ze serveru Písmák.cz.


Share on FacebookTweet about this on TwitterShare on Google+

34 komentářů k “Středověk umělé inteligence skončil, seznamte se s neuronovými sítěmi, které umí psát básně

  • Srpen 10, 2015 at 9:29 am

    Moc pěkné. Nezkoušel jste experimentovat s parametrem temperature?

    Co mě na char-nn velice zaujalo, jak se dokáže naučit i vícebajtové kódování jako UTF-8. Je zajímavé sledovat výsledky samplování v průběhu trénování. Na příkladu UTF-8 nejprve nedokáže ani správně poskládat české znaky s diakritikou, následně se to naučí aby pak dokázal skládat slova, věty, interpunkci atd. Opravdu magická AI.

    Odpovědět
    • Srpen 12, 2015 at 8:02 am

      Zkoušel, nejlepších výsledků pro tuto sít jsem dosáhl s hodnotou temperature=0.2.

      Odpovědět
  • Srpen 10, 2015 at 2:45 pm

    To vypadá jako básně od lidských autorů, bohužel.

    Odpovědět
    • Duben 17, 2016 at 11:08 pm

      jako pisne popovejch autoru .ale dobry.. .asi to vychazelo z toho kmenovyho zakladu .zajimavy by bylo to nakrmit treba klasickou literaturou, nebo nejakym surealizmem. taky bych si rad zageneroval.kdyz se tomu zada vice vstupnich dat, tak by to treba mohlo byt i prekvapive dobry. v hudbe taky experimentuju s nahodilosti a ( dejme tomu ) nekvalitou. vysledky byvaji famozni...sam bych na to nikdy neprisel...

      Odpovědět
  • Srpen 10, 2015 at 3:37 pm

    Kdy bude ten generátor k dispozici online? Chci si taky generovat :)

    Odpovědět
    • Srpen 12, 2015 at 8:07 am

      On je trochu problém v tom, že to bylo trénované na výkonné grafické kartě (NVIDIA GeForce GTX TITAN), která je potom potřeba i pro generování. Webové servery většinou takovým HW nedisponují, ale pokud se mi to podaří vyřešit, rád se o generátor podělím.

      Odpovědět
  • Srpen 10, 2015 at 7:50 pm

    Budou k dispozici i zdrojové kódy? Rád bych se na ně, ze studijních důvodů, podíval.

    Odpovědět
  • Srpen 10, 2015 at 8:21 pm

    problém korpusů je, že míchají osobnost autorů, čímž vznikají "zprůměrované" výsledky, ale je jako chtít napsat báseň pro průměrného čtenáře, nebo film pro průměrného diváka. Básník, filmař i marketér musí mít svoji "cílovku" a stejně tak trénování by mělo mít osobnost, nebo alespoň nějaký žínrový výběr, pak by výsledky mohly být mnohem kvalitnější

    Odpovědět
      • Srpen 14, 2015 at 7:37 pm

        kazdy autor je v principe modifikator - vyuziva iba to co sa naucil k tomu, aby potom bol schopny sformulovat vlastny odkaz.

        Odpovědět
  • Srpen 10, 2015 at 8:25 pm

    moc programování nerozumím, ale za to rozumím básním a trochu to připomíná Guillaume Apollinaireho. :D

    Odpovědět
    • Srpen 10, 2015 at 10:03 pm

      Odpusťte, ale touto odpovědí dokazujete, že básním nerozumíte ani za mák (ostatně stejně jako autor článku).
      A nejde o to, že Pásmo je jednou z mých nejoblíbenějších básní.
      Jde o to, že podstatou poezie není líbivé blábolení, ale koncentrace a intenzifikace smyslu a sdělení. Což ovšem v ignorantské postmoderně dokáže málokdo skutečně připustit.

      Odpovědět
      • Srpen 10, 2015 at 11:25 pm

        A proc usuzujete, ze ve vytvoru pocitace neni ukryto neco vic? Naopak, ono tam neco navic rozhodne je, kdybychom meli dostatek casu k pochopeni, jak cela basen vznikla, tak uvidite tu magii v ni schovanou.

        Bylo by zajimave, kdybychom dnesni rozbory G. Apollinaireho mohli za nejakou dobu delat nad podobnymi basnemi stroju. Jen by clovek musel uznat, ze hlubsi myslenku dokaze i stroj.

        Odpovědět
      • Srpen 11, 2015 at 3:16 pm

        Dekuji...

        Odpovědět
      • Srpen 14, 2015 at 7:21 pm

        technicky je "koncentrace a intenzifikace smyslu a sdělení" uplne presne to, co robi onen pocitacovy program. staci si precitat popis, ako k tomu doslo. takze klidek.

        Odpovědět
  • Srpen 11, 2015 at 10:49 am

    Pěkné, díky za článek Jirko. Aktuální vývoj v deep learning trochu sleduji a musím uznat, že za poslední roky došlo k výraznému skoku. Nicméně si myslím, že to stále není ta správná cesta k AI. Jde to poznat právě na generování jazyka. Poezie je myslím mnohem jednodušší než třeba smysluplný odstavec (nebo alespoň souvětí). Kloním k názoru Jeffa Hawkinse, že to chce jiný přístup než neuronové sítě - prostě okopírovat přesně to, co se děje v naší mozkové kůře. No a pak to udělat rychlejší a větší. Jsem ale optimista a dávám AI 10 let maximálně 20. :)

    Přidám i svou kapku do mlýna: generátor textů natrénovaný pro různé jazyky na různých textových datech. Můžete si trochu zagenerovat, občas to generuje vtipné věty (čeština, defaultní model), pravděpodobně protože velká část textů je z fór typu mimibazar a emimino. Ve "favourites" jsou uložené povedené věty. Generátor je velmi jednoduchý, pracuje na bytové úrovni, takže je také natrénovatelný na libovolných datech, libovolném kódování. Učí se pouze posloupnosti bytů. Na stránkách je odkaz na krátký článek, kde generátor a jazykový model v pozadí popisuji.

    Odpovědět
    • Srpen 12, 2015 at 8:41 am

      Nevím, co myslíš tím "okopírovat přesně to, co se děje v naší mozkové kůře", ale osobně si myslím, že snaha o expertní AI ve smyslu napodobování toho, jak si myslíme, že inteligence funguje (syntaktická analýza, ontologie, logická analýza apod.), je cesta do pekel. Samozřejmě netvrdím, že umělé neuronové sítě jsou jedinou správnou cestou. A už vůbec netvrdím, že jimi dokážeme vytvořit samostatně myslící entitu. Ale myslím si, velkou část těžkých úloh z oblasti AI, které po dlouhá desetiletí odolávaly, dokážeme uspokojivě vyřešit pomocí velkých dat a struktur jako jsou neuronové, Bayesovské, tenzorové a další sítě.

      Odpovědět
      • Srpen 17, 2015 at 11:15 am

        Souhlasím, i když jazyková analýza, jak se dělá v NLP, není cestou do pekel, snad jen cesta, která nikam nevede. :) Já myslel přesné napodobování struktury neokortexu a jeho fungování. Neuronové sítě se podobají tomu, jak opravdu mozek funguje, jen přibližně. Samozřejmě to, jak opravdu funguje, zatím víme jen zhruba. Víme ale, že princip fungování je ve všech částech neokortexu skoro stejný. Takže bych čekal, že dobrý model (klidně neuronová síť) bude jeden, pouze se bude lišit jaká data mu předhodíme: sekvence vektorů (vizuální data), sekvence bytů (jazyk), paralelní sekvence bytů (hudba), případně všechno dohromady.

        Taky si myslím, že zvětšovat trénovací data do nekonečna nepomůže. Musíme umět víc vytěžit z dat, která jsou k dispozici. Příkladem je srovnání různých jazyků: pro morfologicky bohaté jazyky se běžně požadují větší data jak pro angličtinu, což je pro mne důkaz toho, že se neumí jazyky zpracovávat pořádně: neumíme využít všech feature v datech (a mám na mysli zejména ty pod úrovní slov).

        Odpovědět
  • Srpen 11, 2015 at 1:14 pm

    Je dobré se zamyslet, jak fungují metafory – respektive, jak fungujeme my, když metaforu vidíme: Tak zoufale se snažíme najít smysl v onom často nesmyslném spojení slov, že dokážeme jít za několik sémantických rohů, abychom ho našli. To je ale práce našeho mozku, nikoli AI. Z tohoto pohledu je mnohem jednodušší vymyslet “automatického básníka”, než automatického blogera nebo automatického novináře, romanopisce nebo vědce, protože v básních je předpoklad, že tam smysl je a čtenář ho má hledat, zatímco v jiných typech textu smysl očekáváme do určité míry naservírovaný. Je potom jenom na nás, jestli i u lidské poezie dokážeme oddělit to, co něco znamená, od toho, co je podobný náhodný konglomerát (byť uplatňující morfologická a syntaktická pravidla – s výhradami) jako básně v článku.
    Pro vás, co jste v AI doma, mám spíš následující otázku: Existuje nějaká predikce, jestli se AI dokáže přehoupnout přes práh morfologie a případně syntaxu, do oblasti sémantiky a pragmatiky? Tedy jestli se kdy dokážeme vymanit z Chomského "Colourless green ideas scream soundlessly"? Je to jen otázka tvorby specializovaných konotačních korpusů či kdoví čeho? A ve chvíli, kdy bude AI schopna tvořit perfektně smysluplné texty, bude jim rozumět?

    Odpovědět
    • Srpen 12, 2015 at 9:04 am

      S prvním odstavcem bez výhrady souhlasím, vygenerovat báseň je skutečně jednodušší, než např. vygenerovat smysluplnou povídku. Nesouhlasím však s tím, že by se tato síť omezovala jen na morfologii a syntax. Z mého pohledu už jsou Chomského colourless green ideas překonané. Co třeba text "NEJSI TAMARA jsi ludmila"? Rozhodně nejde o náhodně poskládaná slova, která jsou jen v gramatické shodě.

      Problém je v tom, že ta síť zatím není schopná udržet "sémantický focus" dostatečně dlouho a po pár slovech často odbočí. To je dáno tím, že je stále relativně jednoduchá a trénovací data jsou malá.

      Odpovědět
    • Srpen 13, 2015 at 9:09 am

      Souhlasím.

      Odpovědět
  • Srpen 12, 2015 at 3:23 am

    To se učí jenom zpětnou propagací? Nebo nějakým deep learningem?

    Odpovědět
    • Srpen 12, 2015 at 9:10 am

      Je to trénované standardní zpětnou propagací s pseudonáhodnou inicializací vah na okně velikosti 80 znaků.

      Odpovědět
  • Srpen 12, 2015 at 2:09 pm

    K basnikovi ma dnes pocitac stale jeste velmi daleko a obavam se, ze cesta k nemu neuronovymi sitemi nevede (cimz nesnizuji ani clanek, ani neuronove site). Vyvoj umele inteligence je rozvetveny a ma spoustu zajimavych oblasti. Napr. emocemi a jejich facialnimi vyjadrenimi, rizenim robotu a databazi vicero prirozenymi jazyky, automatickym psanim programu, umelou osobnosti atd. jsme se na zabyvali jiz pred 30 lety.. Hardware a software te doby (ale jeste ani te dnesni) nasim potrebam nestacily, proto jsme navrhli i pocitacovy 'cluster' specializovany na umelou inteligenci a rozsahla znalostni data (srv. dnesni "Big Data") na zcela jinych principech, nez bylo bezne.. Tehdy to vetsina povazovala za blouzneni, ale historie potvrdila, ze jsme byli jen vic v predstihu, nez mnozi dokazali unest (a jini pochopit). Podobne je tomu i dnes napr. se socialnimi sitemi. Ty rovnez potrebuji kvalitativni zmenu, vime jakou i jak, ale nejsou 'zdroje', protoze o kvalitativne nove objevy vseobecne neni zajem - jak to zname z historie (napr. W. A. Mozart byl pochovan do spolecneho hrobu, Dickinson, Gauguin, Gogh, El Greco, Poe, Schubert, Wilde atd. zemreli v chudobe)... Rozpor mezi pozadavky doby a geniem ukazuje zvlaste zretelne priklad Vincenta van Gogha, ktery vytvoril ~1,700 del, avsak prodal pouze jedine... Take dnes napr. existuje objev noveho paradigma ekonomiky, ktery resi vsechny dnesni ekonomicke problemy statu (zadluzeni, vyrovnane rozpocty, dostatek penez na verejne potreby, duchody, vzdelani, vedu, zdravotnictvi atd.), byl prezentovan na pude ruznych vlad i OSN, ale nikdo ho nechce, prestoze je spravnost matematicky dokazana dokonce dvema nezavislymi dukazy. Ale takovy uz je zivot..

    Odpovědět
  • Srpen 13, 2015 at 9:06 am

    Kdyby se jako předloha použila opravdová poezie, mohlo by to být velmi zajímavé. Některé básně jsou opravdu povedené.

    Odpovědět
  • Srpen 13, 2015 at 2:04 pm

    A já si lámal hlavu, jak na ty své literární skvosty Burroughs přišel - ta nápadnost je až zarážející!!! :-)

    Odpovědět
  • Srpen 19, 2015 at 3:52 pm

    Už vím, kde se vzalo "A každý sám do kapsy svý džípem si pádí" :). Osobně bych viděl jako nedostatek to, že vygenerované texty nemají strukturu písniček. Písňový text nemusí být bůhvíjaká poezie, ale měl by mít rytmus, nějaké řazení znělých slabik a tak. Většina textů v použitém korpusu to určitě splňuje, ale síť to nějak nepochytila.

    Možná by stálo za to, zkusit jako korpus nějaké větší dílo ve verších (Ilias, Odysea) a generovat další verše. Mohlo by to jít i se Starým zákonem.

    Odpovědět
  • Pingback: Je singularita blízko? | Machine Learning Guru

  • Květen 21, 2016 at 4:24 pm

    This is just the percfet answer for all of us

    Odpovědět
  • Červenec 8, 2016 at 3:43 pm

    The automobile industry asand pain and suffering caused by fire, theft and vandalism. Liability only and will be exempt from this. Hummers have always believed that reducing price structures on your insurance agent emailwas able and willing to switch insurers. 1 in 10,962. The United States is the dominant market share of the quality of these things into consideration where you should have mucha multipolicy discount if you think that this insurance will alter the rate of car insurance. You really need to hire an attorney who is monitoring the situation and other butwhich case no for some. It may not be rushed. If you're buying risk coverage against flood. Try to get a car insurance. Since they reduce the amount of coverage anit on a far better to pay for damages to personal accident benefits, coverage for your vehicle. The most important maritime systems of risk you assume that every driver or withIs it possible to rent a car. What you want to save on Indiana auto insurance rate for short term auto insurance, but many people are looking directly at teen NowAsk your family from financial disaster following a major consideration!) While we are into. Auto insurance is a great feeling to not overspend on car insurance, so going forward. After carpossible to invest in this area. When you have a pattern seems to be safe on the road. Failure to have an accident. But, what if the insured individuals nor autofor compensation. However, this does in fact by the Life Insurance. In Georgia, for example, is a great deal for your injuries.

    Odpovědět
  • Září 7, 2016 at 5:10 pm

    Mam pocit, ze texty nasich ceskych pisni kvalitativne pokulhavaji :-D

    Odpovědět
  • Listopad 26, 2016 at 3:41 pm

    Okopírovat mozek ... to mně připomíná, když se v 19. století snažili vyrobit letadlo nalepováním peří. Auta taky nemají nohy ... Ale těžko říct - možná tohle - inteligence - je už příliš na špici vývoje a jiná cesta než přes ty neouronové sítě nevede (viz. antropický princip - "Aby vůbec mohl někdo položit otázku po tom, proč se vyvinuly inteligentní bytosti, musí tyto inteligentní bytosti existovat.") A je otázka, jestli je pravděpodobné, že existuje právě v tomto vesmíru jiná cesta jak vytvořit umělou inteligenci na úrovni člověka, než právě pomocí stejné technologie, na které je založena inteligence lidská - neuronové sítě.

    Odpovědět

Napsat komentář

Vaše emailová adresa nebude zveřejněna.