Predikce budoucnosti s Neurální sítí

30. 05. 2013 | 11:30
Přečteno 4954 krát
Vždy mě fascinovala budoucnost. I když jsem člověk sezónně sentimentální žijící přítomností, budoucnost je to, co ve mě vzbuzuje pocit napětí, co mi dává energii a udržuje motivaci. Proto jsem před pár měsíci oprášil svůj dávno zapomenutý nedokončený projekt z jedné studentské soutěže pro nejmenovanou poradenskou firmu, jejíž zadáním bylo: “Navrhnout metodologii a způsoby predikce cen energetických komodit ve střednědobém horiontu”...

Tehdy jsem se zaměřil na obyčejné statistické metody a záhy mi bylo jasné, že jejich prediktivní síla je nižší než přenost predikce u denního horoskopu. Tušil jsem, že matematické modely, které jsme se učili ve škole jsou příliš statické, ačkoliv je používají například v NASA pro výpočet trajektorie objektů na oběžné dráze. Chyběla tomu jakási inteligence, která by se adaptovala a reagovala na nefyzikální podněty. Jednou z cest jak toho dosáhnout bylo použít výpočetní sílu dněšních výkonných počítačů a simulovat způsob predikce tak, jak by to udělal člověk, tj. s použitím neurálních sítí.

Když člověk bez hlubších znalostí výpočetní techniky a analýzy dat zaslechne pojem neurální síť, tak nabyde dojmu, že neurální sítě jsou něco futuristického, co patří jen do sci-fi románů. Alespoň takový byl můj první dojem. Původní myšlenka byla inspirovat se lidským mozkem. Lidský mozek má nespočet neuronů, každý obsluhující jinou úlohu a funkci. Každý neuron pak má různou váhu (koeficient důležitosti), která přispívá k porozumění vjemů, jež vstřebáváme našimy smysly. Jak vnímáme podněty z okolí je výsledkem rozhodnutí všech neuronů.

topologie
topologie


Jak jsou tyto neurony rozmístěny v mozku je předučen mapou, neboli topologií, která nám říká, jak jsou informace putovány po neuronech v neurální síti. Jednoduchá síť má vrstvu neuronů přijímající vstupní informace, několik vrstev neuronů, které informace zpracovávájí a konečnou výstupní vrstvu, která nám řekne odpověď na zadanou úlohu. Nevýhodou je netransparentnost sítě. Jedna síť může obsahovat miliony neuronů s různými váhami a koeficienty a nikdy nebudeme vědět, jak byla informace zpracována a po jakých neuronech putovala. Proto je lidský mozek tak složitý na chápání. To je například důvod, proč se říká, že u některých jedinců nechápeme jejich myšlenkové pochody.

Neurální sítě nejsou nic nového pod sluncem, první taková síť byla vytvořena v roce 1957 Frankem Rosenblattem a jednalo se o jednoduchý model s lineárním klasifikátorem, který dokázal lineární kombinací předpovědět výsledek předem zadané binární úlohy. Dneska jsou neurální sítě hojně používány velkými institucemi (banky, pojišťovny, farmaceutické firmy, vládní organizace atd.), využití v praxi je tedy široké od rozpoznání řeči a obrazu po předpověď počasí.

Neurální sítě lze laicky přirovnat k počítačovým procesům, které spolu komunikují a pracují k dosažení předurčeného cíle. Může to být nalezení odpovědi na jednoduchou otázku “Je lepší přítelkyni koupit čokoládu nebo růži?” na základě předem známých faktů, např. dle aktuálního menstruačního cyklu, indexu tělesné hmotnosti za poslední 3 měsíce a počtu darovaných růží, které dostala od svých nápadníků za poslední týden. Každému neuronu nejprve řekneme, jak důležitou váhu mají jednotlivá vstupní data. Toho dosáhmene standardní optimalizací. Poté už je neuronová síť schopna najít skryté vazby mezi čokoládou a menstruačním cyklem, nebo počtem darovaných růží a vývojem indexu tělesné hmotnosti. Mě to trvalo 16 let, než jsem na to přišel, neuronové síti to nezabere ani minutu.

Ale vraťme se od teorie k mému projektu. Věřil jsem, že simulací lidských neuronů dáváme počítačům mozek, nebo jinak řečeno samoadaptivní umělou inteligenci. Bylo zklamáním zjistit, že to není tak úplně pravda. Neurální sítě se sice snaží simulovat způsob, jakým reálně lidské neurony spolu komunikují, ale ve skutečnosti je charakter fungování v konečném důsledku jiný.

Místo cen energetických komodit zkusme vzít časovou řadu indexu EURUSD, neboť jsou k dispozici levná a kvalitní data a rozhodneme se aplikovat neuronovou síť na predikci jeho vývoje. Nepotrvá dlouho a na základě teorie a popisu struktury neuronů dojdeme k závěru, že neurální sítě nebudou moc úspešně v predikování nonstacionárních jevů (např. právě vývoj cen energetických komodit), neboť dochází k přefitování vůči skrytým vztahům, které se mohou, ale nemusí vyskytovat v budoucnosti. Nejde tedy o formu umělé inteligence, nýbrž o jinou formu sofistikované optimalizace. I přesto se neurální sítě úspěšně používají, jen musíme pochopit slabiny a přednosti neurálních sítí. Je třeba zjistit co lze a co nelze prediktovat.

Představme si například jednoduchou úlohu ve SCIO testu, vyskytujicí se v přijímacích testech na gymnázia. Dokážete mi říct jaké číslo následuje po sérii čísel 2,3,5,7? 11? Ne, může to být třeba 50. Člověk postavený před takovou úlohu použije svůj mozek k tomu, aby napasoval úlohu na znalosti a dovednosti, které se předtím naučil a vzpomene si na prvočísla. V případě takové stacionární problematiky je velká šance, že splní úlohu dobře. Tzn. nehledě na to jak komplikovaná jsou data, vždy se nalezne matematická funkce, která matematicky popíše, proč se tak data chovala v minulosti a jaký je její budoucí trend (v tomto případě další čísla v pořadí série čísel). Z toho důvodu existuje nekonečně moho matematických funkcí definující jakýkoliv historický jev. Vždy existuje funkce, která bude plně pasovat na testovaná historická data. Nikdo ovšem nedokáže říct, jestli nalezená matematická funkce má relevantní váhu a dokáže predikovat budoucnost. Pokud řeknete počítači, aby našel matematickou funkci vysvětlující křivku na obrázku níže a neurčíme mu mezní podmínky, nalezne Vám N-tou polynomiální funci, která perfektně sedne na zadanou křivku.

fce
fce


Pro tyto důvody, pokud byla data vytvořená velmi komplikovanou kombinací faktorů a navíc obsahuje faktory náhodné, je skoro nemožné s pomocí neurálních sítí predikovat budoucnost. Například cenu elektrické energie je nemožné předpovědět na měsíce dopředu, protože závisí na mnoha fundamentálních faktorech, z nichž některé jsou naprosto náhodné (např. státní regulace, blackouty, katastrofy typu Fukušima atd.).

Co tedy lze předpovědět s akceptovatelnou přesností s pomocí neurálních sítí? Třeba jev, který má cyklický aspekt a je pravděpodobné, že se bude jeho výskyt opakovat, například obecnou trendovost a netrendovost. Výsledek snažení najdete níže na grafu.

graf
graf


Graf vyjadřuje normalizovaný vztah mezi 70-ti týdením vývojem indexu EURUSD a prediktivním modelem založené na neurální síti. Výkonnost prediktivního modelu je hodnocen scoringovým systémem, který jednoduše přičítá body, byla-li týdenní predikce přesná a odečítá body, pokud se stal opak. Ať už výsledky interpretujete jakkoliv, neurální síť vcelku neúspěšně předpověděl trend indexu, ale vcelku úspěšně dokázal predikovat vztah mezi volatilitou indexu a entropií trhu.

Jaké jsou závěrečné postřehy a výstupy z projektu?

• Pokud bych býval dokončil a odevzdal výstupy projektu s neurální sítí, pravděpodobně bych studentskou soutěž nevyhrál, protože nakonec model našel a předpověděl jiné vztahy než např. to kde bude cena plynu za dva měsíce ode dneška.
• V poskytnutých datech chyběly informace, které by modelu umožnily předpovědět to, co jsem chtěl.
• Zvolil jsem moc složitou topologie sítě, tím se zredukovala schopnost zobecnění vstupních informací a “dekodování” šumu.
• K úspěšné předpovědi nám stačí i 60% pravděpodobnost.

Doufám, že pro Vás byl článek poučný a srozumitelný. Příště zas třeba něco méně technického, třeba o vztazích.

Blogeři abecedně

A Aktuálně.cz Blog · Atapana Mnislav Zelený B Baar Vladimír · Babka Michael · Balabán Miloš · Bartoníček Radek · Bartošek Jan · Bartošová Ela · Bavlšíková Adéla · Bečková Kateřina · Bednář Vojtěch · Bělobrádek Pavel · Beránek Jan · Berkovcová Jana · Bernard Josef · Berwid-Buquoy Jan · Bielinová Petra · Bína Jiří · Bízková Rut · Blaha Stanislav · Blažek Kamil · Bobek Miroslav · Boehmová Tereza · Brenna Yngvar · Bureš Radim · Bůžek Lukáš · Byčkov Semjon C Cerman Ivo · Cizinsky Ludvik Č Černoušek Štěpán · Česko Chytré · Čipera Erik · Čtenářův blog D David Jiří · Davis Magdalena · Dienstbier Jiří · Dlabajová Martina · Dolejš Jiří · Dostál Ondřej · Dudák Vladislav · Duka Dominik · Duong Nguyen Thi Thuy · Dvořák Jan · Dvořák Petr · Dvořáková Vladimíra E Elfmark František F Fafejtová Klára · Fajt Jiří · Fendrych Martin · Fiala Petr · Fibigerová Markéta · Fischer Pavel G Gálik Stanislav · Gargulák Karel · Geislerová Ester · Girsa Václav · Glanc Tomáš · Goláň Tomáš · Gregorová Markéta · Groman Martin H Hájek Jan · Hála Martin · Halík Tomáš · Hamáček Jan · Hampl Václav · Hamplová Jana · Hapala Jiří · Hasenkopf Pavel · Hastík František · Havel Petr · Heller Šimon · Herman Daniel · Heroldová Martina · Hilšer Marek · Hladík Petr · Hlaváček Petr · Hlubučková Andrea · Hnízdil Jan · Hokovský Radko · Holásková Kamila · Holmerová Iva · Honzák Radkin · Horáková Adéla · Horký Petr · Hořejš Nikola · Hořejší Václav · Hrabálek Alexandr · Hradilková Jana · Hrstka Filip · Hřib Zdeněk · Hubálková Pavla · Hubinger Václav · Hülle Tomáš · Hušek Radek · Hvížďala Karel CH Charanzová Dita · Chlup Radek · Chromý Heřman · Chýla Jiří · Chytil Ondřej J Janda Jakub · Janeček Karel · Janeček Vít · Janečková Tereza · Janyška Petr · Jelínková Michaela Mlíčková · Jourová Věra · Just Jiří · Just Vladimír K Kaláb Tomáš · Kania Ondřej · Karfík Filip · Karlický Josef · Klan Petr · Klepárník  Vít · Klíma Pavel · Klíma Vít · Klimeš David · Klusoň Jan · Kňapová Kateřina · Kocián Antonín · Kohoutová Růžena · Koch Paul Vincent · Kolaja Marcel · Kolářová Marie · Kolínská Petra · Kolovratník Martin · Konrádová Kateřina · Kopeček Lubomír · Kostlán František · Kotišová Miluš · Koudelka Zdeněk · Koutská Petra Schwarz · Kozák Kryštof · Krafl Martin · Krása Václav · Kraus Ivan · Kroupová Johana · Křeček Stanislav · Kubr Milan · Kučera Josef · Kučera Vladimír · Kučerová Karolína · Kuchař Jakub · Kuchař Jaroslav · Kukal Petr · Kupka Martin · Kuras Benjamin · Kutílek Petr · Kužílek Oldřich · Kyselý Ondřej L Laně Tomáš · Linhart Zbyněk · Lipavský Jan · Lipold Jan · Lomová Olga M Máca Roman · Mahdalová Eva · Máchalová Jana · Maláčová Jana · Málková Ivana · Marvanová Hana · Mašát Martin · Měska Jiří · Metelka Ladislav · Michálek Libor · Miller Robert · Minář Mikuláš · Minařík Petr · Mittner Jiří · Moore Markéta · Mrkvička Jan · Müller Zdeněk · Mundier Milan · Münich Daniel N Nacher Patrik · Nachtigallová Mariana Novotná · Návrat Petr · Navrátil Marek · Němec Václav · Nerudová Danuše · Nerušil Josef · Niedermayer Luděk · Nosková Věra · Nouzová Pavlína · Nováčková Jana · Novák Aleš · Novotný Martin · Novotný Vít · Nožička Josef O Obluk Karel · Ocelák Radek · Oláh Michal · Ouhel Tomáš · Oujezdská Marie · Outlý Jan P Pačes Václav · Palik Michal · Paroubek Jiří · Pavel Petr · Pavelka Zdenko · Payne Jan · Payne Petr Pazdera · Pehe Jiří · Peksa Mikuláš · Pelda Zdeněk · Petrák Milán · Petříček Tomáš · Petříčková Iva · Pfeffer Vladimír · Pfeiler Tomáš · Pícha Vladimír · Pilip Ivan · Pitek Daniel · Pixová Michaela · Plaček Jan · Podzimek Jan · Pohled zblízka · Polách Kamil · Polčák Stanislav · Potměšilová Hana · Pražskej blog · Prouza Tomáš R Rabas Přemysl · Rajmon David · Rakušan Vít · Ráž Roman · Redakce Aktuálně.cz  · Reiner Martin · Richterová Olga · Robejšek Petr · Ruščák Andrej · Rydzyk Pavel · Rychlík Jan Ř Řebíková Barbora · Řeháčková Karolína Avivi · Říha Miloš · Řízek Tomáš S Sedlák Martin · Seitlová Jitka · Schneider Ondřej · Schwarzenberg Karel · Sirový Michal · Skalíková Lucie · Skuhrovec Jiří · Sládek Jan · Sláma Bohumil · Slavíček Jan · Slejška Zdeněk · Slimáková Margit · Smoljak David · Smutný Pavel · Sobíšek Pavel · Sokačová Linda · Soukal Josef · Soukup Ondřej · Sportbar · Staněk Antonín · Stanoev Martin · Stehlík Michal · Stehlíková Džamila · Stránský Martin Jan · Strmiska Jan · Stulík David · Svárovský Martin · Svoboda Cyril · Svoboda Jiří · Svoboda Pavel · Sýkora Filip · Syrovátka Jonáš Š Šebek Tomáš · Šefrnová Tereza · Šimáček Martin · Šimková Karolína · Šindelář Pavel · Šípová Adéla · Šlechtová Karla · Šmíd Milan · Šojdrová Michaela · Šoltés Michal · Špalková Veronika Krátká · Špinka Filip · Špok Dalibor · Šteffl Ondřej · Štěpán Martin · Štěpánek Pavel · Štern Ivan · Štern Jan · Štětka Václav · Štrobl Daniel T T. Tereza · Táborský Adam · Tejkalová N. Alice · Telička Pavel · Titěrová Kristýna · Tolasz Radim · Tománek Jan · Tomčiak Boris · Tomek Prokop · Tomský Alexander · Trantina Pavel · Tůma Petr · Turek Jan U Uhl Petr · Urban Jan V Vacková Pavla · Václav Petr · Vaculík Jan · Vácha Marek · Valdrová Jana · Vančurová Martina · Vavruška Dalibor · Věchet Martin Geronimo · Vendlová Veronika · Vhrsti · Vích Tomáš · Vlach Robert · Vodrážka Mirek · Vojtěch Adam · Vojtková Michaela Trtíková · Vostrá Denisa · Výborný Marek · Vyskočil František W Walek Czeslaw · Wichterle Kamil · Wirthová Jitka · Witassek Libor Z Zádrapa Lukáš · Zajíček Zdeněk · Zaorálek Lubomír · Závodský Ondřej · Zelený Milan · Zeman Václav · Zima Tomáš · Zlatuška Jiří · Zouzalík Marek Ž Žák Miroslav · Žák Václav · Žantovský Michael · Žantovský Petr Ostatní Dlouhodobě neaktivní blogy