1. semestrální práce z předmětu 36NAN
Predikce hodnoty funkce exp(cos(x))

ABSTRACT

This article covering how to create, learn and test neural network for predicting function of one real variable, exactly exp(cos(x)), using back-propagation. There are also results of experiments with network properties.

1. ÚKOL

Navrhněte neuronovou síť pro predikci hodnot periodické funkce. Popište vliv šířky okna na schopnost sítě predikovat správnou hodnotu. Popište a vyzkoušejte vliv multiplikativních a aditivních konstant na predikci, vyzkoušejte i mírně zašumělé signály.Najděte optimální síť pro zadaný problém. Pod pojmem síť zde rozumíme minimální síť (z hlediska počtu vrstev a neuronů ve skrytých vrstvách), kterou je možné dobře naučit zadaný problém. Optimalitu zjišťujte z průběhu chyby (také podle ustálené hodnoty chyby) v procesu učení. V referátu uveďte výsledky tří sítí - nalezené optimální sítě, malé sítě a velké sítě. Průběh chyby znázorněte u všech tří sítí grafem nebo tabulkou. V dalším testování pracujte s vybranou optimální sítí.

Vyzkoušejte, jak se změní schopnost sítě predikovat zadanou funkci, pokud zmenšíte nebo zvětšíte šířku "okna". Oknem je zde myšlen rozsah hodnot na ose x predikované funkce pro jeden učící vzor. Zobrazte predikci funkce v grafu pro tři případy - pro menší okno, střední okno (tj. původní testované okno) a větší okno. Srovnejte výsledky.

2. ÚVOD

Tento článek popisuje vytvoření, učení a testování neuronové sítě předpovídající hodnoty funkce jedné reálné proměnné, konkrétně exp(cos(x)), využívající technologii Back-propagation. Dále jsou zde uvedeny výsledky experimentu s nastavením sítě.

3. TEORETICKÝ ROZBOR

K predikci hodnot časové řady (protože ani matematická funkce reálné proměnné není nic jiného než časová řada), kde vůbec nebo jen mlhavě známe skryté závislosti, můžeme s výhodou využít neuronové sítě různého druhu. Zde jsme si vybrali síť typu Back-propagation (zpětné šíření chyby), která je dostatečně jednoduchá a názorná.

3.1 PRINCIP BACK PROPAGATION

Algoritmus učení sítě back-propagation je následující.

Síti předkládáme učební vzory, její výstup porovnáme se správnou hodnotou a zpětně upravíme váhy jednotlivých neuronů směrem do výstupní vrstvy. To opakujeme, dokud máme k dispozici další učební vzory. Následně spočítáme globální chybu sítě (její energii) a porovnáme ji s předem stanovenou odchylkou. Pokud jsme spokojeni, proces učení ukončíme, v opačném případě předložíme celou testovací množinu znovu. Jedná se o učení s učitelem.

Trénovací množina pro predikci časových řad je poněkud odlišná od množin určených pro řešení ostatních problémů. Vstupem sítě je několik v pravidelných intervalech odebraných hodnot časové řady, jako správný výstup je pak určen bezprostředně následující člen řady. Vstupní část se nazývá okno, jeho velikost se rovna počtu vstupních neuronů. Další položku trénovací množiny vytvoříme posunem okna vpravo, dříve první položka se zahodí a na místo poslední dosadíme předchozí hodnotu výstupu.

4. NALEZENÍ OPTIMÁLNÍ SÍTĚ

4.1 POUŽITÝ MODEL

Jak již bylo zmíněno (viz. 3), použijeme síť se zpětným šířením chyby. Jako simulátor nám poslouží program NeuralWorks II od firmy NeuralWare.

4.2 TOPOLOGIE

Hlavním úkolem bylo najít takovou síť, která by zadaný problém řešila optimálně, tedy jakýsi kompromis mezi časovou náročností učení a správnosti výsledku. Zde jsme se omezili na hledání počtu skrytých vrstev a počtu jejich neuronů, počet vstupních neuronů je diskutován zvlášť v kapitole 5.4. Počet učících kroků byl stanoven na 50000, což je dostatečná hodnota pro náš experiment. Za vzorkovací frekvenci byla zvolena hodnota 100 po předběžném zkoumání.

Obrázek 1 ukazuje počet učících kroků sítě v závislosti na počtech neuronů v jedné skryté vrstvě, obrázek 2 ve vrstvách dvou, pokud je zavedena podmínka, že RMS chyba výstupní vrstvy musí být nižší než 0,005. Údaje jsou průměrem z pěti měření.Poznámka: k označení sítí používáme kód vstup-skrytá1-skrytá2-výstup, kde vstup je počet neuronů ve vstupní vrstvě, skrytá1 a skrytá2 jsou počty neuronů v první a druhé skryté vrstvě a konečně výstup je počet neuronů ve vrstvě výstupní.


Obrázek 1

Obrázek 2

Protože zvyšování počtu neuronu nad 8 a počtu vrstev nad 1 již nepřináší znatelnou úsporu učících kroků, vybral jsem jako vhodné parametry sítě právě tyto hodnoty.Na obrázku 3 je zobrazen průběh chyby RMS při učení všech výše uvedených sítí, na obrázku 4 pak pro informaci průběh výstupu optimální sítě v porovnání s grafem funkce exp(cos(x)).


Obrázek 3

Obrázek 4

5. EXPERIMENTY

5.1 MULTIPLIKATIVNÍ KONSTANTY

Pro tento experiment jsme zvolili funkce exp(cos(2x)) a exp(cos(5x)). Na obrázku 5 vidíme průběh chyby pro výše uvedené funkce. Z pozorování je zřejmé, že přesnost sítě předpovídat správně klesá.


Obrázek 5

5.2 ADITIVNÍ KONSTANTY

Jako funkce jsme zvolili exp(cos(x+2)) a exp(cos(x+5)). Z obrázku 6 plyne, že aditivní konstanty nemají na přesnost predikce zásadní vliv.


Obrázek 6

5.3 ZAŠUMĚNÝ SIGNÁL

Pro generaci náhodného šumu jsme využili funkci random(x), která vrací náhodné číslo z intervalu (0,x). Vybrali jsme funkce exp(cos(x)) + random(0,2) a exp(cos(x)) + random(0,5). Na obrázku 7 vidíme značné potíže, které má učící algoritmus Back-propagation, který pro tato vstupní data není vůbec vhodný.


Obrázek 7

5.4 ZMĚNA VELIKOSTI OKNA

Za velikost okna (počet vstupních neuronů) jsme postupně vybrali čísla 2, 4 a 6. Z obrázku 8 vidíme, že předpoklad lepších výsledků při větším okně byl správný.


Obrázek 8

6. ZÁVĚR

Podařilo se sestrojit model neuronové sítě Back-propagation pro predikci hodnot funkce exp(cos(x)). Jako nejvhodnější bylo vybráno uspořádání 4-8-1. Z několika experimentů s modifikovanými funkcemi jsme poznali zhoršující se výsledky predikce, zejména u signálů se šumem.

7. LITERATURA

M. Šnorek, M. Jiřina: Neuronové sítě a neuropočítače, Vydavatelství ČVUT, 1996
M. Šnorek: přednášky z předmětu 36NAN, zimní semestr 2001/2002
M. Brát: http://cs.felk.cvut.cz/~bratm/vyuka/nan.html