Kurs giełdowy - Część 7-Sieci neuronowe w GIEŁDA-Edukacja - bossa.pl
2017.08.21, godz. 04:34
raport-miesieczny-portfel-dm
kontakt

Zastosowanie sieci neuronowych do wspomagania decyzji inwestycyjnych

Streszczenie

Niniejszy artykuł pokazuje możliwości zastosowania narzędzia, jakim są sztuczne sieci neuronowe, do wspomagania decyzji inwestycyjnych na przykładzie Giełdy Papierów Wartościowych w Warszawie. Opracowanie zawiera przejrzyste wprowadzenie do zagadnienia sztucznych sieci neuronowych, sposoby ich uczenia oraz przykłady użycia różnych typów sieci neuronowych w problematyce generowania strategii transakcyjnych (sygnałów kupna/sprzedaży) oraz prognozowania krótkoterminowych trendów.

1. Wstęp

W ostatnim czasie mamy do czynienia z zalewem informacji pochodzących z różnych źródeł, a co się z tym wiąże - powstaje problem ich szybkiego i efektywnego przetwarzania oraz selekcji. Wielkie bazy danych będące coraz częściej niezbędnym elementem procesu zarządzania, olbrzymie zasoby wiedzy korporacyjnej, różne formy sieciowej działalności gospodarczej (e-business), Internet jako źródło wiedzy wykorzystywanej przez miliony ludzi. To tylko niektóre wybrane elementy obrazujące rozmiar i znaczenie tego zjawiska.

Tradycyjne techniki przetwarzania informacji nie zawsze dają oczekiwany efekt w rozsądnym czasie. Ponadto w szybko zmieniających się warunkach działania wielu przedsiębiorstw i związanych z nimi systemów informatycznych, pojawia się konieczność szybkiego dostosowywania istniejących algorytmów do nowych warunków, a to nie jest rzeczą ani łatwą, ani tanią.

Często także nie istnieją ani teoretyczne ani praktyczne rozwiązania dla przedstawionych powyżej problemów. Tymczasem rozwiązanie przynajmniej niektórych problemów może być znalezione, pod warunkiem, że w obszar rozwiązań dopuszczalnych włączone zostaną metody niestandardowe (jak chociażby sieci neuronowe), co na pewno przyniesie korzyść dla gospodarki, techniki i indywidualnych podmiotów, które uzyskać mogą przewagę konkurencyjną.

Sieci neuronowe od czasu swych narodzin w latach czterdziestych przeżywały okresy wzlotów i upadków. Od początkowej fascynacji ich możliwościami, poprzez znaczny spadek zainteresowania, wręcz zapomnienia po książce Minskiego(1), aż po renesans w latach osiemdziesiątych i dziewięćdziesiątych.

Inspiracją dla tej dziedziny nauki, modelem, do którego, początkowo bezpośrednio, odwoływali się badacze sieci neuronowych jest mózg. Ten najbardziej skomplikowany i tajemniczy z ludzkich organów stanowi dla nas ciągle zagadkę. Dzisiejsze, tak szerokie i powszechne zainteresowanie sieciami neurono­wymi zarówno wśród inżynierów, przedstawicieli nauk ścisłych - matematyki i fizyki oraz biologów czy neurofizjologów wynika przede wszystkim z poszukiwań nad sposo­bami budowy bardziej efektywnych i bardziej niezawodnych urządzeń do przetwarzania informacji, a układ nerwowy jest tutaj niedościgłym wzorem. Z punktu widzenia dzisiejszej informatyki ważne jest nie tyle całościowe modelowanie mózgu, ile możliwość wykorzystania sposobów, jakimi on przetwarza informacje. Ciekawy z punktu widzenia informatyki jest także fakt, że dzięki tym modelom można rozwiązywać zadania, z którymi z trudem radzą sobie inne techniki obliczeniowe. Sieci neuronowe bowiem, mogą być stosowane wszędzie tam, gdzie pojawiają się problemy związane z przetwarzaniem i analizą danych, z ich predykcją, klasyfikacją czy sterowaniem. Można pokusić się nawet o stwierdzenie, że łatwiej wymienić problemy, w których sieci neuronowe się nie sprawdzą, od tych w których z powodzeniem można je zastosować (i w których zapewne były już stosowane). Głównym czynnikiem przemawiającym za praktycznym stosowaniem sieci neuronowych jest ich zdolność do uogólnień zdobytej wiedzy, która daje im jak gdyby pewną dozę inteligencji. Ciekawym i równie ważnym czynnikiem jest to, że sieci neuronowe są wyposażone w swoje wewnętrzne algorytmy przetwarzania informacji, które umożliwiają im rozwiązywanie nawet gatunkowo różnych zadań. Sposób w jaki sieć neuronowa zyskuje wiedzę o zadanym problemie, polega na nauce na podstawie znanych poprawnych przykładach (zwanych wzorcami uczącymi) rozwiązania danego problemu, lub prościej na bazie obserwacji prezentowanej jej wiedzy. Celem nauki jest sposób opisania wewnętrznych korelacji zachodzących pomiędzy wzorcami uczącymi. Na tej podstawie nauczona sieć neuronowa potrafi odpowiadać na pytania zarówno z zakresu wzorców uczących jak i spoza nich.

Mózg człowieka ciągle jest najpotężniejszym z istniejących obecnie urządzeń liczących do celów przetwarzania in­formacji w czasie rzeczywistym. Fascynacje mózgiem, jego własnościami (odpornością na uszkodzenia, równoległym przetwarzaniem itp.) już w latach 40-tych zaowocowały pracami, których fundamentalne znaczenie odczuwamy jeszcze dzisiaj.

Choć niewielu z nas potrafi przemnożyć w pamięci dwie liczby dwucyfrowe, co bez problemu robi najprostszy kalkulator, każdy bezbłędnie rozpoznaje twarze znajomych osób, z czym komputery mają jeszcze olbrzymie problemy. Mózg może pokonać nawet najszybszy super­komputer, pomimo że w tym procesie neurony jako jednostki przetwarzające są o wiele rzędów wielkości wolniejsze od swoich elektronicznych czy optoelektronicznych odpowiedników.

Sieci neuronowe odziedziczyły po swoim pierwowzorze kilka cech odróżniających ich działanie od innych systemów przetwarzania danych, a upodabniających je do mózgu. I choć nie mają monopolu na naśladowanie mózgu, to właśnie najczęściej sieci neuronowe odczytują ręczne pismo, prognozują kursy akcji na giełdzie, rozpoznają mowę, obrazy czy twarze.

2. Budowa i zasada funkcjonowania sztucznych sieci neuronowych

Mówiąc o sieciach neuronowych w aspekcie technicznym w istocie mamy na myśli sztuczne sieci neuronowe będące niezwykle okrojonym modelem rzeczywistości, gdyż jak wynika z badań anatomicznych na ludzki mózg składa się około 10 miliardów komórek nerwowych - neuronów, a sztuczna sieć (modelowana sieć) neuronowa w przeważającej większości posiada nie więcej niż kilkaset takich elementarnych "komórek" - sztucznych neuronów. Schematycznie sztuczny neuron przedstawia rys 1.


Rys. 1. Model sztucznego neuronu

Sztuczny neuron można zdefiniować w następujący sposób:

  • Do neuronu docierają pewne sygnały, czyli wartości wejściowe. Są to albo wartości pierwotne pochodzące z zewnątrz i służące do zadawania danych dla obliczeń wykonywanych przez sieć, albo są to sygnały już częściowo przetworzone i pochodzące z wyjść innych neuronów. Należy przy tym zauważyć, że każdy neuron posiada zależną od potrzeb liczbęn wejść i dokładnie jedno wyjście. Wejścia na rysunku oznaczone są jakou1 doup natomiast wyjście jakoy.
  • Wartości docierające do neuronu są przemnażane przez pewien współczynnik liczbowy zwany wagą synaptyczną (wi), która zazwyczaj dla każdego wejścia przyjmuje inną wartość, ustalaną w procesie uczenia.
  • Wyznaczenie zagregowanej wartości wejściowej w bloku sumacyjnym, będącej ważoną sumą wejść.
  • Zagregowana wartość wejściowa reprezentująca łączne pobudzenie neuronu przekształcana jest zazwyczaj przez ustaloną funkcję aktywacji neuronu (zwaną inaczej funkcją przejścia). W charakterze funkcji aktywacji może być zastosowanych wiele różnych funkcji matematycznych, jednak ze względu na tematykę artykułu omówienie ich nie jest konieczne.

Możliwości pojedynczego neuronu w zakresie przetwarzania informacji są stosunkowo niewielkie i z tego względu najczęściej stosowane są (podobnie jak w przypadku układów nerwowych organizmów żywych) połączone ze sobą grupy sztucznych neuronów (czyli sieci neuronowe), pozwalające na przeprowadzanie znacznie bardziej złożonych obliczeń.


Rys. 2. Struktura przykładowej sztucznej sieci neuronowej

Neurony wchodzące w skład sztucznej sieci neuronowej ułożone są najczęściej w warstwach. Wartości wyjściowe wyznaczone dla neuronów jednej warstwy wprowadzane są na wejścia neuronów warstwy następnej. Wyjątkiem jest tu warstwa pierwsza (zwanawarstwą wejściową) składająca się z neuronów, do których wejść doprowadzane są wartości zmiennych obserwowanych na zewnątrz sieci oraz warstwa ostatnia (wyjściowa), składająca się z neuronów wyznaczających wynik obliczeń traktowany jako wartość wyjściową całej sieci. Warstwy znajdujące się pomiędzy warstwą wejściową i wyjściową nazywane sąwarstwami ukrytymi, które wypracowują pewne dane pośrednie, będące podstawą dla procesu wyznaczania ostatecznego rozwiązania.

Sieć neuronowa w trakcie swojego działania przetwarza wprowadzone na jej wejścia wartości zmiennych wejściowych w wyniku czego uzyskiwane są na jej wyjściach wartości zmiennych wyjściowych. Sposób pracy sieci uzależniony jest od wielu czynników, do których należy zaliczyć przede wszystkim:

  1. Przyjęte modele neuronów - a więc wybrane dla neuronów sieci konkretne postacie funkcji agregującej i funkcji aktywacji; zwykle wszystkie neurony wchodzące w skład tej samej warstwy korzystają z takich samych formuł funkcji agregującej i funkcji aktywacji, natomiast w różnych warstwach stosowane są często neurony korzystające z różniących się formuł;
  2. Typ sieci neuronowej - Sieć uczona w trybie z nauczycielem (np. MLP, RBF), lub uczona w trybie bez nauczyciela (np. sieć Kohonena);
  3. Wartości współczynników wagowych neuronów - są one ustalane automatycznie w trakcie procesu uczenia i dlatego są różne dla poszczególnych wejść i dla poszczególnych neuronów;
  4. Liczba warstw sieci;
  5. Liczba neuronów w poszczególnych warstwach sieci;
  6. Przyjęty sposób połączeń neuronów.

Warunkiem koniecznym do właściwego funkcjonowania sieci jest poprawne określenie wszystkich wymienionych powyżej czynników.

Zanim zostaną pokazane możliwości prognostyczne sieci neuronowych na przykładzie Giełdy Papierów Wartościowych, co na pewno szczególnie interesuje czytelnika, parę słów na temat sposobów uczenia sieci neuronowych.

3. Uczenie sieci neuronowych

Pewne podobieństwa pomiędzy rzeczywistymi i sztucznymi sieciami neuronowymi można dostrzec nie tylko w ich budowie, ale również w sposobie pozyskiwania wiedzy niezbędnej do ich prawidłowego funkcjonowania. Proces pozyskiwania wiedzy przez sieć neuronową musi gwarantować możliwość późniejszego jej uogólniania w celu rozwiązania całego postawionego przed nią zadania (a nie tylko odtworzenia wiedzy zgromadzonej w tzw. zbiorze uczącym).

Proces przygotowania sieci do prawidłowego działania nazywany jest uczeniem. Sieć uczy się prawidłowo działać na podstawie prezentowanych jej przykładów. Bazując na przedstawionych rzeczywistych przypadkach sieć stara się odkryć i zapamiętać ogólne prawidłowości charakteryzujące te obiekty. Rozpoznane reguły sztuczna sieć neuronowa przechowuje w postaci rozproszonej w wartościach współczynników wagowych neuronów. Proces uczenia polega zatem na prawidłowym określeniu wartości współczynników wagowych neuronów na podstawie informacji wydobytych w trakcie procesu uczenia ze zbioru uczącego.

Kluczowym elementem w procesie uczenia są wagi wejść poszczególnych neuronów. Jeśli zmienią się wartości wag - neuron zacznie pełnić innego rodzaju funkcję w sieci, a co za tym idzie cała sieć zacznie inaczej działać. Uczenie sieci polega więc na tym, by tak dobrać wagi, aby wszystkie neurony wykonywały dokładnie takie czynności, jakich się od nich wymaga.

Uczenie sieci rozpoczyna się od nadania wagom neuronów wartości losowych. W każdym kroku iteracyjnego procesu uczenia wartości wag jednego lub kilku neuronów ulegają zmianie, przy czym reguły tych zmian są tak pomyślane, by każdy neuron sam potrafił określić, które ze swoich wag ma zmienić, w którą stronę, a także o ile. Możliwe są dwa warianty procesu uczenia:

  • z nauczycielem
  • bez nauczyciela.

Uczenie z nauczycielem polega na tym, że sieci podaje się przykłady poprawnego działania, które powinna ona potem naśladować w swoim bieżącym działaniu (w czasie egzaminu). Przykład należy rozumieć w ten sposób, że nauczyciel podaje konkretne sygnały wejściowe i wyjściowe, pokazując jaka jest wymagana odpowiedź sieci dla pewnej konfiguracji danych wejściowych. Mamy do czynienia z parą wartości - przykładowym sygnałem wejściowym i pożądanym (oczekiwanym) wyjściem, czyli wymaganą odpowiedzią sieci na ten sygnał wejściowy. Zbiór przykładów zgromadzonych w celu ich wykorzystania w procesie uczenia sieci nazywa się zwykle ciągiem uczącym. Zatem w typowym procesie uczenia sieć otrzymuje od nauczyciela ciąg uczący i na jego podstawie uczy się prawidłowego działania, stosując jedną z wielu znanych dziś strategii uczenia.

U podstaw większości algorytmów uczenia z nauczycielem leży reguła Delta wprowadzona przez Widrowa i Hoffa. Polega ona na tym, że każdy neuron po otrzymaniu na swoich wejściach określonych sygnałów, wyznacza swój sygnał wyjściowy, wykorzystując posiadaną wiedzę w postaci wcześniej ustalonych wartości współczynników wagowych wszystkich wejść oraz progu. Wartość sygnału wyjściowego, wyznaczonego przez neuron na danym kroku procesu uczenia, porównywana jest z odpowiedzią wzorcową podaną przez nauczyciela w ciągu uczącym. Jeśli występuje rozbieżność - neuron wyznacza różnicę pomiędzy swoim sygnałem wyjściowym a tą wartością sygnału, która byłaby - według nauczyciela - prawidłowa. Ta różnica oznaczana jest zwykle symbolem greckiej litery ? (delta) i stąd nazwa opisywanej metody.

Sygnał błędu (delta) wykorzystywany jest przez neuron do korygowania swoich współczynników wagowych, stosując następujące reguły:

  • wagi zmieniane są tym silniej, im większy błąd został wykryty;
  • wagi związane z tymi wejściami, na których występowały duże wartości sygnałów wejściowych, zmieniane są bardziej, niż wagi wejść, na których sygnał wejściowy był niewielki.

Znając zatem błąd popełniony przez neuron oraz jego sygnały wejściowe możemy łatwo przewidzieć, jak będą się zmieniać jego wagi.

Obok opisanego wyżej schematu uczenia z nauczycielem występuje też szereg metod tak zwanego uczenia bez nauczyciela (albo samouczenia sieci). Samouczenie jest też bardzo interesujące z punktu widzenia zastosowań, gdyż nie wymaga żadnej jawnie podawanej do sieci neuronowej zewnętrznej wiedzy, a sieć zgromadzi wszystkie potrzebne informacje i wiadomości. Jest to jedna z najpopularniejszych metod samouczenia sieci neuronowych. Uczenie bez nauczyciela polega na tym, że sieci pokazuje się kolejne przykłady sygnałów wejściowych, nie podając żadnych informacji o tym, co z tymi sygnałami należy zrobić. Sieć obserwuje otoczenie i odbiera różne sygnały. Nikt nie określa jednak, jakie znaczenie mają pokazujące się obiekty i jakie są pomiędzy nimi zależności. Sieć na podstawie obserwacji występujących sygnałów stopniowo sama odkrywa, jakie jest ich znaczenie i również sama ustala zachodzące między sygnałami zależności.

Po podaniu do sieci neuronowej każdego kolejnego zestawu sygnałów wejściowych tworzy się w niej pewien rozkład sygnałów wyjściowych - niektóre neurony sieci są pobudzone bardzo silnie, inne słabiej, a jeszcze inne mają sygnały wyjściowe wręcz ujemne. Interpretacja tych zachowań może być taka, że niektóre neurony "rozpoznają" podawane sygnały jako "własne" (czyli takie, które są skłonne akceptować), inne traktują je "obojętnie", zaś jeszcze u innych neuronów wzbudzają one wręcz "awersję".

Po ustaleniu sygnałów wyjściowych wszystkich neuronów w całej sieci - wszystkie wagi wszystkich neuronów są zmieniane, przy czym wielkość odpowiedniej zmiany wyznaczana jest na podstawie iloczynu sygnału wejściowego, wchodzącego na dane wejście neuronu i sygnału wyjściowego produkowanego przez neuron, w którym modyfikujemy wagi. Można to formalnie zapisać w postaci wzoru:

 (3.1)

przy czym:

gdzie: µ to współczynnik liczbowy decydujący o szybkości uczenia,y to rzeczywista odpowiedź neuronu na sygnałx. Podwójne górne indeksy przy współczynnikach wagowych  wynikają z faktu, że trzeba uwzględnić numerację neuronów, do których wagi te należą (m) oraz numerację kroków wynikającą z kolejnych pokazów.

W efekcie opisanego wyżej algorytmu połączenia między źródłami silnych sygnałów i neuronami które na nie silnie reagują są wzmacniane. Dokładniejsza analiza procesu samouczenia pozwala stwierdzić, że w wyniku konsekwentnego stosowania opisanego algorytmu początkowe, najczęściej przypadkowe "preferencje" neuronów ulegają systematycznemu wzmacnianiu i dokładnej polaryzacji. Jeśli jakiś neuron miał "wrodzoną skłonność" do akceptowania sygnałów pewnego rodzaju - to w miarę kolejnych pokazów nauczy się te sygnały rozpoznawać coraz dokładniej i coraz bardziej precyzyjnie. Po dłuższym czasie takiego samouczenia w sieci powstaną zatem wzorce poszczególnych typów sygnałów występujących na wejściu sieci. W wyniku tego procesu sygnały podobne do siebie będą w miarę postępu uczenia coraz skuteczniej grupowane i rozpoznawane przez pewne neurony, zaś inne typy sygnałów staną się "obiektem zainteresowania" innych neuronów. W wyniku tego procesu samouczenia sieć nauczy się, ile klas podobnych do siebie sygnałów pojawia się na jej wejściach oraz sama przyporządkuje tym klasom sygnałów neurony, które nauczą się je rozróżniać, rozpoznawać i sygnalizować.

Proces samouczenia ma niestety wady. W porównaniu z procesem uczenia z nauczycielem samouczenie jest zwykle znacznie powolniejsze. Co więcej bez nauczyciela nie można z góry określić, który neuron wyspecjalizuje się w rozpoznawania której klasy sygnałów. Stanowi to pewną trudność przy wykorzystywaniu i interpretacji wyników pracy sieci. Co więcej - nie można określić, czy sieć uczona w ten sposób nauczy się wszystkich prezentowanych jej wzorców. Dlatego sieć przeznaczona do samouczenia musi być większa niż sieć wykonująca to samo zadanie, ale trenowana w sposób klasyczny, z udziałem nauczyciela. Szacunkowo sieć powinna mieć co najmniej trzykrotnie więcej elementów warstwy wyjściowej niż wynosi oczekiwana liczba różnych wzorów, które sieć ma rozpoznawać.

Proces uczenia sieci uwalnia nas jednak od uciążliwego tworzenia i zapisywania (w określonym języku programowania) algorytmu wymaganego dla takiego przetwarzania wejściowych danych, by uzyskać pożądany wynik końcowy. Nie odbywa się to jednak za darmo, gdyż ceną, jaką trzeba zapłacić za tę wygodę jest długotrwały i wymagający sporych mocy obliczeniowych proces uczenia. Zwykle jednokrotna prezentacja wszystkich przypadków wchodzących w skład zbioru uczącego (czyli tzw. jedna epoka uczenia) nie wystarcza do osiągnięcia prawidłowego działania sieci. Dlatego też dane uczące prezentowane są wielokrotnie - często kilkaset, kilka tysięcy, albo nawet milionów razy. Co gorsza, proces uczenia jest zawsze procesem indeterministycznym, co oznacza, że wynik uczenia nie jest nigdy całkowicie pewny. Czasami ta sama sieć w tym samym zadaniu może uzyskiwać znacząco różne (co do jakości) rozwiązania postawionego problemu. Fakt ten powoduje, że dla osiągnięcia najlepszego możliwego wyniku proces uczenia trzeba niekiedy powtarzać kilkakrotnie, za każdym razem startując od innych wartości początkowych przyjętych dla współczynników wag. Jest to bardzo kłopotliwe, ale czasami bywa jedynym sposobem pokonania pojawiających się trudności. Na szczęście trudności te nie zawsze występują, co powoduje, że wśród użytkowników sieci neuronowe cieszą się opinią narzędzia sprawnego i wygodnego w użyciu.

1 2 3 »
pokaż artykuł w pełnej treści
bos bank logo
Grupa kapitałowa
Nagroda specjalna i tytuł BROKERA ROKU 2015
Nagroda specjalna i tytuł BROKERA
ROKU 2015, przyznane przez GPW.

logo_FMR2017aktualny.jpg Finansowa Marka Roku: wyrazista marka promująca edukację, umocnienie pozycji lidera rynku kontraktów terminowych.

nagroda najlepszy dom maklerski 2015
Najwyższa ocena dla DM BOŚ w ankiecie czytelników Gazety Giełdy Parkiet 2015r.