V minulé kapitole jsme se seznámili se základními principy funkce neuronových sítí a na jednoduchých příkladech jsme si ověřili jejich nejvýznamnější vlastnost, schopnost učit se z příkladů. Použili jsme k tomu lineární neuronovou síť, která se dokázala naučit lineární vztah. V této kapitole si vlastnosti lineární sítě podrobněji popíšeme a především se budeme zabývat jejím využitím v konkrétních ekonomických úlohách. ..
2. kapitola
Lineární neuronové sítě
Obdobně jako je tomu u nervové soustavy člověka, skládá se i neuronová síť z formálních neuronů, které jsou propojeny tak, že výstup určitého neuronu je vstupem jednoho nebo více jiných neuronů. Počet neuronů a jejich propojení určuje architekturu neboli topologii sítě. Neurony v síti dělíme na vstupní, pracovní (skryté, mezilehlé) a výstupní neurony. Šíření a zpracování informace v síti je umožněno změnou stavů neuronů.
Režimy práce neuronové sítě
U neuronových sítí zkoumáme tři režimy práce (tzv. dynamiky):
- Organizační - popisuje topologii, t.j. počet neuronů a jejich vzájemné propojení
- Adaptivní - popisuje průběh učení sítě, t.j. změnu synaptických vah po předložení příkladu
- Aktivní - popisuje vlastní výpočet, t.j. nalezení výsledků (výstupních hodnot všech neuronů) buď v průběhu učení nebo po zadání dotazu
V první kapitole v příkladě o psovi a žrádle popisovala organizační dynamika strukturu lineární sítě s jedním vstupním neuronem, který pouze přenášel vstupní hodnotu do sítě, a jedním výstupním neuronem. Adaptivní dynamika popisovala způsob, jak se pes učil a aktivní reakci psa na zazvonění.
Síť MADALINE
Představitelem lineární sítě je síť MADALINE - Multi ADALINE. Je to jednovrstvá síť složená z n vstupních neuronů a m výstupních neuronů. Vstupní neurony přenášejí do sítě reálné vstupy označované jako vektor x = {x1, x2, ... , xn}. Neurony ve výstupní vrstvě mají rovněž reálné výstupní hodnoty y = {y1, y2, ... , ym}. Jsou typu ADALINE, což je zkratka názvu ADAptive LINear Element. Každý z nich se dokáže naučit jednu lineární funkci.
V příkladech první kapitoly jsme používali právě tuto síť a přesvědčili jste se, že skutečně dokáže odhalit lineární závislost veličin trénovací množiny.
Průběh učení lineární sítě
Výstupní funkce je definována vzorcem
V průběhu učení předkládáme síti vzory složené ze vstupních hodnot a požadovaných výstupních hodnot. Jestliže označíme wji váhu neuronu j na vstupu i, pak cílem adaptace je nalézt takové hodnoty synaptických vah wji, aby se po naučení vypočítané hodnoty co nejméně lišily od správných hodnot, t.j. aby chyba byla minimální.
Na počátku jsou váhy nastaveny na náhodné hodnoty blízké 0. Postupně se mění podle vzorce
To znamená, že pro každý vzor vždy srovnáváme výstupní hodnotu j-tého neuronu yj s požadovanou hodnotou dkj, kde k je číslo vzoru. Výsledný rozdíl yj - dkj představuje chybu j-tého neuronu v kroku k. Protože chceme, aby chyba výpočtu byla co nejmenší, musíme váhy na každém vstupu neuronu tímto způsobem upravit.
Rozhodující význam má pro průběh učení hodnota e, která se nazývá koeficient učení vah. Definuje, jak rychle systém přijímá nové skutečnosti a zapomíná na staré. Neuronová síť v tomto připomíná chování různých lidí podle jejich povahy: někdo v případě neúspěchu okamžitě mění strategii - hysterický typ odpovídá vyššímu koeficientu učení, jiný nerad mění svá rozhodnutí - konzervativní typ odpovídá nižšímu koeficientu učení. V praktických příkladech se volí koeficient učení zpravidla kolem 0.03 až 0,01, pokud je proces stabilní a počet vstupních proměnných asi do 10, při menší stabilitě nebo větším počtu proměnných 0.005 i méně. Pokud zvolíme koeficient příliš vysoký, může se síť stát nestabilní. Koeficient se dá nastavit a měnit pro každý příklad v dialogu Popis neuronové sítě.
Celý proces výpočtu připomíná statistickou metodu regrese, kdy máme k dispozici body v n-rozměrném prostoru a prokládáme jimi přímkou nebo nadrovinou. Rozdíl proti klasické regresi je právě v tom, že neuronová síť zapomíná staré informace a nové mají pro ni větší váhu, tj. systém bude přesněji reagovat na změněné podmínky.
Nelineární funkce
Síť MADALINE vyhledává koeficienty lineární funkce, nic však nebrání tomu, abychom na vstup přivedli jakýkoliv výraz. Například můžeme zjišťovat koeficienty kvadratické, exponenciální nebo jiné funkce, podmínkou je pouze to, aby koeficienty, které chceme najít, tvořily lineární funkci vzhledem k výsledné veličině. Tak například průběh úspory materiálu v čase může lépe modelovat funkce a x 2 + b x + c, kde hodnoty a, b, c nalezne neuronová síť. Je to proto, že křivka úspory bude pravděpodobně asymptotická - zpočátku se dá více uspořit, pak se rezervy vyčerpají a úspory nejsou tak výrazné.
Varianty algoritmu
V literatuře je popsána řada variant základního modelu. Často se používá metoda tzv. momentu, kdy změna vah se vypočte jako kombinace podle vzorce vypočítané změny a změny v předchozím kroku. Tento koeficient může nabývat hodnotu až 0.9, tj. výsledná změna pak sestává pouze z 10% z nově vypočtené změny a z 90% zůstává předchozí hodnota. V programu TNeuron ji nastavíme opět v dialogu Popis neuronové sítě v pravé horní části obrazovky - parametr Vliv starých vah.
Možnosti využití sítě MADALINE v ekonomické praxi
Přestože se jedná o poměrně jednoduchý typ sítě, lze s její pomocí řešit značnou škálu ekonomických problémů. V následujícím textu uvádím příklady pro některé typické úlohy.
Odhad ekonomických veličin - příklad "hodiny"
Tento příklad řeší problém, jak odhadnout časové nároky na provedení určitých prací, což má samozřejmě dopad na stanovení ceny při uzavírání smlouvy. Jsou tu definovány 3 typy činností označené jako typ 1. 2 a 3. Dále je definováno 5 profesí - svářeč, jeřábník, soustružník, kovář a stolař. Po naučení dokáže systém sám rozhodovat, kolik hodin je třeba na příslušnou operaci zakalkulovat. Vyzkoušejte si to.
Na tomto příkladu si všimněte jedné podstatné věcí:
- Jestliže do systému přicházejí binární vstupy, pak je musíme označovat jako samostatné proměnné, to znamená provedena operace typu 1: ano = 1, ne = 0, nikoliv jako jedna hodnota: typ operace 1, 2 nebo 3.
- Můžeme se však také dívat na vstupní hodnotu jako na reálné čislo. To nám pak říká, že celá činnost sestávala například z operace typu 1 apod.
Personalistika, přidělování zakázek pracovníkům - příklad "pers"
Vedoucí útvarů ve firmě přidělují zaměstnancům práci na zakázkách a mají samozřejmě zájem na tom, aby zakázka byla splněna co nejlépe. Pro kvalitní splnění zakázky není přitom rozhodující jen dosažené vzdělání a praxe pracovníka, tj. hodnoty přesně měřitelné, ale také osobní vlastnosti a schopnosti, které se nedají kvantitativně změřit, a rovněž momentální dispozice, která je dokonce v čase proměnná. Pro takovéto hodnocení se ukazuje vhodná neuronová síť v popisovaném příkladu pers.
Pro ukázku bylo zvoleno 5 druhů činností - oprava motoru, karosérie, elektriky, podvozku a interiéru. Pracovníci, kteří tyto opravy provádějí jsou Adam, Bedřich, Cyril, Daniel a Erich. Každý z těchto pracovníků nějakou činnost umí (známka 1) a jinou neumí (známka 5). V příkladu předpokládáme, že vedoucí tyto informace zatím nemá.
Předpokládejme, že firma provádí opravy podle rozpisu, který je zachycen v trénovací množině. Vyzkoušejte si tento příklad a po naučení mu zkuste zadat práci nebo kombinaci činností, a všimněte si, že systém dokáže přesně určit, kterou práci ten který pracovník zvládne perfektně a kterou ne. Všimněte si také, že systém si dokáže poradit i se situací, kterou nemá ve vstupních datech. Například mu zadejte, že na karosérii se bude pracovat 1/4 pracovní doby a na interiéru 3/4 pracovní doby. Objeví se správný odhad výkonů jednotlivých pracovníků. Opět záleží na tom, aby systém rozhodoval na základě korektních údajů. Součet doby činností musí být 1, tj. jeden úsek pracovní doby, jinak budou výsledky zkreslené.
Je samozřejmé, že tento příklad je pouze ukázkou, jak takový personální systém pracuje. Pro 5 pracovníků nepotřebuje vedoucí řešit tuto úlohu na počítači, avšak pro firmu s několika sty zaměstnanci může být uvedený personální model značným přínosem. Navíc v krizových situacích systém operativně řeší otázku zastupitelnosti pracovníků. Pro úplnost je vhodné řešit také otázku volby vhodných týmů a vzájemné týmové spolupráce, takový personální model však používá jiný typ sítě, cyklickou síť, takže k této problematice se vrátíme později.
Spolupráce ve skupině - příklad "skup"
Poslední typový příklad ukazuje ještě jednu významnou vlastnost lineární neuronové sítě, oddělení vlivu, které mají jednotlivé složky na výsledek, pokud známe pouze celkový efekt. Tento příklad byl dodatečně vytvořen pro účely této lekce, proto si aktualizujte svůj adresář, kde je TNeuron, a doplňte si soubory skup.txt a skup.pat z downloadu - nová verze TNeuron.
Předpokládejme, že tým lidí pracuje na společných úkolech a někdo je lajdák a práci jim kazí. Vedoucí ovšem nemá informace o každém jednotlivém pracovníkovi ale pouze může hodnotit celkový výsledek. Příklad skup tento stav modeluje. Skupinu tvoří Tonda, Honza, Karel, Pepa a Lojza. Na úkolech pracují různí pracovníci společně. Výsledky jsou hodnoceny mírou úspěšností zakázky, hodnotou mezi 0 a 1, přičemž 0 je zmetek a 1 kvalitní výrobek.
Vyzkoušejte si, že poté, co se neuronová síť naučí podle trénovací množiny informace o pracovnících, dokáže lajdáka odhalit. Stačí v dotaze zadat celou práci Honzovi a uvidíte že dostane hodnocení 0, zatímco ostatní dostanou 1.
Závěr
V této kapitole jsme se zabývali jednovrstvou lineární neuronovou sítí, která se dokáže naučit lineární závislosti výstupních hodnot na vstupních proměnných. Uvedli jsme si některé typové příklady z praxe. Využití těchto principů je však mnohem širší, místo schopností pracovníků můžeme hodnotit spolehlivost dodavatelů, místo odhadu časových nároků na zakázky také spotřebu materiálů a mnoho podobných ekonomických i výrobních úloh. Vyzkoušejte si sami řešení problémů, které vás napadnou nebo se kterými jste se setkali ve své praxi. Pokud dojdete k nějakým zajímavým závěrům, můžete je zveřejnit v diskusi k článku.
V příští kapitole si probereme další významnou oblast ekonomických problémů řešitelných lineární neuronovou sítí, ekonomické prognózování.