Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

32. Előadás Dr. Pauler Gábor, Egyetemi Docens

Hasonló előadás


Az előadások a következő témára: "32. Előadás Dr. Pauler Gábor, Egyetemi Docens"— Előadás másolata:

1 Pécsi Tudományegyetem Pollack Mihály Műszaki Kar Műszaki Informatika Szak Data Mining
32. Előadás Dr. Pauler Gábor, Egyetemi Docens PTE-PMMFK Villamos Intézet Számítástechnika Tanszék Iroda: Boszorkány u., B épület 101 Tel: 72/ /3725 Készült a PTE Alapítvány támogatásával

2 Az előadás tartalma Neurális hálózatok: Java Object Oriented Network Environment (Joone): Telepítés Minta alkalmazás Felhasználói felület A Joone neurális modell építőelemei Neuronmezők Szinapszisok Speciális mezők Beépülő modulok Joone neurális modell használata: Hálózatépítés Tanító modulok beépítése Tanítás Hálózat tanítása utáni tevékenységek Minták Joone neurális modellekre A Yahoo Finance Layer használata Temporális Asszociatív Memória (TAM) Jordan-féle rekurrens backpropagáció Elman-féle rekurrens backpropagáció Trend fordulópontok előrejelzése Trend előrejelzése Backpropagation Trough Time (BPTT) Time Delay neural network (TDNN) Szakirodalom

3 JOONE Telepítés A Paolo Marrone által fejlesztett Java Object Oriented Network Environment (JOONE) a neurális rendszerek nem hálózatközeli, hanem aggregáltabb szinten történő, adatbányászati környezetbe ágyazott építését célzó integrált eszköz. Nem üzleti célra ingyenesen felhasználható, GNU licensszel rendelkezik Telepítése: Java Runtime Environment (JRE) telepítés: A honlapról töltsük le a JooneEditor2.0.0RC1-Win-NoVM.exe fájlt Futtassuk a telepítő varázslót a Next gombok nyomogatásával Program Files\Joone\Joone.exe-vel indul: katt katt katt katt katt katt katt

4 a 32-1Gyakorlo.xls Excel fájlban
Minta alkalmazás 1 A BNL Multiservizi S.p.A ( ) dinamikus, speciálisan kisvállalkozásokat megcélzó lombardiai bank a főszponzora a Veronában évente megrendezett Vinitaly ( ) szakkiállításnak, amely Olaszország legnagyobb borászati expója. Itt 178 darab, a zsűri által kategóriába sorolt bor adatait gyűjtötték össze: Alkohol % Citromsav tartalom Növényi sók Cukorfok Érlelési napok száma Csersav tartalom Pektinbontó enzimek Szárazanyag tartalom Szulfát tartalom Tartósítók aránya Nagykereskedelmi ár a 32-1Gyakorlo.xls Excel fájlban Építsünk a Joone-val egy olyan neurális hálózatot, ami a bor fenti jellemzőjéből becslést végez a kategória besorolásra! Kategória Alkohol % Citromsav Növényi sók Cukorfok Érlelési nap Gliceridek Csersav Foszforsav Enzimek Szárazanyag Szulfátok Tartósítók Ár 2.00 12.33 1.10 2.28 16.00 101.00 2.05 1.09 0.63 0.41 3.27 1.25 1.67 680.00 13.34 0.94 2.36 17.00 110.00 2.53 1.30 0.55 0.42 3.17 1.02 1.93 750.00 12.37 1.36 10.60 88.00 1.98 0.57 0.28 1.95 1.05 1.82 520.00 3.00 13.52 2.72 23.50 97.00 1.55 0.52 0.50 4.35 0.89 2.06 1.00 14.20 1.76 2.45 15.20 112.00 3.39 0.34 1.97 6.75 2.85 12.64 2.02 16.80 100.00 1.41 0.53 0.62 5.75 0.98 1.59 450.00 12.77 2.39 19.50 86.00 1.39 0.51 0.48 0.64 9.90 1.63 470.00 13.36 2.56 2.35 20.00 89.00 1.40 0.37 5.60 0.70 2.47 780.00 12.20 3.03 2.32 19.00 96.00 0.49 0.40 0.73 5.50 0.66 1.83 510.00 14.30 1.92 120.00 2.80 3.14 0.33 6.20 1.07 2.65 13.67 18.00 94.00 2.10 1.79 0.32 3.80 1.23 2.46 630.00 12.93 2.81 2.70 21.00 1.54 0.75 4.60 0.77 2.31 600.00 13.94 1.73 2.27 17.40 108.00 2.88 3.54 2.08 8.90 1.12 3.10 14.22 3.99 2.51 13.20 128.00 3.04 0.20 5.10 3.53 760.00 14.06 126.00 0.24 5.65 3.71 12.25 4.72 2.54 1.38 0.47 0.80 3.85 1.27 720.00 13.69 3.26 107.00 0.56 5.88 0.96 3.43 80.00 0.43 0.83 3.40 2.12 372.00 12.81 2.40 24.00 98.00 1.15 0.27 5.70 560.00 14.37 2.50 113.00 3.49 2.18 7.80 0.86 3.45 12.88 2.99 104.00 1.22 5.40 0.74 1.42 530.00 12.70 3.55 21.50 106.00 1.70 1.20 0.17 0.84 5.00 0.78 1.29 12.87 4.61 2.48 0.65 7.65 0.54 1.86 625.00 13.49 3.59 2.19 1.62 0.58 0.88 0.81 580.00

5 Felhasználói felület A File|Open menüvel megnyitva a probléma modelljét leíró *.ser fájlt (32-1Gyakorlo.ser) egy blokkdiagrammot látunk, amely a neurális hálózat olyan tömör leírása, hogy még a háló topológiáját sem ábrázolja. A Joone jóval absztraktabb szinten írja le a hálózatot, mint a JNNS, ezért nagy hálózatoknál áttekinthetőbb, viszont alapos tudást feltételez: A diagramm blokkjai: adatforrások (pl. Excel Input) és előszűrőik (pl. Normalizer), I/O interfészek (pl. Learning Switch), neuronmezők (pl. Linear, Sigmoid), tanító- (pl. Teacher) és adat-diagrammoló modulok (pl. Chart) A blokkokat összekötő nyilak: D, F, S, K betűvel jelöltek mezőközi szinapszis halmazokat jelentenek, a sima nyilak táblázatokban történő információ áramlást A diagramm elemeit a fenti eszközsorokból húzhatjuk be egérrel, jobbkattal szerkeszthetők: A tulajdonságok (Properties) menüvel az adott objektum tulajdonságszerkesztő ablakát hozhatjuk elő A törlés (Delete) menüvel letörölhetjük őket A megtekint (Inspect) menüvel megnézhetjük a bennük mozgó adatokat (pl. szinapszishalmaz esetén a szinaptikus súlyokat) A legfelső eszközsorból behú- zott színes dobozoknak és más rajzi elemeknek nincs funkcio- nális szerepük, csak a diagram- mot tagolják A tanulási mód- szert nem mi vá- lasztjuk, hanem az összeépített elemek határoz- zák meg. húz katt katt jobb katt

6 A Joone neurális modell építőelemei: Neuronmezők 1
A neuronmezők (Layers) java objektumok,amelyek akár több CPU-ra osztva futtathatók (multi-thread), a hálózati modellben blokkokkal jelöljük őket, melyek kijelzik a mező tipusát, nevét, szélességét (neuron darabszámát).Két üzemmódban működhetnek: Aktivációs üzemmód (Activation): a mező a beérkező x input jelzések vektorát (Input Vector) az elé csatolt szinapszishalmaz W súlymátrixával (Synaptic Weight Matrix) súlyozva aggregálja, majd hozzájuk adja a neuronok b jelzési konstansait (Bias). Az így kapott összegeket a mező neuronjainak azonos f(x) jelzési függvényei (Signal Function) y output értékek vektorává (Output Vector) alakítják Backpropagációs tanítási üzemmód (Backpropagation Learning): a mező az y tényleges és y* elvárt outputok közti különbség Dy hibavektorát az utána csatolt szinapszishalmaz W súlymátrixával (Synaptic Weight Matrix) súlyozva aggregálja, majd hozzájuk adja a neuronok b jelzési konstansait. Az így kapott összegeket a mező neuronjainak azonos f-1(x) jelzési függvény inverzei Dh súlymódosító vektorrá alakítják, ami a mező elé csatolt szinapszishalmaz W súlymátrixával összeszorozva megadja Dx vektort, vagyis, hogy mennyivel kell módosítani az eredeti x input vektort,hogy az elvárt x* input vektort kapjuk. (A gyakorlatban f-1(x) inverze helyett f’(x) derivált adott pontbeli reciprokát használja) A neuronmezők tipusai: Lineáris mező (Linear Layer): y = b × x (32.1) Csak input mezőnek jó, csak átskálázza a jelzést Konstansos lineáris mező (Bias Linear Layer): y = x + bn (32.2) Backpropagációnál a hiba gradienssel összefüggő konstansot rak n = 1..N neuronhoz Szigmoid mező (Sigmoid Layer): y = 1/ (1+e-x) (32.3) Általános használatú mező, [0,1] output tartománnyal Tangens hiperbolikus mező (Tanh Layer): y = (ex-e-x) / (ex+e-x) (32.4) Általános használatú mező, [-1,+1] output tartománnyal Logaritmikus mező (Logarithmic Layer): y = ln(1+x) |x ≥ 0 és y = ln(1-x) |x < 0 (32.5) Megakadályozza az aggregált nagy értékek gyors végtelenbe növését, illetve hogy a nagyon kis értékek közti különbség jelentéktelenné váljon Szinuszos mező (Sine Layer): y = sin(x) (32.6) Periodicitások detektálásához használatos

7 A Joone neurális modell építőelemei: Neuronmezők 2
Késleltető mező (Delay Layer): yt = xt-T (32.7) T időperiódus jelzéseit bufferelő neuron-másolatokat (Taps) tartalmazó mező, összesen N×(T+1) neuronnal és outputtal, idősori becsléseknél időablak képezhető vele Kontextus mező (Context Layer): yt = b × (x + yt-1 × w) (32.8) Mezőn belül visszacsatol az outputtól azi input fele, egynél kisebb w súllyal, adott rátával lecsengő memóriát képez, Hebb-féle hálózatoknál használatos Alap haranggörbe mező (Gauss Layer): y = exp(-x2) (32.9) A 0 érték elérésének jelzésére szolgál Radiális bázisfüggvény mező (RBFGaussianLayer): y = exp(-(x-a)2/VAR(x)) (32.10) Egy a paraméterértékhez való relatív közelség jelzésére szolgál Győztes mindent visz (WTA, WinnerTakeAll): yn* =1 | f(xn*)max, különben 0 (32.11) Kohonen-féle alakfeltérképezéshez (SOM, Self Organizing Map) használatos: Egy neuron nem egy változót jelent, hanem változónként véges számú osztópontok Descartes-szorzatából készült halmaz, a térrács (Space Grid) egy elemét Egyetlen győztest választ ki x input vektor és a neuronok wn súlyvektorainak Euklideszi távolság minimuma alapján Tanító üzemmódban az n* győztes neuron wn* súlyvektora módosul csak az x input vektor irányába Gauss-féle mező (Gaussian Layer): y = exp(-(D(x-w))2/(VAR(x)×e)) (32.12) Több győztest választ ki a legjobban tüzelő neuronhoz való relatív hasonlóság alapján x input vektor és a neuronok wn súlyvektorainak D Euklideszi távolsága alapján Az e epochszám előrehaladásával egyre szűkíti a hasonlósági zóna kiterjedését Tanító üzemmódban nemcsak az n* győztes neuron, hanem a közeliek súlyvektora is módosul az x input vektor irányába Beágyazott neurális hálózat mező (Nested ANN): más hálózati modellt használ egyetlen mezőként. Beállítható, hogy együtt tanuljon a főhálózattal, vagy csak az aktivációjában vegyen részt.

8 Az előadás tartalma Neurális hálózatok: Java Object Oriented Network Environment (Joone): Telepítés Minta alkalmazás Felhasználói felület A Joone neurális modell építőelemei Neuronmezők Szinapszisok Speciális mezők Beépülő modulok Joone neurális modell használata: Hálózatépítés Tanító modulok beépítése Tanítás Hálózat tanítása utáni tevékenységek Minták Joone neurális modellekre A Yahoo Finance Layer használata Temporális Asszociatív Memória (TAM) Jordan-féle rekurrens backpropagáció Elman-féle rekurrens backpropagáció Trend fordulópontok előrejelzése Trend előrejelzése Backpropagation Trough Time (BPTT) Time Delay neural network (TDNN) Szakirodalom

9 A Joone neurális modell építőelemei: Szinapszisok
Mezőközi szinapszis halmazok (Synapse) objektum: Olyan W súly-mátrixot (lásd: Jobbkatt| Inspect menü) tároló memóriaterület, amelyet megosztva használ az általa összekötött két mező objektum: az előző mező outputot ír bele, a következő az inputját innen olvassa fel. Diagramm-szimbóluma betűvel jelzett nyíl: Tipusai: Direkt szinapszis (Direct Synapse): 2 mező neuronjainak1:1 kötése Teljes szinapszis (Full Synapse): n és m neuronszámú mezők neu- ronjainak n:m hozzárendelése (Descartes-szorzat) Késleltetett szinapszis (Delayed Synapse): Véges impulzusú válasz (FIR, Finite Impulse Response) szűrőt alkalmaz, ami időben exponenciálisan simítja, eltolja az átfolyó jelzéseket. Idősori előrejelzőkben használatos Kohonen szinapszis (Kohonen Synapse): Egy lineáris input mezőt és egy WTA vagy Gauss output mezőt kapcsol össze Kohonen-féle SOM-et (lásd: Session31) alkotva: az input mező döntési változó neuronjait köti az output mező döntési térrács-elem neuronjaihoz Sanger-féle szinapszis (Sanger Synapse): Nem felügyelt tanulásban faktoranalízist hajt végre, kevesebb számú faktorba redukálja a változókat, így egy nagyobb neuronszámú input és egy kisebb neuronszámú output mezőt köt össze teljes előrecsatolással Rendszerfunkciókat ellátó speciális mező-objektumok kezelik a hálózat inputjait: File Input Layer: „;”-határolt, mezőnevek nélküli, kizárólag numerikus változókat (oszlopkat) tartalmaző szövegfájból tölti be az összes megfigyelést (sort) URL Input Layer: Adott URL-ről tölt le a fenti formátumnak megfelelő szövegfájlokat Excel Input Layer: a Filename, Worksheet tulajdonságban megadott munkalap összes numerikus oszlopából betölt változót, minden sorából 1 megfigyelés lesz JDBC Layer: bármely, JDBC meghajtóval támogatott adatbázisból tölt be adatot, ahol Drivername: meghajtó neve, dbURL: elérési út, SQLQuery: lekérdezés Yahoo Finance Layer: tőzsdei adatokat tölt be a honlapról Image Input Layer: adott elérési úton lévő JPG képet tölt be, alakfelismerő hálózatokhoz Memory Input Layer: más program által adott pointer-től a memóriába rakott értékek Input Connector/ Switch: megosztja ugyanazt az inputot több hálózat közt, így nem kell többször betölteni

10 A Joone neurális modell építőelemei: Speciális mezők
A fentiekhez hasonló speciális mezők szolgálják ki az outputok felé irányuló adatforgalmat: Az Output Switch több lehetséges output közt vált, amiket Output Layer-ek adnak ki: a File- „;”-határolt szövegfájlba, az Excel-, excel munkalapra, a JDBC- adatbázisba, az Image- JPG képbe írja az outputokat: A tanító mező (Teacher Layer) feladata a hálózat tanítása: Mindig a hálózat utolsó mezőjéhez csatlakozik, sima nyíllal, innen kapja meg a hálózat becsült outputjait Ezenkívül még sima nyíllal csatlakozhat egy Learning Switch Layer-hez, amire a tanító- és keresztvalidáló minták Input Layer-ei vannak kötve, innen kapja meg az elvárt outputokat a tanítás, illetve keresztvalidáció során Összehasonlítja a hálózat becslését az elvárt outputtal, a különbségükből e hibatag- okat képez, majd kiszámítja az egy output változóra és egy megfigyelésre jutó átlagos négyzetes hibát (Relative Mean Squared Error, RMSE) Ezt egy sima nyíllal csatlakozó Chart Output Layer segítségével ki is tudja diag- rammolni a tanulási epochokban Majd tanulási üzemmódba kapcsolja a hálózat mezőit, és visszaadja a hibatagokat az utolsó mező számára, ami a mező objektum leírásánál ismeretetett módon feldolgozza ezeket, és módosítja az előtte lévő szinapszis objektum W súlyait (ugyanez lejátszódik visszafele az összes mezővel) A tanító háromféle felügyelt tanulási algoritmust kezel: Sima backpropagáció (Backprop): (lásd Lesson30) Minden minta után módosítja a hálózat súlyait, kevesebb memóriát igényel, de rosszabb a konvergenciája. Kötegelt backpropagáció (BatchBackProp): (lásd Session31) A mintáknál csak összeadja a megkövetelt súlyváltozásokat, de csak az adott epoch végén változtat ténylegesen a súlyokon. Több memóriát igényel, de jobb a konvergenciája Resziliens backpropagáció (RPROP): (lásd Session31) Csak a súlyváltozások előjeleit figyeli, nagyságukat nem, ezért lassúbb, mint az előzőeknek, de nehezebben ragad lokális optimumba. e Dw

11 A Joone neurális modell építőelemei: Beépülő modulok
Input mezőkhöz csatlakozó beépülők (Input Plug-Ins): előkészítik az input tanító- és vali-dációs minták változóit arra, hogy Learning Switch-en keresztül betöltődjenek a hálóba: CenterOnZero: a megadott változók átlagát 0-ra állítja Normalizer: a megadott változókat lineárisan egy zárt intervallumba transzformálja TurningPointExtractor: idősorokból csak a lokális min- és maximumokat tartja meg MovingAverage: mozgóátlagolás, simítással ritkítja idősorok lokális szélsőértékeit DeltaNorm: az idősor megváltozásait normalizálja egy zárt intervallumba Shuffler: véletlen módon rendezi az input mintákat, hogy csökkentse a mintasorrend esetleges torzító hatását Binary: a változókat bináris változók halmazaira bontja Output mezőkhöz csatlakozó beépülők (Output Plug-Ins): UnNormalizer: visszanormalizálja hálózatban áramló változókat az eredeti számtartományukba A Monitor objektum lehetővé teszi a hálózat külső vezérlését és a hálózat globális paramétereit tárolja: tanulási rátákat, a backpropagációban a jelzési függvény inverzeket helyettesítő deriváltakat, epochszámokat.A hozzá csatlakozó beépülők (Monitor Plug-Ins): LinearAnnealing: folyamatosan csökkenti a tanulási rátát egy %-kal az epochok előrehaladtával, hogy a backpropagáció könnyebben vegyen fel Ljapunov-stabilitást DynamicAnnealing: ha az RMSE hibastatisztika javul az előző epochhoz képest, akkör növeli a tanulási rátát, mert akkor a backpropagáció az optimum fele tart a súlyok beállításával, ha romlik, akkor csökkenti, mert akkor éppen kifele tart az optimumból. Error based termination: nem fix epoch számszor futtatja le a backpropagáció tanulását, hanem figyeli, hogy ha az RMSE egy adott szint alá süllyed, amire megáll Egyéb beépülők: Chart Handle: több diagramm közt osztja el az összeköttetésekben áramló változókat Chart Layer: 1 változós vonaldiagramm Visad Chart Layer: több változós vonaldiagramm NeuralNet objektum: egyetlen hordozható fájlba tömöríti az egész hálózat objektumait

12 Az előadás tartalma Neurális hálózatok: Java Object Oriented Network Environment (Joone): Telepítés Minta alkalmazás Felhasználói felület A Joone neurális modell építőelemei Neuronmezők Szinapszisok Speciális mezők Beépülő modulok Joone neurális modell használata: Hálózatépítés Tanító modulok beépítése Tanítás Hálózat tanítása utáni tevékenységek Minták Joone neurális modellekre A Yahoo Finance Layer használata Temporális Asszociatív Memória (TAM) Jordan-féle rekurrens backpropagáció Elman-féle rekurrens backpropagáció Trend fordulópontok előrejelzése Trend előrejelzése Backpropagation Trough Time (BPTT) Time Delay neural network (TDNN) Szakirodalom

13 Joone neurális modell használata: Hálózatépítés
Excel Input Layer hozzáadása: Excel adatforrást tölt be inputnak AdvancedSerieSelector=2,14: oszlop legyen az input FileName=32-1Gyakorlo.xls: Excel fájl neve FirstRow=2,LastRow=131: olvasott sorok (1.az oszlopnevek, a a validációs minta lesz) Normalizer plugin: zárt intervallumba normalizálja a a változókat AdvancedSerieSelector=1,13:1.-13.oszlopokra hajtsa végre (In,Out)Data×(Max,Min): ki/be menő adatok max-/minimuma A fentiek mégegyszer a sorokra, mint validációs minta Learning Switch: váltani tud a tanító- és validációs adatforrás közt Linear Layer hozzáadása: a hálózat lineáris input mezője Rows=13: input neuronok száma 13, Beta=1: konstansuk 1 További szinapszisok hozzáadása:(Full,Direct,Sanger,Kohonen) Loopback: van-e visszacsatolás, Inspect|Copy:kezdősúlyok bemásolása, ha nem tesszük, vélelen súlyokkal tölti fel További rejtett Sigmoid Layer hozzáadása: Rows=10:10 neuron, FlatSpotConstant=0: jelzési függvény inflexiós pontja 0 Excel Output Layer hozzáadása az utolsó mezőhöz: FileName= 32-1Output.xls, SheetName: hova mentse az output változókat UnNormalizer Plugin hozzáadása: visszaskálázza az output változót AdvancedSerieSelector=1:1.output változóra hajtsa végre ChartHandleLayer hozzáadása: annyiszor, ahány adatsort mutatunk Serie=1: adatsor hányadik oszlopból jön Red=0, Green=, Blue=200: RGB színkódja BasicChartLayer: diagrammolja az adatsort Serie: hányadik adat oszlopot mutassa MaxXAxis, MaxYAxis: X, Y tengely max.-ok Resizeable: átméretezhetőség Show: mutassa-e

14 Joone neurális modell használata: Tanító modulok beépítése
A felépített háló tanításához a következőket kell csatolni: Teacher Layer: ez vezérli a hálózat tanítását Basic Chart Layer: azért csatoljuk a tanítóhoz, hogy kidiagrammolja az RMSE hiba csökkenését a tanítási epochokon keresztül Learning Switch: ez tölti be a tanító mezőnek a felügyelt tanulás elvárt output változóit: Mindig az 1. rákötött Input Layer a tanítóminta, a 2. a validációs Mindkét Excel Input Layer.Advanced Column Selector tulajdonsága az 1. oszlopot szedi fel az Excelből,ami az output változó (a bor minősítése) csak a tanító- a sorokat, a validációs min-ta a sorokat A tanító- és validációs mintára nem fe- lejtünk el ugyanolyan Normalizer Plug- in-eket rákötni, mint az inputra, azonos normalizációs beállításokkal!

15 Joone neurális modell használata: Tanítás
katt A hálózat tanítása a Tools|Control Panel-el végezhető: BatchSize=0: hány mintát fogjon kötegbe kötegelt backpropagáció esetén (0:nincs kötegelés) Learning=Yes: végezzen-e tanulást futás közben? LearningMode=0: tanulási módszer (0:BackProp, 1:Batch Backprop, 2:RProp) LearningRate=0.2: tanulási ráta Momentum=0.3: mekkora rátával simítsa a súlyváltozásokat tanulás közben (0: nincs simítás) Pre-learning cycles: a hálózatot inicializáló aktivációs ciklusok száma tanulás előtt SingleThreadMode: csak 1 processzort használjon futás közben, ne ossza szét köztük a számolást (lassabb) Supervised: felügyelt tanulás-e: tanulás közben az outputot közelítse-e az elvárt outputokhoz? Epochs: a tanulási epochok száma, az Error Based Termination Plugin előbb is le tudja zárni a tanulást Training patterns: tanítóminták száma UseRMSE: számítsa ki az RMSE hibát futás közben, ez a Dynamic Annealing Plugin használatánál fontos, ami ez alapján állítja automatikusan a tanulási rátát Validation: használja az I/O Learning Switch-eknél megadott validációs mintákat a hálózat becslési hatékonyságának keresztvalidálására (lásd: Session31) Validation patterns: a validációs minták száma Run gomb: futtatás, Pause: szünet, Continue: folytatás Ha a Teacher Layer-re kapcsolt Chart Layer.Show tulajdonsága be van jelölve, akkor futás közben külön ablakban egy diagramm mutatja az RMSE alakulását! katt

16 Joone neurális modell használata: Hálózat tanítása utáni tevékenységek 1
Ha futási hiba van, vagy az RMSE hiba nem indul csökkenésnek a tanulás közben, az eszközök (Tools) menü segítségével debugolhatjuk: ToDo List: hiba kijelző ablak Add noise: megrázza randommal egy kicsit a hálózat súlyait, hátha kiugrik lokális optimumba ragadásból Randomize: teljesen randomizálja a hálózat súlyait, az elejétől újrakezdi a tanítást Reset Input Streams: visszaállítja az input adatforrásokat alapállapotba Hálózat használata output becslésére új inputokhoz: Input Layer.Filename tulajdonságában adjuk meg az új inputokat tartamazó fájl nevét Tools|Control Panel menüben: Epochs=1:1 epoch legyen (egyszer megy végig a teljes input mintán) Learning=No: ne tanuljon Validation=No: ne validáljon Run gomb: futtatás Kiírja az Output Layer.Filename tulajdonságban megadott fájl oszlopaiba az output neuronok (változók) értékeit minden egyes mintánál (sorokat generál) Hálózat mentése a fájl (File) menüben: Save as: a hálózat projekt mentése *.SER fájlba. Ez tartalmazza a modell nem funkcionális, grafikus objektumait (keretek, rajzok, feliratok, stb.) de nem hordozható Export Neural Net: a hálózat mentése *.SNET fájlba, ami nem tartalmaz a grafikus elemeket, és más java alkalmazások alól hívható és hordozható Export as XML: *.XML formátumba menti a neurális hálózatot katt katt katt katt

17 Joone neurális modell használata: A hálózat működése
A létrehozott hálózat műkö-dése becslés közben: Először a lineáris input mező betölti a következő input mintát, Majd hozzáadja a konstansait(jelenleg0-ák) Az input mezőből kiinduló jelzés összeszorzódik az első szinapszishalmaz súlyaival Majd ezek a szigmoid rej-tett mezőbe összegződ-nek, mely hozzáadja kon-stansait A rejtett mezőből kiinduló Si(xi) szigmoid jelzések összeszorzódnak a második szinapszishal-maz súlyaival Ezek összegződnek a szigmoid output mező-ben és hozzájuk adódik annak konstansa Az output mező Si(xi) szigmoid jelzési függvé-nye az output excelbe írja az output változó értékét (0,1) intervallumba normalizálva, amit vissza-alakítunk kategóriákká + ×Si(xi) S × Si(xi) 12.33 1.10 2.28 16.00 101.0 2.05 1.09 0.63 0.41 3.27 1.25 1.67 680 + Joone neurális modell használata: A hálózat működése =KEREKÍTÉS(A1*2;0)+1

18 Az előadás tartalma Neurális hálózatok: Java Object Oriented Network Environment (Joone): Telepítés Minta alkalmazás Felhasználói felület A Joone neurális modell építőelemei Neuronmezők Szinapszisok Speciális mezők Beépülő modulok Joone neurális modell használata: Hálózatépítés Tanító modulok beépítése Tanítás Hálózat tanítása utáni tevékenységek Minták Joone neurális modellekre A Yahoo Finance Layer használata Temporális Asszociatív Memória (TAM) Jordan-féle rekurrens backpropagáció Elman-féle rekurrens backpropagáció Trend fordulópontok előrejelzése Trend előrejelzése Backpropagation Trough Time (BPTT) Time Delay neural network (TDNN) Szakirodalom

19 Minták Joone neurális modellekre: Részvényárfolyam-előrejelzések
Az idősori előrejelző hálózatok bemutatása során a Yahoo Finance Layer-t használjuk inputként, mely a tölt le tőzsdei árfolyamokat. Tulajdonságai: Symbol: a letöltött részvény tőzsdei szimbóluma (Ticker). Mi most a TSCO.L-t fogjuk használni, ami a Tesco PLC londoni jegyzését jelenti. A tickerek listáját a fenti honlapon a Get Quotes gombbal érhetjük el. Az ingyenes verzióban a layer sajnos egyszerre csak egyfajta részvényt tud letölteni, ezért azoknál a hálózatoknál, amelyek több részvény adataival dolgoznának, a TSCO.L különböző letölthető adatait használjuk. (Más adatforráson keresztül - pl. Excel Input Layer - egyszerre is betölthető több részvény adata. Excel-es árfolyamletöltésre a Lesson31–ben láttunk példát.) AdvancedColumnSelector: a részvény letölthető adatai: 1: periódus nyitó árfolyama, $ 2: periódus csúcs árfolyama, $ 3: árfolyam minimum, $ 4: periódus záró árfolyama, $ 5: eladott részvények, db 6: korrig.záró árfolyam, $ (egyszerre többet is kijelölhet, pl.1-6) Period: az árfolyamadatok periódusa (Daily:napi, Monthly:havi, Vearly:éves átlag) Start/EndDate: Letöltési időszak kezdete/vége YYYY.MM.DD formátumban FirstRow: hány periódust csússzon a letöltés kezdete a kezdődátumhoz képest. Majd mindig a következő napi árfolyamot becsüljük, ezért az input adatoknál a FirstRow=2 (aznapi árfolyamok), az elvárt outputoknál a FirstRow=3 (a rá következő nap árfolyamai). A következő napi adatokat könnyebb előrejelezni, mint a hosszabb távú változásokat, de a kereskedésben ez az információ csak rövid távú, kis profitrátájú, bár kevésbé kockázatos arbitrázs (Arbitrage) műveletekre alkalmas (lásd: Lesson28). LastRow: mindig legyen 0, azt jelenti,automatikusan határozza meg, hány adatot tölt le Az összes hálózatot úgy futtatjuk, hogy a Tools|Control Panel menüben az Epochs számát 100-ra korlátozzuk, a Training Patterns-et pedig 200-ra, hogy gyorsan össze tudjuk vetni tanulási hatékonyságukat. De ne felejtsük, hogy ez a bonyolultabb hálózatok tanításához a valóságban édeskevés, ott a szükséges epochok száma ekben mérhető. Ha van elég időnk kivárni, emeljük az Epochs-t erre a szintre.

20 Minták Joone neurális modellekre: Temporális Asszociatív Memória (TAM) 1
TAM (elméletét lásd: Lesson30) hálózatunk (modellt lásd: TAM.ser) lelke egy időben eltolt (Time Constant=0,5 periódus), önmagára szóló belső csatolást tartalmazó Context Layer. A Yahoo-ból származó 1db, 200 elemű TSCO.L napi záróárfolyam input idősort - amit Nomalizer Plugin-nel (0,1) intervallumba normalizálunk - egy Delay Layer tölti be, ami 5 perióduson keresztüli időbeli eltolással (Taps =5), 6 párhuzamos input idősorrá alakítja, vagyis az input minta minden eleme egy 6 napos (x(t), x(t-1), x(t-2),…)időbeli ablak, ami naponta csúszik odébb az idősoron. A Teacher Layer következő napi elvárt outputok (TSCO.L Next day data) alapján történő tanító tevékenysége Hebb-féle tanulásra (lásd: Lesson30) készteti a Context Layer belső szinapszisait, így az ciklusosan rezgő állapotba kerül, és felveszi az idősor 6 peródusnál rövidebb hullámainak ütemét

21 Minták Joone neurális modellekre: Temporális Asszociatív Memória (TAM) 2
A Linear Output Layer az előrejelzett következő napi hullámzást Excel Output Layer-en át kiírja a TAMOutPut.xls fájlba, illetve kirajzolja az Estim Chart-ra (kék görbe: tényadatok, a Facts Chart Handle adja ki, piros görbe: becslés, az Estimate Chart Handle adja ki) Az RMSE Chart-on követhetjük nyomon a becslési hiba alakulását a 100 epochos tanítás során (100× töltjük be a 200 elemű, 6 változós idősort). Látható, hogy a TAM a 40. epoch táján veszi fel az idősor rezgését, de azután az RMSE hiba nem tud alá menni (ez az átlagos tévedés a (0,1) intervallumba normalizált következő napi árfolyam becslése során). Az Estim Chart-on láthatjuk, hogy ennek az az oka, hogy bár a TAM ütemre jól kapja el a TSCO.L időbeli hullámait, amplitúdóban egy kicsit „túllengi” őket. Ezt a Context Layer.TimeConstant, illetve a Tools|ControlPanel.LearningRate állításával,több próbálgatással korrigálhatjuk.

22 Minták Joone neurális modellekre: Jordan-féle rekurrens backpropagáció
A Jordan-hálózat (elméletét lásd: Session31, modellt lásd: Jordan.ser) annyiban tér el a normál backpropagációtól, hogy a Sigmoid Output Layer-től időben késleltetett visszacsatolás (Loopback=Yes) van az input Delay Layer felé (a késleltetést a visszacsatolásba ékelt Context Layer.TimeConstant=0,5 tulajdonsá-ga idézi elő) A becslést a JordanOutPut.xls fájlban, illetve az Estim Chart-on tanulmányozva látszik, hogy a Jordan 100 epochban nem tanul túl fényesen (az RMSE megmarad ön, sőt az RMSE Chart-on látszik, hogy kicsit nő is, a hálózat nem igazán konvergál az optimális beállításhoz) A tanulási paraméterek állítgatása valamelyest segíthet ezen:

23 Minták Joone neurális modellekre: Elman-féle rekurrens backpropagáció
A Jordan továbbfejlesztése az Elman-hálózat (elméletét lásd: Session31, modell-jét lásd: Elman.ser), ahol a rejtett mezőnek van önmagára mutató csatolása (ezt szin-taktikai okok miatt 2 Linear Layer,2 Direct és 1 Full szinapszis építi fel) A ElmanOutPut.xls fájlba írt becslések RMSE hibája az eddigi legalacsonyabb, 0.033, és ez még csökkenhet az epochok számának növelésével.

24 Az előadás tartalma Neurális hálózatok: Java Object Oriented Network Environment (Joone): Telepítés Minta alkalmazás Felhasználói felület A Joone neurális modell építőelemei Neuronmezők Szinapszisok Speciális mezők Beépülő modulok Joone neurális modell használata: Hálózatépítés Tanító modulok beépítése Tanítás Hálózat tanítása utáni tevékenységek Minták Joone neurális modellekre A Yahoo Finance Layer használata Temporális Asszociatív Memória (TAM) Jordan-féle rekurrens backpropagáció Elman-féle rekurrens backpropagáció Trend fordulópontok előrejelzése Trend előrejelzése Backpropagation Trough Time (BPTT) Time Delay neural network (TDNN) Szakirodalom

25 Minták Joone neurális modellekre: trend-fordulópontok előrejelzése 1
Van amikor nem a pontos árfolyam előrejelzés lényeges, hanem az árfolyamtrend fordulópontjaié, mert pl.: Opciós ügylettel fedezünk (Hedge) tulajdonunkban lévő értékpapírokat vagy valutát kedvezőtlen árfolyamváltozás ellen (lásd:Lesson28) Markowitz-féle portfólió modellel (lásd:Lesson26) optimalizáljuk befektetéseinket a tőzsde egy nyugodtabb szakaszában, és szeretnénk előrejelezni, mikor lesz vége a stabilitási szakasznak A Turn.ser fájl egy időablak-inputot használó egyszerű hárommezős backpropagációs hálózatot mutat be, ahol Turning Point Extractor Plugin segítségével kiemeljük az árfolyam-idősor fordulópontjait. Ez a mozgóátlagolás és simítás ellentéte (lásd a minta diagrammot): Minden, a MinChangePercentage tulajdonságban megadott százaléknál nagyobb, előjelváltásos árváltozást trend-fordulópontnak tekint, és felnagyítja a normalizált ár-értékintervallum (általában (0,1)) minimumára/maximumára. Figyeljünk rá, hogy a Turning Point Extractort előbb kell összekötni a Normalizerrel, és csak utána köthetjük rá az Input Layerre, különben nem működik az összekötés!

26 Minták Joone neurális modellekre: trend-fordulópontok előrejelzése 2
A Turning Point Extractorral segített egyszerű 3 mezős perceptron TurnOutPut.xls fájlba írt outputjai es RMSE hibával becslik a változásokat, ami jobb, mint a TAM és a Jordan eredménye, de rosszabb, mint az Elman-é. A perceptron becslési teljesítményét (sajnos, tanulásának számolásigényét is…) erősen befolyásolja a rejtett mező szélessége (most 15). Ennek emelésével érdemes kísérletezgetni.

27 Minták Joone neurális modellekre: Trend-előrejelzés
A tőzsdei kereskedésben minél hosszabb távra tudunk előrejelzést készíteni, az kamatos kamattal nemlineári-san növekvő mennyiségű pénzt ér.Azonban az előrejel-zés nehézsége még ennél is sokkal gyorsabb ütemben nő. Ezen segít valamelyest, ha nem kell előrejelezni a rövid távú ingadozásokat, csak a mögöttük lévő nem-lineáris, multiciklikus trendet, mert pl. osztalékjö-vedelemre (Dividend Yield) játszunk a részvény hosszabb távú tartásával (lásd: Lesson28). A Trend.ser fájl arra mutat példát, hogy a Moving Average Plugin segítségével a Moving Average tulajdonságában beállított tagszámú mozgóátlagolást (lásd: Session8) végzünk az idősoron, ami lesimítja a tagszám alatti hosszúságú hullámokat (lásd a minta diagrammot).A háló működése analóg az ARMA model-lel (lásd: Session15), annak kolinearitási bajai nélkül… A TrendOutPut.xls fájlba írt outputok RMSE hibája rögtön lemegy re, ami jobb, mint az Elman-háló eredménye, pedig ezt egy sima kis 3 mezős perceptronnal csináltuk!

28 Minták Joone neurális modellekre: Backpropagation Trough Time (BPTT)
A BPTT.ser hálózat (elméletét lásd: Session31) több részvény árfolyamsorát igényli inputként, amit a Yahoo Input La-yer demó verziója nem tud, ezért a TSCO.L 1-6 letölthető adatsorát töltjük be. Az előrejelző hálózatok közül ez közelít legjobban a biológiai analógiához: (t, t+1, t+2…) periódusokat jelentő mezői azonos szélességűek (6=input változószámmal), 1 periódust késleltető (Taps=1) Delay Synapse-k kötik őket össze. A BPTTOutPut.xls fájlba írt, rossz RMSE-jű (0.82) becslésekből látszik, hogy 100 epoch nagyon kevés a 6 mezős percep-tron tanításához, valamint, hogy betanul-va is inkább trend becslésre használható, erős simító hatása miatt. Kivéve, ha van-nak benne n mezőt átugró, n periódusos késleltetésű szinapszisok is. De a jó to-pológiát csak sok próbával lehet belőni, és növeli a számolásigényt. A BPTT-t inkább a nem konvergáló visszacsatolásoktól való félelem szülte,mint a féktelen hatékonyság

29 Minták Joone neurális modellekre: Time Delay Neural Network (TDNN)
A TDNN.ser (elméletét lásd: Session31) a jelenleg elterjedt legnagyobb felismerési kapacitású és legnagyobb számolásigényű előrejelző, a freudi méretkomplexussal küzdő árfolyamelemzők „izomautója” Inputként több (6) részvényárfolyamsort tölt be, a Delay Layer mindegyiket megtöbb-szörözi 6 elemű időablakokba, így 6×6=36 input változó lesz. Ezeket egy egyszerű 3 mezős perceptronba tölti, aminek viszont brutálisan széles (90) a rejtett mezője, míg az output szélessége = a részvényszámmal A TDNNOutPut.xls fájlba írt becslésekből látszik, hogy a becslés elég hatékony (az RMSE itt fals értékű, mert a Yahoo Input nem tud 6 különböző részvényt betölteni). A legkritikusabb tényező a rejtett mező min. szélessége, amit próbálgatással lövünk be

30 Szakirodalom Joone: Joone jegyzetek CANAL-formátumban magyarul: JOONENotes.doc Joone kézikönyv angolul: JOONEManual.pdf Temporális Asszociatív Memóriák: Működésének szimulációja Java Appletben: Felhasználása robotok mozgásvezérlésében: Bibliográfia: Jordan-féle rekurrens backpropagáció: Internetes tananyag angolul: Tankönyv PDF-ben a pénzügyi előrejelzésben történő felhasználásáról: Elman-féle rekurrens backpropagáció: Mathworks tutorial: Internetes tananyag: Wikipedia szócikk: Neural Networks Toolbox tutorial: Backpropagation Trough Time: Elméleti bevezető: Internetes tananyag: Time Delay Neural Networks: Elméleti bevezető: Használata Mathworks-ben:


Letölteni ppt "32. Előadás Dr. Pauler Gábor, Egyetemi Docens"

Hasonló előadás


Google Hirdetések