Sieci neuronowe

2739

Sztuczne sieci neuronowe są wykorzystywane do wspierania decyzji inwestycyjnych na globalnych rynkach finansowych. Pomagają w generowaniu strategii transakcyjnych (sygnały kupna / sprzedaży) i prognozowaniu krótkoterminowych trendów.

Sieci neuronowe na  rynkach finansowych

Najczęściej stosowanymi modelami sieci neuronowych podczas prognozowania szeregów czasowych, które są kursami walutowymi, są jednokierunkowe sieci wielowarstwowe wykorzystujące propagację błędów wstecz do nauki sieci.

Najczęściej stosowanym oprogramowaniem do budowy modeli neuronowych są profesjonalne pakiety naukowe, takie jak Matlab, Statistica, Mathematica, oraz do aplikacji korporacyjnych SAS, SPSS. Istnieje również wiele komercyjnych rozwiązań uproszczonych w konstrukcji z uproszczonymi możliwościami obliczeń neuronowych, w których wdrażane są tylko niektóre typy sieci najbardziej odpowiednie do prognozowania szeregów czasowych z ukrytymi szczegółami optymalizacji i możliwościami dopasowania do własnych potrzeb i strategii inwestycyjnych.

Zastosowanie sieci neuronowych

Sieci neuronowe nie są lekarstwem na wszystkie dolegliwości i nie powinny być stosowane we wszystkich sytuacjach. Obszary, w których najczęściej stosowane są sieci neuronowe, to: aproksymacja i interpolacja, rozpoznawanie i klasyfikacja wzorów, kompresja, przewidywanie, identyfikacja i kontrola oraz asocjacja.

Do analizy zachowania rynków terminowych najczęściej stosuje się sieci predykcyjne, których zadaniem jest określenie przyszłych odpowiedzi systemu na podstawie szeregu wartości z przeszłości, gdzie sieć szacuje bieżącą zmienną na podstawie znanych informacji poprzedzających prognozy, tj. dane historyczne.

Główną zaletą sieci neuronowych jest umiejętność uczenia się i uogólniania zdobytej wiedzy, a przeszkolenie na konkretnej grupie danych uczenia się jest w stanie powiązać zdobytą wiedzę i wskazać oczekiwane dane na temat danych nieuczestniczących w procesie uczenia się.

Ogólnie można powiedzieć, że sieć neuronowa wykonuje funkcje nieliniowe wielu zmiennych, przy użyciu prostych obliczeń matematycznych, przy tylko jednej różnicy sieć neuronowa może wykonywać skuteczne obliczenia dla dużej liczby zmiennych wejściowych do kilkuset, które dla prawie zwykłych obliczeń matematycznych obliczeniowych dla kilku lub nawet kilku zmiennych.

Proces Budowy Modelu Neuronowego

W procesie budowy modelu neuronowego wyróżnić możemy kilka etapów:

  1. Określenie prognozowanej zmiennej (wyjściowej, objaśnianej)

Podstawowym pytaniem, jakie musimy sobie zadać przy budowie modelu, jest to, co chcemy przewidzieć, czy powinna to być na przykład stopa EURUSD, czy stopa bezrobocia w USA. To pytanie jest ważne, ponieważ wpływa na strukturę całego modelu neuronowego i będzie nam towarzyszyć w dalszej części artykułu. Po podjęciu decyzji o tym, co chcesz prognozować, powinieneś rozważyć charakter prognozowanych wartości i odpowiedzieć na następujące pytania:

  • czy prognozowana wartość powinna być liczbowa i mieć określone wartości liczbowe?
  • czy wartość prognozowana powinna mieć charakter binarny z wartościami zero jeden, gdzie zero może oznaczać spadek kursu, a jeden średni wzrost kursu?
  • czy wartość prognozy powinna mieć postać procentowej prognozy wzrostu lub spadku wartości, gdzie 10% może oznaczać wzrost o 10%, a spadek o -10% od obecnej ceny rynkowej?
  • jaka jest skala czasowa prognozy, czy chcemy prognozować przyszłość w minutach, z góry lub dniach, tygodniach
  1. Określenie zmiennych uczących (wejściowych, objaśniających)

Wybór odpowiednich zmiennych wejściowych jest równie ważny jak wybór celu. Wyobraź sobie najprostszą sytuację, w której decydujemy się na użycie jednej zmiennej wejściowej, np. ten sam kurs EURUSD, który próbujemy oszacować na wyjściu, z tym wyjątkiem, że podamy sygnały z poprzedniego dnia dla wejścia sieciowego. W tej sytuacji oczekujemy, że sieć przetwarza informacje zgodnie z algorytmem jednej zmiennej, od razu powiem, że takiej transformacji można dokonać za pomocą prostego algorytmu matematycznego, a wykonywanie takich obliczeń sieci neuronowej nie ma żadnego sensu. Wyobraźmy sobie drugą sytuację przy wejściu do sieci, podajemy 250 zmiennych objaśniających, np. wskaźniki analizy technicznej lub kurs EURUSD, przy czym każdy wpis jest przesunięty o jeden dzień wstecz (250 dni wstecz). Można powiedzieć, że jest to rozsądniejsze rozwiązanie z punktu widzenia sieci neuronowej, ale prawidłowe i skuteczne. Sieci mają właściwości automatycznego asocjacji, dzięki czemu mogą automatycznie ignorować nieistotne sygnały, nie zmienia to jednak faktu, że jeśli mamy 250 wejść, z których 100 będzie znaczących, a 150 jest znaczących, mamy rozważny model neuronowy . Każde wejście, nawet niewielkie, obarczone jest pewnym błędem, który po zsumowaniu daje wartości zakłócające funkcjonowanie całej sieci, dlatego wybór odpowiednich zmiennych wejściowych jest bardzo ważny. Do prawidłowego wyboru zmiennych wejściowych stosowane będą zwykle niezależne metody od sieci neuronowej, np. metody badania korelacji poszczególnych danych wejściowych z danymi wyjściowymi i odrzucania nieskorelowanych zmiennych, można również zastosować metody logiki rozmytej lub metody empiryczne, w których najczęściej stosowane są metody konstruktywne i destrukcyjne. Innym problemem jest kwestia danych ilościowych i jakościowych, w których trudno jest porównywać i wykorzystywać ciągłe dane ilościowe powszechnie dostępne w analizie technicznej dla niesystematycznych danych jakościowych, takich jak podstawowe wskaźniki analizy uczenia się w sieci.

  1. Wstępne przetwarzanie danych

Zróżnicowany charakter potencjalnych danych wejściowych do nauki sieci neuronowej oznacza, że ​​nawet przy wyborze najbardziej skorelowanych zmiennych wejściowych ze zmienną prognozowaną nie daje nam pewności co do dokładności wyboru zmiennych wejściowych. Każda zmienna obarczona jest pewnym błędem, który w tak skomplikowanym i nieprzejrzystym modelu neuronowym w swoim działaniu uniemożliwia uzyskanie prawidłowych wyników, dlatego wstępne przetwarzanie danych służy do lepszego dostosowania danych do wymagań sieci neuronowej. Podstawowe i niepożądane czynniki dla sieci neuronowych obejmują trendy i wahania sezonowe. Z pewnością zaskoczy każdego tradera, który uwielbia trendy wzrostowe, ponieważ wtedy może zarabiać pieniądze, ale sieci neuronowe wręcz przeciwnie nie lubią trendów i zmian sezonowych, które wprowadzają dodatkowe zakłócenia w nauce o sieci, dlatego opracowano specjalny algorytm w celu wyeliminowania trendów i odmian . Innym powodem potrzeby wstępnego przetwarzania danych jest potrzeba dostosowania się do zakresu działania algorytmów obliczeniowych sieci neuronowej, w których wykorzystywane są sigmoidalne funkcje przejściowe działające w zakresie od 0 do 1 oraz funkcje tangensoidalne działające w zakresie od -1 do 1.

  1. Wyodrębnienie zbiorów uczących i testujących

Po wyodrębnieniu ważniejszych zmiennych wejściowych i wstępnym przetworzeniu, powinniśmy pomyśleć o tym, ile zmiennych potrzebujemy do prawidłowego uczenia się sieci i jak prezentujemy zmienne podczas uczenia się. Należy pamiętać, że jeśli dostarczymy sieci dane z jednego dnia i oczekujemy prawidłowego oszacowania stawek w przyszłości, tak jakbyśmy mieli doradcę inwestycyjnego, który oszacuje kurs w najbliższej przyszłości na podstawie danych z jednego dnia. Sprytny doradca powie ci, że kurs wzrośnie, ale może również spaść i to samo powie nam sieć neuronową. Eksperymenty mówią, że dla każdego wejścia powinna istnieć co najmniej seria 10 próbek uczenia się, przy czym jedna próbka uczenia się zawiera jedną wartość dla każdego wejścia sieciowego, tj. Mając 10 wejść sieciowych, potrzebujemy 100 próbek uczenia się, a przy sieci z 250 wejściami, potrzebujemy 2500 próbek dydaktycznych, co daje nam 625 000 niezależnych wartości uczenia się.

Zestaw do nauki jest zbiorem danych historycznych, które mogą najpierw zawierać tak odległe dane, że nie są już istotne w obecnej sytuacji, z drugiej strony, wśród tych danych mogą wystąpić pewne anomalie zakłócające właściwe uczenie się, takie jak opublikowane podstawowe informacje, informacje polityczne przejściowe zakłócenia widoczne zarówno na schemacie kursu, jak i niekorzystnie wpływające na proces uczenia się w sieci.

  1. Wybór odpowiedniej architektury sieci

Architektura sieci to odpowiednio dobrana liczba wejść sieciowych, liczba wyjść, liczba warstw i liczba neuronów w warstwach, a także wybór odpowiednich funkcji przejścia występujących w każdym z neuronów. Biorąc pod uwagę architekturę, istnieje wiele rodzajów sieci, w tym sieci samoorganizujące się, rekurencyjne, probabilistyczne, podstawowe funkcje promieniowe, sieci liniowe, ale powinniśmy skupić się na jednokierunkowych sieciach wielowarstwowych, które ze względu na swoją strukturę i właściwości aproksymacyjne zostały wykorzystane w szeregach czasowych prognozowanie. Kolejną rzeczą, którą musimy określić w modelu, jest liczba warstw, która zwykle wynosi od trzech do czterech, łącznie z warstwami wejściową i wyjściową. Odpowiedź na pytanie, ile neuronów wejściowych i ile neuronów wyjściowych oszacowaliśmy już na pierwszych etapach budowy modelu, ponieważ liczba neuronów w warstwie wejściowej (pierwsza warstwa) jest równa liczbie wyznaczonych danych wejściowych, oraz liczba neuronów wyjściowych jest równa liczbie wyjść sieciowych. Aby jednak określić liczbę neuronów w ukrytych warstwach, możemy użyć wzorów do obliczania postępu geometrycznego.

  1. Wybór odpowiedniego algorytmu uczenia

Jest to prawdopodobnie najprostsza decyzja, którą musimy podjąć przy projektowaniu sieci, ponieważ do nauki możemy użyć dowolnego algorytmu uczenia dostosowanego do rodzaju architektury sieci. Sam algorytm uczenia się w sieci nie wpływa na zdolność i zdolność do przewidywania wartości, podczas gdy znacząco wpływa na szybkość uczenia się i zdolność do zaprzestania uczenia się w lokalnych minimach, co daje złudzenie zakończenia procesu uczenia się.

Wśród algorytmów uczenia się, oprócz metod delta-bar, gradientu sprzężonego, Quasi-Newtona, Levenberga-Marquarda, najczęściej stosowana jest propagacja błędów wstecz.

  1. Uczenie i testowanie

Proces uczenia się polega na ciągłym pokazywaniu i uczeniu wartości próby uczenia się na wszystkich wejściach oraz wynikach (metoda uczenia z tak zwanym nauczycielem) danych, które chcemy prognozować, np. kurs walut z jednodniowym wyprzedzeniem. Prezentujemy dane iteracyjnie, dopóki sieć nie pokaże nam zadowalającego wyniku uczenia się (minimalna wartość błędu uczenia się sprawdzana na danych testowych). Nie bez znaczenia jest również odpowiedni wybór prezentacji zmiennych podczas uczenia się, w którym możemy wyświetlać dane od najbardziej odległych do najbliższych w czasie lub przeprowadzać losową prezentację danych uczenia się. Ocena skuteczności polega na testowaniu danych w zestawie danych testowych, które należy określić, ale zaleca się, aby nie używać do testowania tych samych próbek danych, które były używane podczas nauki.

  1. Zastosowanie

Po opracowaniu architektury sieci i ukończeniu nauki, uzyskując zadowalający wynik, możemy zacząć korzystać z sieci w praktyce, co polega na pytaniu danych wejściowych sieci o bieżące dane zgodne z poprzednim wyborem zmiennych wejściowych (objaśniającym) i oczekiwaniu wyniku prognoza na wyjściu.

Podsumowanie

Projektując model sieci neuronowej, musimy odpowiedzieć na szereg pytań, z których każde ma znaczenie, jest powiązane i wpływa na inne parametry modelu. Wybierając zmienną prognozy (wynik, wyjaśnienie), musimy zdecydować, co chcemy prognozować w jakiej skali czasowej i jakim formacie powinna przyjąć wartość prognozy. Prawdopodobnie każdy inwestor chciałby otrzymać dokładną prognozę w postaci wartości liczbowej z dokładnością 1 pipsa, w odstępie czasu do jednej minuty, a nawet tyknięć. W tym momencie muszę ostudzić wielu graczy, ponieważ sztuczne sieci neuronowe ze swej natury nie mogą być precyzyjne, a jedynie oszacować przewidywane wartości. Wybierając wartość, którą chcemy prognozować, musimy wybrać odpowiednie zmienne wejściowe sieci i odpowiednio je przetworzyć, aby dopasować je do możliwości sieci neuronowej. Wybór architektury sieci i metody uczenia się wpływają na dalszą adaptowalność i wydajność prognozowania. Większość czytelników zauważyło już, jak skomplikowany jest proces budowy i sam model neuronowy, który nie może dokładnie określić wartości. Pytanie jest oczywiste – po co zadawać tyle trudu, aby zbudować taki model? Odpowiedź jest prosta, ponieważ sieci neuronowe należą do działu sztucznej inteligencji opartej na zdolnościach biologicznych ludzkiego mózgu, a jak wiadomo, ludzkich działań nie można opisać zwykłymi formułami matematycznymi, a zatem same sieci neuronowe, pomimo wykorzystanie funkcji matematycznych w ich obszarach jest całkowicie niekonwencjonalnym obliczeniem algorytmu, a zatem przybliżonymi wynikami obliczeń. Główną zaletą, której nie mają inne techniki obliczeniowe, takie jak wskaźniki analizy technicznej, funkcje matematyczne, statystyczne, a nawet modele ekonometryczne, jest to, że sieć neuronowa może wykonywać obliczenia na funkcjach wielowymiarowych, tj. Obliczać wartość wyjściową na podstawie bardzo dużej liczby zmiennych. Innymi słowy, może wykonywać obliczenia i znajdować prawidłową (przybliżoną) wartość, np. dla 50 wskaźników analizy technicznej opisujących kurs walutowy.