Fraktale , Sieci neuronowe ,Algorytmy genetyczne...

Jeżeli masz pomysł lub używasz ciekawego systemu albo strategii gry, opisz ja tutaj.
maariuszn
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 01 cze 2007, 22:25

Nieprzeczytany post autor: maariuszn »

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
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?

Awatar użytkownika
goospit1984
Uczestnik
Uczestnik
Posty: 3
Rejestracja: 02 wrz 2009, 13:15

Nieprzeczytany post autor: goospit1984 »

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.

Awatar użytkownika
oiro
Pasjonat
Pasjonat
Posty: 423
Rejestracja: 05 mar 2008, 00:40

Nieprzeczytany post autor: oiro »

a w czym piszesz sieci??
80% skuteczność to duzy sukces gratuluje chociaż aby przerzucic to na system tranz wynik może być troszkę inny. Sam stram się modelować sieć dającą już konkretną odpowiedz tz SL, TP.

maariuszn
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 01 cze 2007, 22:25

Nieprzeczytany post autor: maariuszn »

oiro pisze:a w czym piszesz sieci??
Sam stram się modelować sieć dającą już konkretną odpowiedz tz SL, TP.
To interesujące podejście. Jestem ciekaw jakie rezultaty? Mógłbyś napisać coś więcej?

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

Odbite z Karta Tesla - GPU/CUDA
LowcaG pisze:Powiem tylko tyle, wieksze sieci mniej generalizuja a bardziej dopasowują się do danych.
Logika wewnętrzna NN to skomplikowany temat :mrgreen:
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)

wojnowy
Stały bywalec
Stały bywalec
Posty: 63
Rejestracja: 24 wrz 2010, 10:09

Nieprzeczytany post autor: wojnowy »

reptile pisze:Logika wewnętrzna NN to skomplikowany temat
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 kwestii :-)
reptile pisze:LowcaG napisał:
Powiem tylko tyle, wieksze sieci mniej generalizuja a bardziej dopasowują się do danych.
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 :) ).
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 :D

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 :D). 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 :)
(\(^.^)/)

maariuszn
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 01 cze 2007, 22:25

Nieprzeczytany post autor: maariuszn »

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"

Awatar użytkownika
Kenia
Gaduła
Gaduła
Posty: 145
Rejestracja: 29 cze 2010, 18:12

Nieprzeczytany post autor: Kenia »

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"
polecam sieci Kohonena. jeśli masz dobry pomysł na wstępną obróbkę danych to daje bardzo dobre wyniki.

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

wojnowy pisze:hehe, pozwolę sobie jednak stwierdzić, że NN to tak naprawdę bardzo proste narzędzie
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.
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. :roll:
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

maariuszn
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 01 cze 2007, 22:25

Nieprzeczytany post autor: maariuszn »

Nie ma czegos takiego jak "na slepo" ;) Zawsze cos optymalizujemy i zawsze jest to dopasowywanie do danych

ODPOWIEDZ