Článek navazuje na seriál Inteligentní ekonomické systémy a zabývá se metodami prognózování a analýzy dat s využitím neuronových sítí. Přináší nové poznatky získané při realizaci inteligentního prognostického projektu v technické praxi a popisuje demoverzi systému TNeuTest, který navazuje na původní výukový program TNeuron.
Inteligentní prognostické systémy
Úvod
Popis problému
Princip využití neuronových sítí v ekonomické a technické praxi byl již popsán v seriálu Inteligentní ekonomické systémy. V tomto článku jsou popsány nové poznatky z realizace modelu prognózování jakostních problémů elektrických taveb.
Při tavení vznikaly v určitých okamžicích problémy s jakostí a následným značným finančním ztrátám. Nebylo možné exaktně odvodit důvody takových problémů. Proto bylo zvoleno řešení metodou umělé inteligence, které se ukázalo velmi perspektivní. Uvedený systém předpovídá rizika jakostních problémů a v současné době analyzuje jejich důvody a po ověření bude samostatně navrhovat takové zásahy, aby se jakostním problémům předešlo.
Požadavky na prognostický systém
Naším cílem bylo vytvořit systém, který dokáže:
- naučit se zákonitosti procesu ze shromážděných dat
- nalézt takové veličiny, které ovlivňují jakost tavby
- z naměřených hodnot předpovídat, zda tavba proběhne v pořádku nebo dojde k jakostnímu problému
Systém TNeuTest, o kterém se dále zmiňuje tento článek, již je zastaralý a byl nahrazen modernějším systémem Opthan, jehož popis je v článcích Analýza a optimalizace - Software 2 a Analýza-a-optimalizace - Software 3 na www.programujte.com v sekci Ostatní, Umělá inteligence a robotika a stáhnout si jej můžete stejně jako další programy naší firmy na adrese http://optiintelligent.cz.
Následující popis je ponechán pro čtenáře, kteří již mají systém TNeuTest z dřívější doby.
Výukový systém TNeuTest
Výukový program TNeuTest vychází z poznatků při řešení výše uvedeného problému a představuje s určitým omezením jádro inteligentního systému. Program je možné šířit a zdarma používat bez záruky pro nekomerční účely, výuku a samostatné studium.
Omezení demo verze
Demoverze obsahuje proti plné verzi některá omezení:
- trénovací množina může obsahovat maximálně 20 vzorů
- výstupní hodnota může záviset nejvýše na 5 vstupních proměnných
- jsou potlačeny některé funkce zápisu do souborů a funkce, které byly v době implementace demoverze teprve testovány
Stažení, instalace a start programu
Soubory ze staženého archivu rozbalte do nového adresáře na svém disku a odstartujte v něm program TNeuTest.exe.
Objeví se úvodní obrazovka s následující nabídkou funkcí:
- Parametry – definice parametrů neuronové sítě
- Data – čtení a úprava datových souborů
- Analýza – analýza dat buď statistickými metodami nebo pomocí výsledků zpracování neuronovou sítí
- Zpracování – zpracování dat neuronovou sítí, ovládání průběhu výpočtu
- Nápověda – podrobná nápověda k obsluze programu, informace o problematice umělé inteligence a o firmě VÍTKOVICE ITS a.s.
Obsluha programu včetně návodu k přípravě souborů s trénovací množinou je popsána v nápovědě, v této lekci si předvedeme základní funkce programu na připravených příkladech.
Úvodní příklad
Lineární síť
Zvolte v menu položku Parametry → Otevři, vyberte podadresář data_lin a otevřete soubor parametrů CTRL.TXT. Pak obdobně pomocí Data → Soubor otevřete tamtéž soubor DATA.TXT. Program vám oznámí, že přečetl správně 20 řádků. Pokud by se v souboru vyskytovaly chyby, tj. nevyplněné údaje nebo nesprávný počet položek ve větě, program vypíše seznam identifikátorů řádků s chybami. Chybné vzory nebudou do trénovací množiny zahrnuty.
Když nyní zvolíte funkci Zpracování → Učení, program se naučí vztahy mezi daty v trénovací množině, ve skutečnosti jde o lineární funkci, a poté provede srovnání skutečných a vypočtených hodnot na kontrolním vzorku. O výsledku srovnání podá zprávu. Po odsouhlasení tlačítkem OK se zhodnotí výsledek. Vidíte, že v tomto případě, kdy jsou údaje v trénovací množině přesné, je chyba odhadu již po krátkém výpočtu menší než 1/10000.
Data a parametry
Struktura dat
Podívejme se nyní, jak vypadá množina trénovacích dat pro tento příklad. Otevřete si v Poznámkovém bloku soubor DATA.TXT v podadresáři data_lin. Struktura vstupních souborů je následující:
- každý řádek kromě prvního obsahuje jeden vzor pro učení
- každý sloupec kromě prvního obsahuje jednu proměnnou
- první řádek obsahuje názvy proměnných
- první sloupec obsahuje identifikaci řádku pro výpis chyb, např. číslo řádku
- data jsou oddělena tabulátory
Kdo z vás má Excel, může si uvedený datový soubor zobrazit v něm. Vidíte, že se jedná o export jednoduché excelovské tabulky do textového souboru odděleného tabulátory příkazem Soubor → Uložit jako → Text (oddělený tabulátory).
Parametry sítě
Soubor CTRL.TXT obsahuje parametry sítě. Data jsou zapsána programem a protože se jedná o vnitřní informaci systému, nejsou na rozdíl od trénovací množiny určena k editaci. Pro definování nebo úpravu parametrů slouží funkce Parametry → Změň a po úpravě se parametry uloží do souboru příkazem Parametry → Ulož.
Vlevo nahoře se definuje topologie sítě – počet vrstev a počet neuronů v každé vrstvě. Oprava se provádí zapsáním údaje do okénka a tlačítkem Změň. Měníme-li počet neuronů ve vrstvě, označíme nejprve myší řádek seznamu definující vrstvu.
Vlevo uprostřed je rozbalovací okénko určující typ sítě. Zatím je v demoverzi implementována lineární dopředená síť MADALINE a síť s aktivační funkcí sigmoida a metodou učení backpropagation. Další typy sítě se připravují nebo ověřují.
Lineární síť MADALINE se dokáže naučit neznámý lineární vztah, pokud v trénovací množině existuje. Přitom stačí, aby závislost byla lineární pouze mezi vstupem a výstupem neuronové sítě, na vstupu může být libovolná funkce. Tak například ve funkci a * x2 + b * x + c
budou hledané koeficienty a
, b
, c
nalezeny, protože hodnota této funkce je lineárně závislá na proměnných x2
a x
.
Vícevrstvá síť s aktivační funkcí sigmoida a metodou učení backpropagfation se dokáže naučit složitější závislosti, jak logické tak i funkční. Dokáže také aproximovat neznámé funkce a může se použít k odhalení nelineárních vlivů faktorů na výsledek.
Vlevo dole jsou na obrazovce tlačítka, která upřesňují vlastnosti učení neuronové sítě, tj. zda se má u lineární sítě doplnit jednotkový vstup pro reprezentaci absolutního členu a u sigmoidální sítě učit práh a strmost. Vedle nich je skupina tlačítek modifikujících trénovací množinu. Normalizace dat umožňuje před výpočtem transformovat data sigmoidální sítě. Náhodné uspořádání lze použít v případě, že chceme ověřit, že výsledky nezávisí na pořadí vzorů.
Ve sloupci vpravo jsou parametry, které ovlivňují způsob učení sítě. Především jsou to koeficienty učení a momenty (vliv starých změn), které řídí rychlost učení a stabilitu sítě, dále počet iterací, který musí být dostatečně velký v závislosti na požadované přesnosti a koeficient inicializace vah, který má být minimálně tak velký jako počet neuronů ve vrstvě s největším počtem neuronů.
Velký význam má počet testovacích řádků. Účelem neuronové sítě není naučit se rozpoznávat vzory, které se v trénovací množině již vyskytly, ale naučit se vztahy a rozpoznat neznáme vzory. Zadáme-li počet testovacích řádků n
, pak n
posledních vzorů se nepoužije pro učení, ale po naučení se na nich kontroluje přesnost prognózy a o výsledku se podá zpráva. Neplatí to jen pro analýzu vlivů faktorů, kde se učíme z dat celé množiny, v tom případě zadáme počet testovacích řádků 0.
Síť perceptronů
Vícevrstvá síť perceptronů s aktivační funkcí sigmoida dokáže nalézt složitější nelineární vztahy mezi veličinami výrobního procesu a prognózovat jeho budoucí vývoj. Pokud má dostatek relevantních údajů a proces není zcela náhodný, dokáže s určitou mírou pravděpodobnosti odhadnout, že dojde k nekvalitnímu zpracování, k problémům v průběhu procesu, technologickým odchylkám nebo nebezpečí poruchy na zařízení. Výsledky pak lze použít k analýze faktorů, které takový stav mohou způsobovat.
Jednoduché logické vztahy
V podadresářích data_and a data_or jsou připraveny trénovací množiny pro dvě jednoduché logické funkce. Otevřete obdobným způsobem jako v úvodním příkladu příslušné soubory CTRL.TXT a DATA.TXT a zvolte funkci Zpracování → Učení. Uvidíte, že se síť tyto základní logické vztahy dokáže poměrně rychle naučit.
Jistě jste si všimli, že výsledky nejsou úplně přesné. Jistou nepřesností platíme za schopnost sítě analyzovat neznámé vztahy. V praxi je však uvedená nepřesnost přijatelná, případně se dá snížit zvýšením počtu iterací a snížením koeficientu učení. Použití neuronové sítě je samozřejmě nutno vždy pečlivě zvážit, tam kde existuje možnost nalézt exaktní algoritmus řešení, s neuronovou sítí a přibližným řešeném zřejmě neuspějeme.
Složitější logická závislost
V podadresáři data_sig2 je připravena známá úloha neekvivalence, kterou nelze naučit jedním neuronem. Opět stejným způsobem ověřte, že zadaná síť se dokáže neekvivalenci naučit. Adaptace v tomto případě trvá delší dobu.
Podívejme se ještě na vhodné nastavení parametrů (Parametry → Změn). Změňme počet vrstev na 3 (Počet vrstev → 3 → Změň). V první vrstvě dejme např. 4 neurony (klikneme na 1. položku seznamu neuronů ve vrstvách, vložíme 4 a Změň, druhá vrstva 2 a třetí zůstává 1 výstupní neuron.
Měřítko inicializace vah dáme 4, zrušíme doplňování absolutního členu a místo toho budeme učit strmost a práh (tlačítka vlevo dole). Protože síť je složitější, musíme zvýšit počet iterací na 1 000 a snížit koeficient učení na 0.05. Také zvýšíme moment pro lepší stabilitu sítě.
Učení strmosti a prahu by mělo být podstatně nižší než koeficient učení vah, např. 0.001, moment o něco nižší, např. 0.40. Počáteční strmost necháme 4, důležité je inicializovat práh na hodnotu 0.5. Takto definovaná síť se dokáže naučit i složitější zákonitosti, pokud ne, topologii sítě dále rozšíříme a upravíme parametry.
Obrazovka s parametry může vypadat například takto:
Obdobným způsobem můžeme použít síť k aproximaci neznámé funkce. Topologie sítě pak bude např. 1–20–10–1, tj. 1 vstup – hodnoty proměnné x
, 20 a 10 neuronů ve skrytých vrstvách a jeden výstup – odpovídající funkční hodnoty y
.
Datová analýza
Vícevrstvé neuronové sítě se dokážou naučit složité zákonitosti zkoumaného výrobního procesu, pokud není zcela náhodný a jsou k dispozici potřebná data, a z neznámých vstupních hodnot vypočítat odpovídající hodnotu výstupní proměnné, ale na rozdíl od lineárních sítí, není tento vztah zřejmý z konfigurace sítě. Přesto často potřebujeme znát nejen prognózu výsledku, ale i další okolnosti:
- která data vybočují z očekávaných hodnot a jsou pravděpodobně naměřena s chybou
- zda zkoumaný výsledek závisí nebo nezávisí na určitém faktoru a do jaké míry
- zda změna vstupní hodnoty ovlivňuje výstup v kladném nebo záporném směru
Systém TNeuTest obsahuje proto jak statistickou analýzu dat, která se používá před učením a zrychluje a zkvalitňuje proces učení, tak i následnou analýzu dat s použitím výsledku učení. Tyto funkce jsou zatím ve vývoji, přesto již nyní dosahují nadějných výsledků.
Statistická analýza dat
Statistická analýza slouží k předzpracování datového souboru a očistění dat od zjevných chyb měření před procesem učení. Ve funkci hlavního menu Analýza se jedná o první tři položky shora.
- Přehled – vypíše do souboru přehled základních statistických charakteristik vstupního souboru, průměry, směrodatné odchylky, variační koeficienty pro každou proměnnou a korelační koeficienty pro každou dvojici proměnných.
- Korelace – pro zvolené proměnné vypíše na obrazovku a do souboru seznam všech proměnných, na kterých každá z nich ve zvolené výši závisí, t.j. jestliže koeficient korelace je vyšší něž zadaná hodnota.
- Odchylky – očistí data od takových vzorů, které se příliš liší od průměrných hodnot a je podezření, že jsou naměřeny chybně.
Analýza dat pomocí neuronové sítě
Tuto analýzu lze použít, až je neuronová síť naučena. Výsledky takové analýzy jsou pro lineární síť zhruba ekvivalentní statistické analýze metodou korelačních koeficientů, u vícevrstvých neuronových sítí mohou být výsledky přesnější. Zkuste si například analyzovat data v adresáři data_sig2, která představují neekvivalenci. Korelační koeficient je blízký 0, pokud zadáte minimální korelaci 0, nebo závislost není nalezena v případě minimálního korelačního koeficientu, např. 0.50. Naproti tomu funkce Analýza → Závislosti odhalí 50% vliv proměnné x
i y
.
Závěr
Prognostické systémy na bázi neuronových sítí mohou s výhodou řešit celou škálu problémů výrobních i nevýrobních procesů. Jsou vhodné zejména tam, kde proces není zcela náhodný, existují v něm závislosti, které neznáme, máme možnost snadného pořizování velkého množství dat, např. z čidel na technologických zařízeních, a jiné prostředky, jak zákonitosti odhalit, selhaly.
Přestože uvedená demoverze obsahuje určitá omezení, domnívám se, že pro první seznámení s problematikou je možné ji s úspěchem použít pro počáteční pokusy a výuku. Případnou další spolupráci je možno dohodnout na adresách na firemní stránce.