Muszę przyznać, że wynik jest imponujący choć nie podałeś jak długi był okres testowy. Możesz napisać coś więcej o danych wejściowych do swojej sieci?goospit1984 pisze:Witam (jestem tu nowy)
Temat ssn + waluty jest tematem mojej pracy magisterskiej.
Korzystając z sieci typu BMLP(wielowarstwowe połączenia) i FCC(kaskada) i algorytmu NeuronByNeuron(modyfikacja Levenberga-Marquarda) udało mi się uzyskać 80% skuteczność prognozy kierunku ruchu w dniu następnym.
Wydaje mi się to wystarczające.
Czuje że na tym forum jeszcze wiele sie naucze
Fraktale , Sieci neuronowe ,Algorytmy genetyczne...
- goospit1984
- Uczestnik
- Posty: 3
- Rejestracja: 02 wrz 2009, 13:15
okres testowy nie był długi, to fakt, jednak przenosiłem te badania na różne okresy, i było podobnie
w strukturę danych wchodziły wartości par (wszystkie z USD)takich jak
AUD, CAD,EUR,GBP,CNY,JPY,ILS,KWD,RUB,KRW,CHF. pary były ustawiane po 2 poprzedzające sesje co dało mi 22 pary przeszłych, plus jedna para prognozowana usd/eur(następnego dnia). Do tych danych dodałem jeszcze po 3 sesje cenowe ropy, złota i platyny(w USD). Dane nie były w żaden sposób skalowane,operacjonalizowane, jedynie sprawdzone pod względem poprawności.
Korzystałem z dwóch topologi sieci BMPL i FCC. Sieć FCC udało mi się zminimalizować do 4-5 neuronów bez utraty skuteczności. Im mniejsza sieć tym krócej się uczy i lepiej generalizuje dane.
w strukturę danych wchodziły wartości par (wszystkie z USD)takich jak
AUD, CAD,EUR,GBP,CNY,JPY,ILS,KWD,RUB,KRW,CHF. pary były ustawiane po 2 poprzedzające sesje co dało mi 22 pary przeszłych, plus jedna para prognozowana usd/eur(następnego dnia). Do tych danych dodałem jeszcze po 3 sesje cenowe ropy, złota i platyny(w USD). Dane nie były w żaden sposób skalowane,operacjonalizowane, jedynie sprawdzone pod względem poprawności.
Korzystałem z dwóch topologi sieci BMPL i FCC. Sieć FCC udało mi się zminimalizować do 4-5 neuronów bez utraty skuteczności. Im mniejsza sieć tym krócej się uczy i lepiej generalizuje dane.
Odbite z Karta Tesla - GPU/CUDA
Ale, ten wątek bym proponował ew. tutaj pociągnąć.
Skąd takie spostrzeżenie. Bo nie pasuje mi to do funkcji danych serii w czasie.
Logika wewnętrzna NN to skomplikowany tematLowcaG pisze:Powiem tylko tyle, wieksze sieci mniej generalizuja a bardziej dopasowują się do danych.
Ale, ten wątek bym proponował ew. tutaj pociągnąć.
Skąd takie spostrzeżenie. Bo nie pasuje mi to do funkcji danych serii w czasie.
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)
hehe, pozwolę sobie jednak stwierdzić, że NN to tak naprawdę bardzo proste narzędzie chociaż ja mogę trochę inaczej to widzieć bo już od jakiegoś czasu się tym interesuję ;D. Odniosę się w takim razie do kilku kwestiireptile pisze:Logika wewnętrzna NN to skomplikowany temat
To nie jest do końca tak, a przynajmniej można się przed tym w prosty sposób obronić wystarczy zwiększyć ilość danych uczących (z czym na FX nie powinno być problemu ).reptile pisze:LowcaG napisał:
Powiem tylko tyle, wieksze sieci mniej generalizuja a bardziej dopasowują się do danych.
Jednak zakładając, że wektor danych uczących jest zawsze tych samych rozmiarów to prosto udowodnić, że dodając nową zmienną/nowy neuron, sieć uzyska przynajmniej nie gorszy rezultat (minimum globalne funkcji błędu będzie trochę niżej lub w najgorszym wypadku w tym samym miejscu co sieć z mniejszą ilością zmiennych/neuronów).
Może to wyjaśnię na takim króciutkim przykładzie ale na znacznie prostszym modelu . Załóżmy, że mamy prosty model liniowy typu y = a0 + a1*X1, gdzie ai to parametry, które się estymuje (naucza) a X1 to jakaś zmienna.
Jeśli do tego modelu dodamy nową zmienną (X2) to funkcja błędu będzie identyczna, gdy parametr przy tej nowej zmiennej wyniesie 0 (czyli rezultat będzie taki sam nie gorszy). Natomiast w trakcie "nauki" możemy (nie zawsze, ale przeważnie) wyestymować taki parametr, który da lepszy (przynajmniej o trochę) wynik.
Tzn. funkcja błędu będzie identyczna jak w modelu z jedną zmienną, w sytuacji, gdy parametr przy X2 wyniesie 0 ale może osiągnąć również lepszy wynik. Mam nadzieję, że dobrze to wyjaśniłem
Jest to dość duży problem bo jak dobierzemy zbyt mało danych uczących i zbudujemy dużą sieć to może się tak zdarzyć, że SSN dopasuje się w 100% do danych uczących (funkcja błędu wyniesie 0). Problem polega na tym, że:
po pierwsze wektor uczący rzadko kiedy reprezentuje wszystkie możliwe sytuacje (często się mówi, że rynek się zmienia a jak uczysz sieć powiedzmy na danych z jednego roku to nie bierzesz pod uwagę tego co było dwa lata temu) dlatego trzeba wybrać pomiędzy gorszym wynikiem sieci (a lepszej generalizacji uogólnieniu problemu) a lepszym wynikiem (ale tylko na pewnym zbiorze). Dąży się do tego, żeby wilk był syty i owca cała, czyli żeby sieć nauczyła się pewnych rzeczy ale nie przeuczyła;
a po drugie w danych uczących mogą być błędy (tzn. szum), dane mogą być nie precyzyjne itd. Szczególnie na rynkach część danych może być wynikiem jakiś losowych sytuacji, które np. nigdy już nie wystąpią i dana wzorcowa/zmienne są zafałszowane. Natomiast sieć nauczona na takim zbiorze będzie reprezentować właśnie taki zafałszowany zbiór uczący.
Gdy po nauce do sieci damy identyczne zmienne jak w zbiorze uczącym sieć zwróci identyczny wynik a obecnie rynek może nieco inaczej się zachowywać ze względu na swój losowy charakter. Dlatego nie zawsze dąży się do najmniejszego błędu (przynajmniej nie na zbiorze uczącym).
Dlatego przeważnie lepiej uczyć na większych zbiorach a po drugie nie starać się uczyć sieć na maxa. Powinno się tworzyć 3 zbiory: jeden do nauki, drugi do weryfikacji a trzeci do sprawdzenia sieci w praktyce (np. w testerze ). Wagi natomiast powinny być dobrane te dla których wartość błędu w zbiorze weryfikującym będzie najniższy (a nie w zbiorze uczącym).
Ogólnie to temat rzeka ale moim zdaniem nawet ciekawy .
Na zakończenie powiem może jeszcze tylko, że największy problem z SSN to jej nauka, która jest dosyć ciężko tłumaczona... Autorzy wymyślili sobie dość dziwny termin "propagacja wsteczna" który jeszcze dziwniej tłumaczą, jednak jest to zwyczajna metoda gradientowa jedna z odmian (liczymy pochodne po każdej wadze i ich części odejmujemy od obecnej wagi tyle filozofii). Inny sposób nauki to metody heurystyczne/niedeterministyczne (np. Algorytmy Genetyczne), które są jeszcze prostsze (nie wymagają liczenia pochodnych) a do tego można stosować funkcje błędu nieciągłe to ostatnie to chyba największa ich zaleta.
Ogóle SSN tak jak wspomniał już o tym bodajże LowcaG służą przede wszystkim do klasyfikacji lub aproksymacji. Może być to naprawdę ciekawe narzędzie w EA ale raczej strategia nie powinna się opierać jedynie o SSN...
Jak kogoś to interesuje to chętnie o tym pogadam
(\(^.^)/)
W 100% zgadzam sie z tym co napisal wojnowy. "Nauka" sieci neuronowej to nic innego jak optymalizacja pewnej funkcji. Jezeli mamy zbyt duzo parametrow (neuronow i warstw ukrytych) w stosunku do liczby danych uczacych to mozemy "przetrenowac" sieci i dokladnie dopasowac taka siec do danych. Problem w tym, ze zdolnosc do generalizacji takiej sieci/funkcji bedzie znikoma
Jezeli chodzi o mnie to po wielu probach zrezygnowalem z wykorzystywania sieci neuronowych do prognozowania. Wydaje mi sie, ze dobrym ich zastosowaniem moze byc klasyfikacja "stanow rynkowych"
Jezeli chodzi o mnie to po wielu probach zrezygnowalem z wykorzystywania sieci neuronowych do prognozowania. Wydaje mi sie, ze dobrym ich zastosowaniem moze byc klasyfikacja "stanow rynkowych"
polecam sieci Kohonena. jeśli masz dobry pomysł na wstępną obróbkę danych to daje bardzo dobre wyniki.maariuszn pisze:Jezeli chodzi o mnie to po wielu probach zrezygnowalem z wykorzystywania sieci neuronowych do prognozowania. Wydaje mi sie, ze dobrym ich zastosowaniem moze byc klasyfikacja "stanow rynkowych"
Niech będzie, że proste.. bardziej chodziło mi o to co defakto taka sieć wywnioskowała lub się nauczyła i jak się to ma do rzeczywistej logiki .. jakiegoś systemu w stosunku do "rzeczywistości" którą taka sieć stworzyła.wojnowy pisze:hehe, pozwolę sobie jednak stwierdzić, że NN to tak naprawdę bardzo proste narzędzie
No więc co z tym dopasowaniem do danych? Tak się chyba dzieje gdy NN szuka na ślepo a nie względem modelu czy zadanej funkcji.
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)