Wykorzystanie sztucznej inteligencji w prognozowaniu
dr Paweł Lula
Akademia Ekonomiczna w Krakowie

Spis treści:

Charakterystyka sieci neuronowych
Cechy modeli neuronowych
Etapy budowy neuronowego modelu szeregu czasowego
Wstępna analiza szeregów czasowych
Modele szeregów czasowych wykorzystujące perceptrony wielowarstwowe
Sieci Kohonena w analizie szeregów czasowych
Algorytm genetyczny jako narzędzie optymalizacji neuronowych modeli szeregów czasowych
Ocena neuronowych modeli szeregów czasowych
Prognozy przedziałowe
Wnioski końcowe


Charakterystyka sieci neuronowych

Sztuczny neuron
W prezentowanym opracowaniu przez sztuczną sieć neuronową rozumiana będzie technika obliczeniowa wzorowana na strukturze i sposobie działania układów nerwowych organizmów żywych. Sztuczna sieć neuronowa jest zespołem połączonych ze sobą elementów przetwarzających (neuronów). Sztuczny neuron (rys. 1) jest to model swojego rzeczywistego odpowiednika. Jego zasadniczym celem jest przetworzenie informacji wejściowej (dostarczanej w postaci wartości x1, x2, ..., xn) w wartość wyjściową y. Przyjmuje się, że zarówno wartości wprowadzane na wejścia neuronu, jak i uzyskiwana na jego wyjściu wartość wyjściowa, mają postać liczb rzeczywistych. Z każdym wejściem neuronu związany jest współczynnik zwany wagą. Współczynniki wagowe neuronu są podstawowymi parametrami wpływającymi na sposób funkcjonowania sztucznej komórki nerwowej. Przetwarzanie informacji przez sztuczny neuron składa się z dwóch etapów. Pierwszym z nich jest agregacja danych wejściowych, zaś drugim wyznaczenie wartości wyjściowej neuronu.


Rys. 1. Schemat sztucznego neuronu.

Agregacja danych wejściowych ma na celu przetworzenie wektora wejściowego x = (x1, x2, ..., xn) w pojedynczą wartość (zagregowaną wartość wejściową). Na rezultat tej transformacji w zasadniczy sposób wpływają wartości wag. Spośród wielu sposobów agregacji największą popularnością cieszy się wyznaczanie wartości zagregowanej poprzez zsumowanie iloczynów wartości wejściowych i odpowiadających im wag. W niektórych zastosowaniach stosowana jest inna formuła agregacji, prowadząca do obliczenia kwadratu odległości Euklidesa pomiędzy wektorem wejściowym x i wektorem wag w. Neurony wyposażone w pierwszy rodzaj funkcji agregującej nazywane są neuronami liniowymi, zaś te, które dokonują agregacji zgodnie z drugą z przedstawionych formuł, nazywane są neuronami radialnymi.

Drugim etapem w funkcjonowaniu neuronu jest wyznaczenie jego wartości wyjściowej. Elementem odpowiedzialnym za wykonanie tej czynności jest funkcja aktywacji. Jest to funkcja przekształcająca wyznaczoną wcześniej zagregowaną wartość wejściową w wartość wyjściową neuronu.


Rys. 2. Wykresy przykładowych funkcji aktywacji neuronu.

Najprostszym rodzajem funkcji aktywacji jest funkcja liniowa. Jej zastosowanie powoduje, że na wyjściu neuronu pojawia się zagregowana wartość wejściowa przemnożona przez pewien stały współczynnik. Bardzo dużą popularnością cieszą się dwie funkcje aktywacji określane jako funkcje s-kształtne (z uwagi na postać ich wykresów). Pierwszą z nich jest funkcja sigmoidalna o wartościach z przedziału od 0 do 1. Drugą funkcją jest funkcja tangensoidalna, której wykres (również przypominający spłaszczoną literę "s") rozciąga się w zakresie od minus do plus jedności. W niektórych zastosowaniach stosowane są gaussowskie funkcje aktywacji, które generują maksymalną wartość wyjściową dla zerowej wartości argumentu; zaś wraz ze zwiększaniem zagregowanej wartości wejściowej wartość wyjściowa tak funkcjonującego neuronu maleje Gaussowskie funkcje aktywacji stosowane są najczęściej łącznie z radialnymi funkcjami agregującymi, zaś funkcji liniowej lub s-kształtnej towarzyszy zwykle liniowa formuła agregacji.

Struktura i sposób działania sztucznej sieci neuronowej
Sztuczna sieć neuronowa jest zespołem połączonych ze sobą neuronów (rys. 3).


Rys. 3. Przykładowa sztuczna sieć neuronowa.

Zwykle neurony wchodzące w skład sieci tworzą warstwy, z których pierwsza nosi nazwę warstwy wejściowej, ostatnia warstwy wyjściowej, zaś wszystkie warstwy znajdujące się pomiędzy nimi określane są jako warstwy ukryte. Wartości wejściowe sieci wprowadzane są na wejścia neuronów warstwy wejściowej. Następnie, poprzez istniejące połączenia, wartości wyjściowe neuronów jednej warstwy przekazywane są na wejścia elementów przetwarzających kolejnej warstwy. Wartości uzyskane na wyjściach neuronów ostatniej warstwy są jednocześnie wartościami wyjściowymi sieci.

Prawidłowo skonstruowana sieć neuronowa może służyć do rozwiązywania wielu typów zagadnień. Do najpopularniejszych zastosowań sieci należy zaliczyć budowane przy ich wykorzystaniu modele rozwiązujące problemy regresyjne, klasyfikacyjne oraz prognostyczne. W problemach regresyjnych użytkownik modelu neuronowego oczekuje, że posiadana przez niego sieć będzie w stanie opisywać zależności pomiędzy zmiennymi, przy czym zakłada się, że zmienna objaśniana (zmienne objaśniane) mają charakter ciągły. W problemach klasyfikacyjnych sieć neuronowa stanowi narzędzie umożliwiające zaklasyfikowanie badanych obiektów do właściwych klas. Jeżeli wzorce klas są znane przed rozpoczęciem badań, to rozwiązywany problem określany jest mianem klasyfikacji wzorcowej, w przeciwnym przypadku rozwiązywane zagadnienie jest przykładem problemu klasyfikacji bezwzorcowej. W problemach klasyfikacyjnych informacja wyjściowa sieci zwykle ma postać zmiennej nominalnej, której poszczególne wartości reprezentują klasy, do których przypisywane są obiekty. W problemach prognostycznych celem stosowania modeli neuronowych jest wyznaczenie przyszłej wartości szeregu czasowego. Sieć rozwiązująca zagadnienia tego typu korzysta z bieżących oraz przeszłych wartości tego samego szeregu jak również z bieżących i przeszłych wartości innych zmiennych.

Sposób funkcjonowania sieci neuronowej, gwarantujący prawidłowe rozwiązywanie postawionych przed nią problemów, uzależniony jest od dwóch podstawowych czynników:

Proces mający na celu określenie prawidłowych wartości parametrów sieci (wag, struktury sieci) nazywany jest uczeniem sieci neuronowej. Uczenie sieci jest niezbędnym elementem procesu konstrukcji modelu neuronowego. Proces uczenia realizowany jest przy wykorzystaniu dostępnych zestawów danych, które ilustrują przebieg badanych zjawisk dla wybranych obiektów i/lub przeszłych okresów czasu. W trakcie uczenia na wejścia sieci wprowadzane są zgromadzone wartości i obserwowane jest towarzyszące tej operacji zachowanie sieci. Jeżeli zachowanie sieci nie może zostać uznane za w pełni poprawne, to przeprowadzana jest modyfikacja parametrów sieci mająca na celu poprawę jej funkcjonowania. Sposób przeprowadzenia modyfikacji określany jest przez zastosowany algorytm uczenia sieci.

Istnieją dwa podstawowe sposoby przeprowadzania uczenia sieci. Są nimi uczenie z nauczycielem oraz uczenie bez nauczyciela.

W przypadku uczenia z nauczycielem zbiór uczący zawiera zarówno wartości zmiennych wejściowych jak i odpowiadające im wartości zmiennej (lub zmiennych) wyjściowych. Idea uczenia z nauczycielem przedstawiona została na rys. 4. Po wprowadzeniu poprzez neurony wejściowe wartości zmiennych wejściowych wyznaczana jest odpowiedź sieci. Uzyskana w ten sposób wartość porównywana jest z rzeczywistą wartością przechowywaną w zbiorze uczącym. Jeśli porównywane wartości nie są równe, to parametry sieci (wagi) modyfikowane są w taki sposób, aby odpowiedź sieci upodobniła się do wartości rzeczywistej.


Rys. 4. Uczenie z nauczycielem.

Tryb uczenia z nauczycielem stosowany jest przede wszystkim do konstrukcji sieci rozwiązujących problemy regresyjne, klasyfikacji wzorcowej oraz prognostyczne. Proces uczenia wymaga zwykle wielokrotnej prezentacji wzorców uczących i odpowiadającej im modyfikacji wag. Jednokrotna prezentacja wszystkich wzorców uczących nazywana jest epoką uczenia. Osoba tworząca sieć ocenia przebieg uczenia obserwując zmiany w wartości błędu uczenia (rys. 5), który określa stopień niedopasowania wartości rzeczywistych i teoretycznych w sposób zagregowany dla całego zbioru uczącego.


Rys. 5. Wykres błędu uczenia.

Wartości znajdujące się na osi OX określają kolejne epoki uczenia. Rysowana na wykresie krzywa prezentuje zmiany w wartości błędu. W trakcie poprawnej realizacji uczenia poziom błędu powinien się zmniejszać.

Stosując uczenie bez nauczyciela (rys. 6) wykorzystuje się zbiór uczący obejmujący wyłącznie wartości zmiennych wejściowych. W tym przypadku zbiór uczący nie zawiera żadnych informacji na temat wartości pożądanych na wyjściach sieci. Celem uczenia jest osiągnięcie przez sieć stanu równowagi.


Rys. 6. Uczenie bez nauczyciela.

Uczenie bez nauczyciela wykorzystywane jest głównie przy tworzeniu modeli rozwiązujących zagadnienia klasyfikacji bezwzorcowej. W trakcie uczenia sieć musi rozpoznać strukturę zbioru danych i przypisać poszczególne przypadki do właściwych klas. Uczenie kończy się w chwili, gdy w trakcie kolejnych prezentacji przypadków uczących nie zachodzą zmiany w sposobie przyporządkowania obiektów do właściwych grup. Brak w zbiorze uczącym informacji dotyczących rzeczywistych wartości zmiennej wyjściowej uniemożliwia wyznaczenie błędu poprzez porównanie wyniku działania sieci z odpowiednią wartością pochodzącą ze zbioru uczącego. Stosowana w tym przypadku definicja błędu określa w jakim stopniu zastosowana sieć jest w stanie opisać strukturę zbioru uczącego (w tym celu porównuje się wektory wejściowe z odpowiadającymi im wektorami współczynników wagowych).

Przedstawiona charakterystyka stosowanych trybów uczenia sieci neuronowych wskazuje, że w zagadnieniach modelowania i prognozowania stosowane będą sieci konstruowane w trybie z nauczycielem, gdyż stanowią one dogodne narzędzie opisu zależności pomiędzy różnymi zmiennymi lub pomiędzy oddalonymi w czasie wartościami tej samej zmiennej. Utworzenie prawidłowo funkcjonującego modelu wymaga zastosowania właściwie przygotowanej sieci. Niestety, wyznaczany w trakcie treningu błąd uczenia nie może stanowić podstawy do oceny sieci, gdyż jego wartość może zostać sprowadzona do dowolnie niskiego poziomu poprzez rozbudowę części ukrytej sieci. Zwiększanie liczby neuronów ukrytych ma również swoje wady - zwiększa liczbę parametrów sieci szacowanych w czasie uczenia, co często w istotny sposób wpływa na czas treningu. Jednakże najpoważniejszą konsekwencją stosowania zbyt rozbudowanych struktur sieciowych jest możliwość utraty przez sieć zdolności do generalizacji. Zdolność do generalizacji przejawia się w posiadanej przez sieć umiejętności wyznaczania prawidłowych odpowiedzi dla takich danych wejściowych, które nie były prezentowane w trakcie uczenia. Umiejętność ta jest najwartościowszą cechą sieci neuronowej. Znaczenie generalizacji ilustrować może zamieszczony przykład numeryczny. Załóżmy, że chcemy opisać zależność zachodzącą pomiędzy zmienną X1 i X2 przy pomocy sieci neuronowej. Podstawą do przeprowadzenia uczenia sieci jest zbiór uczący składający się z przykładowych realizacji tej zależności (rys. 7).


Rys. 7. Przykładowy zestaw danych.

Oczekujemy, że sieć skonstruowana na podstawie zbioru uczącego posiadać będzie zdolność do generalizacji, która przejawiać się będzie w tym, że wyniki obliczone przez sieć będą poprawne nie tylko dla tych wartości zmiennej X1, które wystąpiły w zbiorze uczącym, ale również dla tych, które nie były wprowadzane na wejścia w trakcie uczenia (które znajdują się pomiędzy wartościami reprezentowanymi w zbiorze uczącym). Rezultat działania takiej sieci przedstawiono na rys. 8 w postaci linii ciągłej. Wyraźnie widoczna jest zdolność do generalizacji przejawiająca się generowaniem sensownych danych wyjściowych dla wartości X1 nie należących do zgromadzonego zestawu danych.


Rys. 8. Model posiadający zdolność do generalizacji.

Jeżeli w wyniku zbytniego zwiększenia liczby neuronów ukrytych sieć utraci zdolność do generalizacji, to będzie ona prawidłowo pracować po wprowadzeniu wartości wejściowych występujących w zbiorze uczącym, lecz będzie jednocześnie generować całkowicie błędne wartości zmiennej X2 odpowiadające tym wartościom X1, które nie były reprezentowane w zgromadzonym zbiorze danych. Przykład takiego działania sieci przedstawia rys. 9.


Rys. 9. Model nie posiadający zdolności do generalizacji.

Postępujący w trakcie uczenia sieci zanik zdolności do generalizacji nazywany jest przeuczeniem sieci. W przypadku wystąpienia tego zjawiska kontynuacja uczenia prowadzi wprawdzie do zmniejszania się błędu sieci wyznaczonego na podstawie zbioru uczącego, ale towarzyszy temu coraz gorsze działanie sieci dla danych nie należących do zbioru uczącego (rys. 10).


Rys. 10. Efekt przeuczenia sieci (linia dolna - błąd dla zbioru uczącego, linia górna - błąd dla danych nie uczestniczących w procesie uczenia).

Z uwagi na negatywny wpływ przeuczenia na funkcjonowanie sieci należy wzbogacić procedurę uczenia o mechanizm odpowiedzialny za wczesne wykrycie zaniku zdolności do generalizacji. Sygnały o przeuczeniu nie mogą być generowane w oparciu o miary jakości sieci wyznaczone na podstawie zbioru uczącego, gdyż te wskazują w takiej sytuacji na coraz lepsze dopasowanie sieci do danych. Podstawą do uzyskania informacji o przeuczeniu muszą być mierniki wyznaczone na podstawie danych nie prezentowanych w trakcie uczenia. Aby umożliwić takie działania dostępny zbiór danych dzielony jest na trzy części: omówiony już zbiór uczący (prezentowany sieci w trakcie uczenia i służący do modyfikacji wartości parametrów), zbiór walidacyjny (pozwalający na monitorowanie procesu uczenia sieci) oraz zbiór testowy (służący do przeprowadzenia ostatecznej oceny uzyskanej sieci). Mechanizm wykrywający przeuczenie sieci korzysta ze zbioru walidacyjnego. Po zakończeniu każdej epoki uczenia wyznaczany jest błąd sieci na podstawie przypadków wchodzących w skład tego zbioru. Nie są one prezentowane w trakcie uczenia i nie wpływają na modyfikację wag i dzięki temu pozwalają na ocenę posiadanej przez sieć zdolności do generalizacji. O przeuczeniu sieci możemy mówić wówczas, gdy błąd wyznaczony na podstawie zbioru uczącego zmniejsza się w kolejnych epokach, zaś błąd walidacyjny w początkowej fazie uczenia maleje, ale następnie zaczyna zwiększać swoją wartość. Zwiększanie się wartości błędu walidacyjnego świadczy o zbytnim dopasowywaniu się sieci do punktów uczących i o utracie zdolności do uogólniania zdobytej wiedzy. Zaobserwowanie świadczącego o przeuczeniu sieci wzrostu wartości błędu walidacyjnego może stanowić sygnał do przerwania uczenia, modyfikacji struktury sieci polegającej na zmniejszeniu liczby neuronów ukrytych i ponownym zapoczątkowaniu treningu.

W trakcie uczenia sieci o prawidłowo dobranej strukturze wartość błędu uczenia i błędu walidacyjnego powinna zmniejszać się w kolejnych epokach. Poziom błędu walidacyjnego jest zwykle nieznacznie wyższy od wartości błędu uczenia wyznaczonego w tej samej epoce. Jeśli oba błędy pozostają na wysokim poziomie, to może to wskazywać na potrzebę modyfikacji struktury sieci polegającej na zwiększeniu liczby neuronów ukrytych.

Problem określania struktury należy do najtrudniejszych zadań stojących przed konstruktorem sieci. Jego prawidłowe rozwiązanie wymaga wiedzy i doświadczenia. Często niezbędne staje się przeprowadzenie szeregu eksperymentów badawczych. Bardzo pomocne są w tym zakresie odpowiednio skonstruowane programy komputerowe, które w oparciu o zaimplementowane heurystyki i przeprowadzone eksperymenty proponują właściwą strukturę sieci.

Po przeprowadzeniu uczenia, w wyniku którego błędy dla zbioru uczącego i walidacyjnego osiągnęły akceptowalny przez użytkownika poziom przeprowadza się ponowną weryfikację modelu. Tym razem polega ona na obliczeniu miar dopasowania sieci do danych wchodzących w skład zbioru testowego. Niski poziom wyznaczonego błędu potwierdza poprawność działania sieci, zaś uzyskanie wysokiej wartości stanowi poważny sygnał ostrzegawczy i może świadczyć o potrzebie powtórzenia procesu konstrukcji i uczenia sieci.

Perceptrony wielowarstwowe
Jednokierunkowe sieci wielowarstwowe (perceptrony wielowarstwowe, sieci MLP - MultiLayer Perceptrons) należą do najlepiej poznanych i najczęściej wykorzystywanych architektur sieciowych. Do podstawowych własności jednokierunkowych sieci wielowarstwowych (rys. 11) należy zaliczyć:


Rys. 11. Przykładowy perceptron wielowarstwowy.

Charakteryzując proces uczenia perceptronów wielowarstwowych, należy zauważyć, że: Modele oparte na jednokierunkowych sieciach wielowarstwowych mają oszczędną strukturę, co powoduje, że czas ich uruchamiania jest krótki i że wymagają niewielkich obszarów pamięci. Do podstawowych problemów pojawiających się w trakcie ich konstrukcji należy zaliczyć dobór właściwej struktury (liczba warstw i liczba neuronów w warstwach ukrytych) oraz unikanie minimów lokalnych funkcji błędu w trakcie uczenia. Perceprony wielowarstwowe posiadają zdolność do ekstrapolacji, co w zależności od charakteru rozwiązywanego problemu można uznać za zaletę lub wadę.

Sieci Kohonena Sieć zaproponowana przez T. Kohonena ma bardzo prostą strukturę (rys. 12). W skład sieci tego typu wchodzą dwie warstwy neuronów: warstwa wejściowa i warstwa wyjściowa. Występujące w sieci połączenia mają charakter każdy z każdym. Sieć Kohonena charakteryzuje się jednokierunkowym przepływem informacji: od warstwy wejściowej do warstwy wyjściowej. Specyficzną cechą sieci Kohonena jest zaproponowany przez jej twórcę sposób uporządkowania neuronów warstwy wyjściowej. Zwykle nie są one uporządkowane liniowo (jak w sieci perceptronowej), lecz rozlokowane są w różnych punktach dwuwymiarowej płaszczyzny. Najprostsze rozwiązanie polega na umieszczeniu neuronów w polach znajdujących się na przecięciu kolejnych wierszy i kolumn wyznaczonych na płaszczyźnie. Rysunek 13 przedstawia schemat warstwy wyjściowej sieci Kohonena składającej się z 64 neuronów, rozmieszczonych na przecięciu ośmiu wierszy i ośmiu kolumn.


Rys. 12. Sieć Kohonena.


Rys. 13. Schemat warstwy wyjściowej sieci Kohonena.

Na sposób uczenia i funkcjonowania sieci Kohonena w istotny sposób wpływa pojęcie sąsiedztwa, które odnosi się do neuronów warstwy wyjściowej. Sąsiedztwo danego neuronu rozumiane jest jako zbiór sąsiadujących z nim neuronów. Podstawowym parametrem sąsiedztwa jest jego promień. Wraz ze wzrostem jego wartości zwiększa się zasięg sąsiedztwa, a tym samym liczba neuronów uznawanych za sąsiadów. Rysunek 14 prezentuje sąsiedztwo neuronu znajdującego się na przecięciu czwartego wiersza z trzecią kolumną (neuron ten zaznaczony jest ciemnym kolorem). Jego sąsiedztwo o promieniu równym jedności obejmuje neurony bezpośrednio z nim sąsiadujące (osiem neuronów zaznaczonych ciemnoszarym kolorem). Natomiast sąsiedztwo o promieniu równym dwa obejmuje wszystkie neurony wchodzące w skład sąsiedztwa o promieniu 1 oraz wszystkie neurony sąsiadujące z neuronami tworzącymi sąsiedztwo o jednostkowym promieniu (na rysunku zostały one zaznaczone jasnoszarym kolorem). W podobny sposób można definiować sąsiedztwa o większym promieniu. Natomiast w skład sąsiedztwa o promieniu równym zero wchodzi tylko jeden neuron - ten, dla którego wyznaczane jest to sąsiedztwo (czyli tzw. neuron centralny).


Rys. 14. Neuron centralny (zaciemniony obszar mapy) i jego sąsiedztwa o promieniu równym jeden (kolor ciemnoszary) i dwa (kolor jasnoszary).

Każdy neuron wyjściowy posiada wektor wag, w którym liczba elementów jest równa liczbie neuronów wchodzących w skład warstwy wejściowej. W trakcie funkcjonowania sieci wektor wartości wejściowych (obejmujący wartości wyjściowe neuronów pierwszej warstwy) porównywany jest z wektorem wag każdego neuronu wyjściowego. Porównanie to realizowane jest zwykle poprzez obliczenie kwadratu odległości Euklidesa pomiędzy wspomnianymi wektorami (funkcję tę realizuje radialna funkcji agregacji). Neuron wyjściowy, dla którego tak zdefiniowany miernik przyjmuje wartość najmniejszą, posiada wagi najbardziej zbliżone do wektora wejściowego i określany jest jako neuron zwycięski.

Uczenie sieci Kohonena odbywa się bez nauczyciela. Podstawą uczenia jest zbiór uczący, którego każdy element jest wektorem o liczbie elementów odpowiadającej liczbie neuronów w warstwie wejściowej sieci. W początkowej fazie uczenia wagi przyjmują wartości równe niewielkim liczbom losowym. Po prezentacji wzorca uczącego obliczana jest odległość pomiędzy wartościami wejściowymi a wagami kolejnych neuronów warstwy wyjściowej (odległość ta najczęściej jest wyrażana przy pomocy formuły Euklidesa lub jako iloczyn skalarny wektora wejściowego i wektora wag; w tym drugim przypadku konieczne jest wcześniejsze unormowanie wektorów wejściowych). Wartości te są wzajemnie porównywane i wyznaczany jest neuron zwycięski, którego wagi są w największym stopniu zbliżone do wektora wejściowego. Następnie wagi neuronu zwycięskiego są modyfikowane w sposób zapewniający jeszcze większe ich upodobnienie do wektora wejściowego.

Cechą charakterystyczną sieci Kohonena jest to, że proces modyfikacji wag neuronu przeprowadzany jest nie tylko dla neuronu zwycięskiego, ale również dla wszystkich neuronów wchodzących w obręb sąsiedztwa zwycięzcy.

Proces uczenia prowadzi do utworzenia mapy topograficznej. Posiada ona zdolność odwzorowywania zależności zachodzących pomiędzy obiektami - obiektom podobnym odpowiada ten sam obszar (neuron) na mapie lub obszary położone blisko siebie. Obiekty znacznie różniące się od siebie powodują uaktywnienie neuronów znajdujących się w odległych od siebie obszarach mapy.

Powrót do spisu treści


Cechy modeli neuronowych

Sztuczne sieci neuronowe posiadają szereg cech, dzięki którym mogą stanowić przydatne narzędzie modelowania i prognozowania szeregów czasowych. O przydatności modeli neuronowych do badania rozwoju zjawisk w czasie decydują przede wszystkim następujące fakty:

1. Zależności występujące w znacznej liczbie szeregów czasowych mają charakter nieliniowy, co stanowi podstawową przesłankę do tego, aby do ich modelowania stosować modele nieliniowe. Jednym z narzędzi spełniających ten warunek są jednokierunkowe sieci neuronowe. Posiadają one zdolności do aproksymacji dowolnych zależności nieliniowych jak również charakteryzują się zdolnościami generalizującymi.

2. Proces budowy modelu neuronowego polega na eksploracji dostępnych zbiorów danych i oszacowaniu na tej podstawie modelu opisującego stwierdzone prawidłowości. Stosowanie modeli tego typu nie wymaga znajomości postaci funkcji opisującej istniejącą prawidłowość. W związku z tym modele neuronowe mogą znaleźć zastosowanie wszędzie tam, gdzie nie jest znane dokładne prawo opisujące kształtowanie się badanych zależności. Nie wyklucza to możliwości stosowania sieci w przypadkach, gdy znana jest postać formuł matematycznych opisujących badany aspekt rzeczywistości, ale wówczas nakłady związane z oszacowaniem modelu sieciowego mogą być wyższe niż nakłady niezbędne do obliczenia parametrów danego w postaci równania prawa.

3. Modele neuronowe mają charakter adaptacyjny. Mogą służyć do opisu zależności zmieniających się w czasie. W chwili pojawienia się nowych danych przeprowadzony może zostać proces douczenia sieci, co umożliwia uwzględnienie w tworzonym modelu informacji zawartych w najnowszych obserwacjach.

4. Sieć neuronowa może być traktowana nie tylko jako mechanizm opisujący przebieg zjawiska i generujący przyszłe jego wartości. Daje ona możliwości przeprowadzania wszechstronnej analizy badanego fragmentu rzeczywistości. Podstawowe informacje o systemie uzyskać można poprzez zastosowanie analizy wrażliwości modelu. Pozwala ona na przedstawienie charakteru związku pomiędzy badaną wielkością a poszczególnymi wpływającymi na nią czynnikami. Istniejące metody analizy pozwalają przy wykorzystaniu modelu neuronowego dokładnie analizować zjawisko we wszelkich wybranych przez badacza układach.

Stosowanie modeli neuronowych nie zawsze jest uzasadnione. Modele tego typu nie powinny być stosowane wtedy, gdy:

1. badacz nie dysponuje odpowiednią liczbą obserwacji mogących stanowić podstawę do oszacowania modelu. Szacowanie sieci posiadających stosunkowo dużą liczbę parametrów na podstawie nielicznego zbioru uczącego prowadzi najczęściej do powstania modeli dopasowujących się do danych uczących, ale nie posiadających zdolności do opisu ogólnych prawidłowości istniejących w danych.

2. trudno znaleźć uzasadnienie dla stosowania modeli neuronowych w sytuacji, w której znany jest charakter występującej prawidłowości (np. znana jest postać funkcji opisującej analizowane zjawisko). W takim przypadku oszacowanie parametrów funkcji pociąga za sobą mniejsze nakłady i prowadzi do powstania modelu łatwiejszego w interpretacji.

Nawet wówczas, gdy spełnione są warunki uzasadniające stosowanie modeli neuronowych należy pamiętać, że oprócz zalet posiadają one również pewne słabe strony, mogące przyczyniać się do powstawania problemów na etapie budowy modelu. Do najistotniejszych minusów sieci neuronowych należy zaliczyć:

1. potrzeba odpowiedniego przygotowania danych - uzależniona od charakteru zmiennych i zastosowanego rodzaju sieci,

2. problemy związane z doborem właściwej struktury modelu neuronowego (rodzaj sieci, przyjęte modele neuronu, liczba neuronów i sposób ich połączenia),

3. konieczność wyboru właściwego algorytmu uczenia sieci,

4. wysokie nakłady czasowe związane z oszacowaniem modelu neuronowego,

5. brak (w większości przypadków) możliwości bezpośredniej interpretacji poszczególnych współczynników modelu neuronowego.

Powrót do spisu treści


Etapy budowy neuronowego modelu szeregu czasowego

Proces budowy neuronowego modelu szeregu czasowego ma charakter wieloetapowy. Składa się z kilku następujących po sobie etapów, z których pierwszy obejmuje wstępną analizę danych, kolejny polega na skonstruowaniu sieci neuronowej (lub kilku sieci neuronowych), zaś ostatni związany jest z oceną uzyskanego modelu.

Wstępna analiza danych (zwana również preprocessingiem) obejmuje te czynności, które poprzedzają proces konstrukcji i uczenia sieci. Zakres wykonywanych operacji obejmuje badanie poprawności i jednorodności danych, operacjonalizację danych, redukcję zbioru zmiennych wejściowych, dekompozycję szeregu pierwotnego, zdefiniowanie sposobu reprezentacji danych jakościowych oraz skalowanie danych.

Proces konstrukcji sieci obejmuje prace związane z zaprojektowaniem struktury i uczeniem sieci opisującej zależności w szeregu powstałym w czasie wstępnej analizy danych. Jeżeli na etapie preprocessingu przeprowadzono dekompozycję danych, to należy stworzyć oddzielne sieci do opisu zależności występujących we wszystkich wyodrębnionych składowych, oraz zdefiniować sposób agregacji wyników dostarczanych przy pomocy tak skonstruowanych modeli cząstkowych.

Ostatnim etapem procesu konstrukcji modelu szeregu czasowego jest jego ocena. Ocena powinna obejmować zarówno analizę posiadanych przez model zdolności aproksymujących jak i umiejętności generalizacji zgromadzonej wiedzy. Zastosowany system mierników jakości modelu powinien być uzależniony od funkcji, jaką model ma spełniać.

Wymienione powyżej zasadnicze etapy budowy neuronowego modelu szeregu czasowego czasami realizowane są więcej niż jeden raz. Sytuacja taka ma miejsce wówczas, gdy podjęta próba realizacji kolejnej fazy modelowania kończy się niepowodzeniem. Wówczas należy zwykle powtórzyć (wszystkie lub tylko wybrane) wcześniej zrealizowane kroki analizy.

Powrót do spisu treści


Wstępna analiza szeregów czasowych

Przed rozpoczęciem budowy modelu szeregu czasowego i przed jego prognozowaniem zgromadzone dane poddawane są analizie wstępnej (ten etap prac określany jest również mianem preprocessingu). Wstępna analiza danych obejmuje m.in.:

Wymienione etapy wstępnej analizy danych będą tematem kolejnych punktów bieżącego rozdziału. Wyjątkiem będzie zagadnienie redukcji zbioru danych wejściowych, które zostanie omówione w punkcie poświęconym algorytmom genetycznym.

Badanie poprawności danych
Stworzenie prawidłowo funkcjonującego modelu wymaga wykorzystania poprawnych danych. Realizowane na etapie preprocessingu badanie poprawności ma na celu identyfikację i wyeliminowanie wartości błędnych. W większości przypadków pełne zagwarantowanie poprawności nie jest możliwe, zaś przeprowadzenie procedury weryfikującej ma na celu minimalizację prawdopodobieństwa wystąpienia błędów lub braków w danych.

Najlepszym sposobem zwiększenia wiarygodności danych jest porównanie informacji pochodzących z kilku niezależnych źródeł. Jednakże sposób weryfikacji bazujący na alternatywnym źródle danych nie zawsze jest możliwy do realizacji, a jego stosowanie związane jest zwykle ze znacznym zwiększeniem nakładów czasowych i finansowych. Ten sposób weryfikacji nie gwarantuje również wykrycia błędów powstałych na etapie pomiaru danych.

Duża część metod badania poprawności danych szczególną uwagę przywiązuje do wartości nietypowych, a więc tych, które w znaczny sposób odbiegają od wartości charakterystycznych dla analizowanej zmiennej. Mechaniczne odrzucenie wartości nietypowych nie musi być poprawne, gdyż wśród nich mogą się znaleźć zarówno wartości błędne jak i anomalie, które mimo swojej niezgodności z typowymi wartościami są zgodne z rzeczywistością i wymagają specyficznego sposobu ujęcia w modelu.

Do podstawowych metod identyfikacji wartości nietypowych można zaliczyć: metody graficzne pozwalające na wizualną ocenę szeregu, przekształcenia szeregu ułatwiające wykrycie nietypowych zachowań (np. różnicowanie), analizę reguł sterujących funkcjonowaniem systemu generującego dane i podjęcie próby ich weryfikacji na podstawie dostępnych obserwacji (np. sprawdzenie, czy kolejne ceny akcji są zgodne z obowiązującymi regułami określającymi maksymalne zmiany cen).

Po wykryciu wartości błędnych należy podjąć decyzję dotyczącą sposobu ich traktowania. Do najpopularniejszych możliwości w tym zakresie należy zaliczyć: zastąpienie błędnej wartości wartością pochodzącą z alternatywnego źródła danych (jest najlepszy sposób postępowania, ale nie zawsze możliwy do realizacji), zastąpienie błędnej wartości wartością oszacowaną (należy pamiętać, że wartość oszacowana odbiega zwykle od wartości rzeczywistej) oraz pominięcie wartości błędnej (w przypadku szeregów czasowych takie postępowanie nie zawsze jest możliwe, gdyż usunięcie pojedynczej obserwacji może prowadzić do zaburzenia informacji określającej przebieg badanego zjawiska).

Bardzo trudnym problemem jest również zagadnienie braków danych. W przypadku szeregów czasowych wartości brakujących zwykle nie można pominąć, gdyż może to znacznie utrudnić późniejszą identyfikację występujących prawidłowości. Podobnie jak w przypadku wartości błędnych, najczęściej zaleca się zastąpienie braków wartościami pochodzącymi z innych źródeł lub wartościami oszacowanymi.

Badanie jednorodności danych
Kolejnym etapem wstępnej analizy danych jest badanie ich jednorodności. Przeprowadzona procedura badawcza ma na celu określenie, czy wszystkie zgromadzone przypadki tworzą jednorodną strukturę, czy też tworzą wyraźnie wyodrębnione klasy.

Najprostszą, a jednocześnie bardzo skuteczną, metodą badania jednorodności jest wzrokowa analiza wykresów rozrzutu danych. Naniesione na wykres punkty pozwalają ocenić stopień jednorodności danych. Graficzna prezentacja przypadków uczących może zostać utrudniona przez wysoki wymiar przestrzeni danych. W takich sytuacjach należy wpierw dokonać redukcji liczby zmiennych opisujących wyróżnione przypadki.

Nie spełnienie warunku jednorodności może przejawiać się przez:

W przypadku stwierdzenia niejednorodności zbioru danych wejściowych możliwe są następujące strategie postępowania: Każde z tych podejść ma swoje wady i zalety. Podział danych na jednorodne grupy i budowa modelu dla każdej z nich prowadzi do wykorzystania mniejszych sieci, które szybciej się uczą i generują mniejsze błędy. Wadą modeli tego typu jest niewykorzystanie informacji wynikających z łącznego rozpatrywania obiektów należących do różnych grup wydzielonych ze względu na wymóg jednorodności. Wada ta nie ujawnia się w sytuacji, gdy budowany jest jeden model na podstawie całego zestawu danych. Ale w takim przypadku model może nie opisywać pewnych zachowań o mniejszym nasileniu, wymaga zastosowania dużych sieci co pociąga za sobą dodatkowe problemy związane z doborem odpowiedniej struktury sieci i jej uczeniem. Nie można jednoznacznie powiedzieć, które z prezentowanych podejść jest lepsze. Jest to uzależnione od konkretnego przypadku zastosowań.

Operacjonalizacja danych
Operacjonalizacja szeregu czasowego polega na przekształceniu jego wartości w sposób pozwalający na wyeksponowanie pewnych, istotnych z punktu widzenia celu analizy, cech charakterystycznych szeregu.

Operacjonalizacja danych mających postać szeregów czasowych może polegać na przekształceniu wartości pierwotnych szeregu do postaci:

1. szeregu różnic,

2. szeregu wartości -1, 0, +1, które reprezentują kolejno wartości ujemną, równą zero i dodatnią,

3. szeregu różnic względnych o postaci gdzie q może być równe wartości x w okresie t-1 lub w okresie początkowym 0 lub też odchylenie standardowe z szeregu różnic xt-xt-1; obliczone w ten sposób wartości określane są jako przyrosty względne,

4. szeregu wartości (indeksy dynamiki),

5. logarytmów naturalnych z wartości szeregu xt,

6. logarytmów naturalnych z indeksów dynamiki,

7. pierwiastków kwadratowych lub sześciennych z wartości szeregu,

8. współczynników udziału okresów wyrażanych jako iloraz wartości szeregu w danym okresie i sumy wartości obliczonej dla wszystkich okresów.

Oprócz wymienionych powyżej uniwersalnych metod operacjonalizacji szeregów czasowych zastosować można również metody przekształceń specyficzne dla rozpatrywanej dziedziny zastosowań. W przypadku finansowych szeregów czasowych przydatnym narzędziem przekształcania danych może być wyznaczenie wartości wskaźników technicznych. Dobór odpowiednich wskaźników uzależniony jest w dużym stopniu od celu prowadzonych obliczeń.

Zastosowanie wskaźników technicznych zilustrowane zostanie opisem przekształceń dokonanych na przykładowym szeregu czasowym składającym się ze stu wartości indeksu WIG pochodzących z kolejnych sesji giełdowych w okresie od 12 listopada 1991 do 1 grudnia 1992 roku (rys. 15).

Szereg czasowy określający kształtowanie się indeksu WIG stał się podstawą do wyznaczenia trzech (wybranych w sposób arbitralny) wskaźników technicznych: ROC, MACD i oscylator stochastyczny. Wartości wskaźników technicznych mogą trafniej niż dane pierwotne reprezentować pewne cechy szeregu (poziom, kierunek zmian /trend/, tempo zmian).


Rys. 15. Kształtowanie się indeksu WIG w okresie od 12.XI.1991 do 1.XII.1992.

Wskaźnik ROC (Rate of Change, wskaźnik zmian) porównuje bieżącą wartość szeregu z wartością pochodzącą sprzed n okresów. Obliczanie jego wartości odbywa się zgodnie ze wzorem:

Uzyskanie wartości wskaźnika równej jedności świadczy o braku zmian w wartościach szeregu (wartość jeden wyznacza poziom równowagi wskaźnika). Wartości niższe od poziomu równowagi wskazują na spadki, zaś wyższe na wzrosty wartości szeregu pierwotnego. Wskaźnik ROC nie posiada ściśle określonego przedziału zmienności. Obliczone wartości wskaźnika ROC przedstawione zostały na rys. 16.


Rys. 16. Indeks WIG i obliczony na jego podstawie wskaźnik zmian (ROC)

Innym popularnym wskaźnikiem technicznym jest MACD (wskaźnik zbieżności/rozbieżności średnich ruchomych; MACD - Moving Average Convergence/Divergence), którego wartości bazują na wielkościach wykładniczych średnich ruchomych.

Wartość wskaźnika MACD definiowana jest jako różnica pomiędzy dwiema wykładniczymi średnimi ruchomymi (zwykle są to średnie 12 i 26 dniowe), czyli:

gdzie jest pierwszą (krótszą) średnią ruchomą (np. 12 dniową), zaś jest drugą (dłuższą) średnią ruchomą (np. 26 - dniową).

Średnie ruchome są filtrem usuwającym z szeregu wahania o wysokich częstotliwościach. Wraz z wydłużaniem okresu, z którego liczona jest średnia mocniejszy jest stopień wygładzania szeregu. Wskaźnik MACD określa tempo zmian w szeregu podstawowym. Dodatnie wartości MACD wskazują na wzrost wartości szeregu w okresie uwzględnionym przy wyznaczaniu krótkiej średniej ruchomej w porównaniu z okresem odpowiadającym długiej średniej ruchomej. W przeciwny sposób interpretować można ujemne wartości wskaźnika.

Budując model szeregu czasowego należy rozważyć możliwość uwzględnienia na jego wejściu zarówno danych pierwotnych jak i wartości wskaźników technicznych (np. wskaźnika MACD), gdyż takie postępowanie umożliwia wykrycie dywergencji (niezgodności kierunków zmian) pomiędzy tymi szeregami, co może być zapowiedzią zmiany trendu. Wartości wskaźnika MACD obliczone na podstawie analizowanych wartości WIG przedstawia rys. 17.


Rys. 17. Kształtowanie się indeksu WIG i wskaźnika MACD.

Trzecim, z wybranych na potrzeby niniejszego opracowania, wskaźnikiem technicznym jest oscylator stochastyczny. Przedstawia on bieżący poziom indeksu lub ceny na tle przedziału określającego jego zmienność w przyjętym okresie czasu. Zastosowana w obliczeniach formuła ma postać:

gdzie:

xt - bieżąca wartość szeregu,
H(n) - wartość maksymalna z ostatnich n okresów,
L(n) - wartość minimalna z ostatnich n okresów.

Wyznaczona w podany sposób wartość %K określa stosunek bieżącej wartości szeregu do zakresu wahań w n ostatnich jednostkach czasu. Przemnożenie ilorazu przez sto powoduje, że charakteryzowany wskaźnik unormowany jest do przedziału [0; 100]. Wyższe jego wartości wskazują, że aktualny poziom szeregu zbliża się do swojej wartości maksymalnej osiągniętej w rozważanym przedziale czasu. Wykres wartości oscylatora stochastycznego prezentuje rys. 18.


Rys. 18. Kształtowanie się indeksu WIG i wartości oscylatora stochastycznego.

Dekompozycja szeregów czasowych
Obserwowany szereg czasowy jest często rezultatem złożenia wielu, różniących się charakterem, składowych. Złożona struktura szeregu w wielu przypadkach utrudnia prawidłowe modelowanie i prognozowanie jego przyszłych wartości, gdyż pojedynczy model nie zawsze jest w stanie prawidłowo odzwierciedlać zmiany zachodzące w kształtowaniu się składowych szeregu. Można oczekiwać, że precyzja modelowania wzrośnie w rezultacie wydzielenia składowych badanego szeregu, niezależnego ich modelowania i agregacji uzyskanych wyników.

Takie podejście jest często stosowane w praktyce, gdy do opisu kształtowania się pewnych zjawisk wykorzystuje się liniowe funkcje trendu (obrazujące zasadniczy kierunek zmian) i współczynniki sezonowości (wskazujące na odchylenia od trendu mające miejsce w kolejnych okresach czasu). Podejście takie sprawdza się w przypadkach charakteryzujących się stabilnym trendem i regularnymi wahaniami sezonowymi (nakładanymi na trend w sposób addytywny lub multiplikatywny). Za przykład może służyć szereg przedstawiony na rys. 19.


Rys. 19. Dekompozycja przykładowego szeregu.

Średnie ruchome usuwają zmiany krótkookresowe (wygładzają szereg). W wyniku ich zastosowania uzyskuje się informacje o zasadniczym kierunku zmian. Przykład zastosowania średnich ruchomych przedstawia rys. 20.


Rys. 20. Przykładowy szereg czasowy i wyznaczony na jego podstawie szereg średnich ruchomych.

Cel stosowania operacji różnicowania szeregu jest całkowicie odmienny. Przekształcenie to ma doprowadzić do usunięcia trendu i pozostawienia informacji wyłącznie o zmianach krótkookresowych. Wynik zastosowania tej operacji przedstawia rys. 21.


Rys. 21. Przykładowy szereg czasowy i wyznaczony na jego podstawie szereg różnic.

W przypadku szeregów powstałych poprzez złożenie większej (i często nieznanej) liczby składowych przedstawione proste metody dekompozycji nie zawsze pozwalają na identyfikację i wydzielenie składowych szeregu. W realizacji tego zadania może pomóc prezentacja danych w dziedzinie częstotliwości, która ma na celu zobrazowanie natężenia poszczególnych składowych częstotliwościowych. Najpopularniejszym narzędziem przejścia z ujęcia czasowego do ujęcia częstotliwościowego jest analiza Fouriera.


Rys. 22. Czasowe i częstotliwościowe ujęcie przykładowego szeregu czasowego.

W prezentowanym przykładzie (rys. 22) analiza częstotliwościowa (po prawej stronie) wyraźnie wskazuje na istnienie wahań o okresie 12 jednostek czasu (miesięcy). Poddawany badaniom szereg czasowy został wpierw przekształcony poprzez wyeliminowanie trendu i odjęcie wartości średniej. Z tego powodu uzyskane rezultaty uwzględniają charakteryzujące się stosunkowo krótkim okresem trwania zmiany sezonowe i nie zostały zdominowane przez informacje o trendzie (zmiany o niskich częstotliwościach czyli długookresowe).

Analiza Fouriera pozwala na identyfikację składowych spektralnych występujących w szeregu czasowym, ale nie dostarcza informacji dotyczącej ich lokalizacji w czasie - nie określa, czy zidentyfikowane wahania występują na całej długości szeregu, czy też tylko w pewnej jego części. Taki sposób prowadzenia badań prowadzić może do błędnej interpretacji uzyskanych wyników.

Reprezentacja danych jakościowych
Pewne informacje wpływające na przyszłą wartość szeregu czasowego mają charakter jakościowy. Informacje o takiej postaci nie mogą być wprowadzane na wejścia sieci neuronowej, która przystosowana jest do przetwarzania informacji w postaci ilościowej. Brak możliwości bezpośredniego przetworzenia danych jakościowych przez sieć neuronową wymusza konieczność ich wstępnego przekształcenia do postaci numerycznej. Zastosowany sposób przekształcenia jest uzależniony od skali pomiarowej właściwej do wyrażenia danych jakościowych.

Zmienne dwustanowe (binarne) mogą być reprezentowane przy pomocy pojedynczego neuronu, na wejście którego wprowadza się wartości numeryczne odpowiadające wartościom zmiennej binarnej. Zwykle stosuje się jeden z dwóch popularnych sposób kodowania. Pierwszy z nich zakłada, że wartościom binarnym przypisuje się wartości 0 i 1, zaś drugi zaleca kodowanie wartości przy pomocy liczb -1 oraz +1.

Zmienne nominalne wielostanowe są reprezentowane przy pomocy metody jeden-z-n. Stosując ten sposób reprezentacji liczba neuronów odpowiadająca zmiennej jest równa liczbie możliwych wartości przyjmowanych przez zmienną. Każdy neuron odpowiada jednej wartości, zaś dana wartość reprezentowana jest przez pojawienie się jedynki na odpowiadającym jej neuronie i zer na wszystkich pozostałych neuronach.

Zmienne nominalne wielostanowe mogą być również reprezentowane przy pomocy pojedynczego neuronu. Wówczas (podobnie jak w przypadku zmiennych binarnych) wszystkim wartościom zmiennej przyporządkowywane są numery, które wprowadzane są na wejście neuronu odpowiadającego danej zmiennej.

Skalowanie
W wielu przypadkach sieć neuronowa nie przetwarza bezpośrednio oryginalnych wartości zmiennych objaśniających i objaśnianych, lecz operuje na wartościach przeskalowanych. Skalowanie dotyczy zarówno zmiennych numerycznych jak i numerów porządkowych przypisanych poszczególnym wartościom nominalnym.

Celem skalowania wartości zmiennych wyjściowych jest dostosowanie ich wartości do zakresu wartości wyjściowych neuronów wyjściowych. Skalowanie wartości zmiennych objaśniających ma na celu przekształcenie ich wartości do takiego przedziału, dla którego stopień zmienności logistycznych funkcji aktywacji jest największy.

Bardzo popularnym sposobem skalowania jest przekształcenie wartości szeregu do przedziału [0; 1] albo do przedziału [-1; +1]. Po wykonaniu obliczeń przez sieć neuronową należy wykonać przekształcenie powrotne, pozwalające na przejście do pierwotnie stosowanej skali.

Powrót do spisu treści


Modele szeregów czasowych wykorzystujące perceptrony wielowarstwowe

Wstępna analiza danych prowadzi do uzyskania wartości, które mogą być przetwarzane przez sieć neuronową. Decydując się na konstrukcję modelu wykorzystującego perceptron wielowarstwowy należy podjąć decyzje określające:

Odpowiedź na postawione powyżej pytania uzależniona jest od rzeczywistego charakteru opisywanej zależności, od dostępnych informacji i od liczebności posiadanego zbioru danych.

Wybór wartości wejściowych jest jednym z najważniejszych etapów modelowania. Konstruując sieci opisujące zachowanie szeregów czasowych w charakterze wartości wejściowych przyjmuje się zwykle opóźnione w stosunku do wartości objaśnianej wartości tego samego szeregu jak i opóźnione wartości innych zmiennych. Nadmierne zwiększanie liczby wejść prowadzi do rozbudowy sieci, co z kolei jest powodem zmniejszenia zdolności do uogólniania. Projektując zbiór wejść należy rozważyć uwzględnienie tylko pewnych, nie sąsiadujących bezpośrednio z sobą wartości opóźnionych. Również pominięcie pewnych potencjalnych zmiennych wejściowych może polepszyć jakość sieci.

Istotnym elementem wpływającym na jakość modelu jest również prawidłowe zaprojektowanie części ukrytej sieci. Narzędziem służącym do realizacji tego zadania są algorytmy konstrukcji sieci, które określają optymalną strukturę na drodze poszukiwań iteracyjnych. Ze względu na sposób działania algorytmy konstrukcji sieci neuronowych podzielić można na trzy grupy:

Jeżeli na etapie wstępnej analizy danych przeprowadzono dekompozycję szeregu, to proces konstrukcji sieci należy powtórzyć dla każdej wydzielonej składowej.

Powrót do spisu treści


Sieci Kohonena w analizie szeregów czasowych

Narzędziem przydatnym w trakcie analizy, modelowania i prognozowania szeregów czasowych może być również sieć Kohonena. Zastosowanie tego narzędzia pozwala między innymi na wydzielenie podobnych fragmentów szeregu czasowego. Celem zastosowania sieci Kohonena jest przypisanie poszczególnych przypadków do reprezentujących je skupień. Po dokonaniu klasyfikacji danych proces budowy modelu może zostać zrealizowany niezależnie dla każdej klasy.

Sposób zastosowania sieci Kohonena do klasyfikacji danych tworzących szereg czasowy zilustrowany zostanie przykładem dotyczącym modelowania opisanego wcześniej szeregu obejmującego sto wartości indeksu WIG. Założono, ze każda wartość szeregu uzależniona jest od wskaźników technicznych: ROC, MACD oraz oscylatora stochastycznego. Klasyfikacja przypadków realizowana przez sieć Kohonena przeprowadzana jest wyłącznie na podstawie wartości przyjętych zmiennych objaśniających. Proces tworzenia sieci w programie STATISTICA Neural Networks przedstawiony jest na rys. 23.


Rys. 23. Konstrukcja sieci Kohonena w programie STATISTICA Neural Networks.

Efektem działania jest sieć zaprezentowana na rys. 24.


Rys. 24. Struktura sieci Kohonena wykorzystanej w analizie przykładowego szeregu czasowego.

Przeprowadzony proces uczenia sieci (zilustrowany wykresem zamieszczonym na rys. 25) doprowadził do wydzielenia klas grupujących poszczególne elementy zbioru uczącego.


Rys. 25. Zmiana wartości błędu w trakcie uczenia sieci Kohonena.

Liczebność poszczególnych klas przedstawia zamieszczona poniżej tabela.

Tabela 1. Częstości zwycięstw poszczególnych neuronów wchodzących w skład mapy Kohonena.

Uruchomienie sieci Kohonena pozwala przypisać każdy element przetwarzanego zbioru danych do jednej z wydzielonych klas (rys. 26).


Rys. 26. Uruchomienie sieci Kohonena umożliwiające przypisanie przypadków do poszczególnych klas.

Interpretację uzyskanych wyników ułatwia naniesienie wartości identyfikujących klasy na wykres rozważanego szeregu czasowego (rys. 27).


Rys. 27. Podobne fragmenty szeregu czasowego wyodrębnione przy pomocy sieci Kohonena.

Sieć Kohonena pozwala na charakterystykę uzyskanych klas. Najprostszą metodą opisu wydzielonych grup jest wyznaczenie średniej wartości zmiennej objaśnianej (WIG) dla poszczególnych skupień (tabela 2).

Analizę danych zawartych w tabeli 2 ułatwia ich prezentacja graficzna (rys. 28). Założono, że ciemniejszy kolor fragmentów mapy odpowiada wyższym wartościom indeksu WIG.

Tabela 2. Średnia wartość indeksu WIG dla skupień reprezentowanych przez neurony wchodzące w skład utworzonej sieci Kohonena.


Rys. 28. Graficzna prezentacja wartości indeksu WIG odpowiadająca obszarom mapy Kohonena.

Analiza wykresu wskazuje, że najwyższe wartości indeksu odpowiadają prawemu, górnemu narożnikowi mapy. WIG osiąga minimalne wartości dla przypadków reprezentowanych przez lewy, dolny fragment sieci Kohonena.

Podobny sposób prezentacji (numeryczny i graficzny) zastosować można dla średnich wartości zmiennych objaśniających wyznaczonych dla poszczególnych neuronów zastosowanej sieci Kohonena.

Porównanie wykresów prezentujących średnie wartości zmiennych objaśniających dla poszczególnych klas z wykresem przedstawiającym średnią wartość WIGu pozwala na identyfikację związków zachodzących pomiędzy zmiennymi.

Sieć Kohonena stanowić może również narzędzie prognozowania. Jeżeli celem predykcji ma być zmiana wartości indeksu WIG w następnym okresie, to należy przedstawić średnie wartości zmian zachodzące dla dostępnych przypadków (w rozbiciu na wydzielone klasy).

Tabela 3. Średnia zmiana (procentowa) WIG'u w okresie następnym w stosunku do okresu bieżącego.


Rys. 29. Średnia zmiana indeksu WIG dla wyodrębnionych klas.

Konstruując prognozę dla nowego przypadku należy przypisać go do właściwej klasy. Jego podobieństwo do elementów wcześniej zaklasyfikowanych do tej samej grupy może stanowić podstawę do oczekiwania, że również wartość zmiennej objaśnianej będzie się kształtować w podobny sposób. Próba sformalizowania przedstawionej metody polegać może na budowie oddzielnego modelu prognostycznego (wykorzystującego perceptron wielowarstwowy) dla każdej wydzielonej klasy.

Powrót do spisu treści


Algorytm genetyczny jako narzędzie optymalizacji neuronowych modeli szeregów czasowych

Charakterystyka algorytmów genetycznych
Algorytmy genetyczne są modelami rozwoju populacji chromosomów. W klasycznej wersji algorytmu przez chromosom rozumie się łańcuch wartości binarnych o określonej długości. Algorytmy genetyczne służą do rozwiązywania zagadnień z dziedziny optymalizacji. Najczęściej są to zadania typu:

a więc polegające na znalezieniu takiego zestawu parametrów x1, ..., xn (będących liczbami rzeczywistymi), dla których funkcja celu FC przyjmuje wartość maksymalną.

Sposób działania algorytmu genetycznego w trakcie rozwiązywania problemów tego typu składa się z następujących etapów:

1. przyjęcie sposobu kodowania rzeczywistych parametrów funkcji przystosowania w postaci chromosomu (łańcucha zer i jedynek) - określenie w jaki sposób każdy parametr będzie zamieniany na postać binarną (dwójkową) i z ilu zer i jedynek będzie się składać binarna reprezentacja liczby rzeczywistej. Połączone ze sobą liczby binarne reprezentujące kolejne parametry tworzą chromosom,

2. określenie postaci funkcji przystosowania - jest to funkcja, której wartość uzależniona jest od wszystkich parametrów x1, ..., xn. Funkcja ta służy do oceny analizowanego zestawu parametrów, im wyższa jej wartość, tym lepsze dobrano parametry. Jeśli celem algorytmu genetycznego jest maksymalizacja pewnej funkcji celu FC, to w charakterze funkcji przystosowania można wykorzystać tę samą funkcję FC,

3. losowy dobór punktów startowych - proces poszukiwań optymalnego zestawu parametrów rozpoczyna się od losowego wyboru punktów startowych (zestawów parametrów), przedstawione one zostały w kolumnie Parametry; następnie każdy z tych zestawów kodowany jest w postaci chromosomu (kolumna Populacja w poniżej zamieszczonej tabeli); w kolejnym kroku dla każdego zestawu parametrów obliczana jest wartość funkcji przystosowania (kolumna FP),

4. selekcja chromosomów do nowej populacji - dla każdego chromosomu określa się prawdopodobieństwo wejścia do nowej populacji; jest ono uzależnione od wartości funkcji przystosowania: im wyższa wartość funkcji przystosowania (co oznacza lepsze parametry), tym większe jest prawdopodobieństwo wejścia do nowej populacji. Wybór osobników do nowej populacji realizowany jest zgodnie z regułą ruletki - każdemu osobnikowi odpowiada wycinek koła o wielkości proporcjonalnej do wartości funkcji przystosowania, a następnie wybierany jest w sposób losowy punkt znajdujący się na kole i do nowej populacji przechodzi ten chromosom, któremu odpowiadał wylosowany fragment koła. Proces ten jest powtarzany aż do chwili, w której liczba chromosomów w nowej populacji będzie równa liczbie chromosomów w starej populacji. W trakcie tworzenia nowej populacji preferowane są lepsze (w sensie zdefiniowanej funkcji przystosowania) chromosomy.

Tabela 4. Schemat działania algorytmu genetycznego.

5. w odniesieniu do osobników nowej populacji stosuje się (z pewnymi prawdopodobieństwami) operatory genetyczne, z których najpopularniejsze to: krzyżowanie oraz mutacja. Sposób działania tych operatorów przedstawia poniższy schemat: Podstawowe właściwości metody rozwiązywania problemów optymalizacyjnych przy użyciu algorytmów genetycznych to: Zastosowanie algorytmów genetycznych do optymalizacji neuronowych modeli szeregów czasowych
W czasie konstrukcji modeli neuronowych badacz musi podjąć wiele decyzji związanych z tworzonymi narzędziami i mającymi istotny wpływ na prawidłowość ich późniejszego działania. Najistotniejsze problemy związane są z: Narzędziem wspomagającym dobór poprawnych wartości wspomnianych parametrów może być algorytm genetyczny. Jego użycie wymaga przyjęcia sposobu kodowania wartości poszukiwanych parametrów w chromosomie.

Informacje o charakterze dwustanowym (uwzględnić daną zmienną czy też nie; wprowadzić na wejście sieci określoną przeszłą wartość szeregu czasowego lub nie; zastosować skalowanie danych wejściowych czy też nie) kodowane są zwykle na pojedynczej pozycji chromosomu (wartość 1 może być interpretowana jako TAK, wartość 0 jako NIE).

Po rozwiązaniu problemu kodowania parametrów zadania należy określić sposób wyznaczania wartości funkcji przystosowania służącej do określania jakości każdego chromosomu. Zwykle w celu oszacowania jakości chromosomu przeprowadza się rozkodowanie parametrów, a następnie buduje się model neuronowy uwzględniający odczytane informacje i przeprowadza się jego uczenie. Błędy wyznaczone w rezultacie zastosowania utworzonego w ten sposób modelu są wykorzystywane do wyznaczenia wartości funkcji przystosowania. Wzór określający funkcję przystosowania może uwzględniać wartość błędu sieci wyznaczoną na podstawie zbioru uczącego, ale wówczas sposób oceny jakości chromosomów uwzględnia wyłącznie posiadaną przez sieć zdolność do aproksymacji. W celu uwzględnienia charakteryzującej model zdolności do generalizacji można uwzględnić także wartość błędu dla zbioru walidacyjnego.

Często funkcja przystosowania uwzględnia oprócz błędów również inne charakterystyki modelu utworzonego na podstawie informacji przechowywanych w chromosomie. Przykładem mogą być wielkości opisujące strukturę sieci i liczbę zmiennych wejściowych. Sposób uwzględnienia tych wielkości powinien preferować modele prostsze, posiadające mniejszą liczbę elementów, gdyż one zwykle posiadają większą zdolność do uogólniania wiedzy zawartej w zbiorze uczącym.

Należy podkreślić, że proces konstrukcji sieci na podstawie informacji zawartych w chromosomie i następujące po nim uczenie uzyskanego modelu musi być wykonane każdorazowo przy wyznaczaniu jakości chromosomu. W czasie działania algorytmu optymalizacji genetycznej liczba oszacowanych sieci neuronowych jest iloczynem liczby chromosomów wchodzących w skład populacji oraz liczby rozpatrywanych pokoleń. Konieczność wielokrotnego uczenia sieci zwiększa w znacznym stopniu wymagania czasowe proponowanej procedury.

W programie STATISTICA Neural Networks użytkownik może skorzystać z algorytmu genetycznego wybierając zestaw zmiennych wejściowych. Wybierając opcje Uczenie - Narzędzia dodatkowe - Dobór cech wyświetlone zostanie okno pozwalające na dokonanie wyboru zmiennych wejściowych najlepiej opisujących kształtowanie się wartości zmiennej wyjściowej (w rozpatrywanym przykładzie był nią wskaźnik WIG).


Rys. 30. Dobór zmiennych wejściowych przy pomocy algorytmu genetycznego w programie STATISTICA Neural Networks.

Ocena testowanych zestawów zmiennych wejściowych jest dokonywana na podstawie błędu osiągniętego dla zbioru uczącego lub walidacyjnego (o ile taki został zdefiniowany). Do błędu sieci dodawany jest tzw. człon kary będący iloczynem zdefiniowanego współczynnika (Kara jednostkowa) i liczby uwzględnionych zmiennych. Zdefiniowanie członu kary wyraża dążenie do minimalizacji zbioru zmiennych wejściowych.

Powrót do spisu treści


Ocena neuronowych modeli szeregów czasowych

Skonstruowany model należy poddać ocenie, która najczęściej realizowana jest poprzez wyznaczenie wartości i interpretację różnorodnych mierników jakości modelu. Stosowane miary jakości podzielić można na dwie grupy:

Pierwszą z wymienionych klas mierników stanowią mierniki uniwersalne, stosowane często do oceny metod prognozowania stosowanych w różnorodnych dziedzinach zastosowań. Mierniki uniwersalne podzielić można na dwie grupy: Wybrane uniwersalne mierniki jakości wyznaczane są przez każdy symulator sieci neuronowych. Również STATISTICA Neural Networks wyznacza dla utworzonej sieci szereg statystyk pozwalających na ocenę skonstruowanego modelu.


Rys. 31. Statystyki regresyjne wyznaczane w programie STATISTICA Neural Networks.

Jeżeli zestaw mierników okaże się niewystarczający, to dysponując wartościami rzeczywistymi jak również odpowiadającymi im wartościami wyznaczonymi przez sieć, możliwe jest zdefiniowanie wartości innych mierników.

Przeprowadzając ocenę neuronowych modeli szeregów czasowych przy pomocy uniwersalnych mierników jakości należy pamiętać o:

Drugą grupę mierników jakości neuronowych modeli prognostycznych stanowią miary ściśle dostosowane do specyfiki dziedziny, na potrzeby której skonstruowano sieć. Ich dziedzinowy charakter pozwala na lepszą ocenę przydatności tworzonych modeli do konkretnej sytuacji. Przykładem związanym z zastosowaniami finansowymi może być miernik wskazujących na odsetek przypadków, w którym prawidłowo określono kierunek (a nie wielkość) zmian cen. Inną metodą oceny może być wyrażony w jednostkach pieniężnych efekt stosowania modelu prognostycznego w automatycznym systemie prognostycznym.

Narzędziami pomocnymi w procesie oceny neuronowych modeli prognostycznych mogą być również rezultaty analizy graficznej oraz wyniki testów sprawdzających charakter szeregu reszt.

Powrót do spisu treści


Prognozy przedziałowe

Rezultatem działania neuronowego modelu prognostycznego jest zazwyczaj pojedyncza wartość, generowana przez neuron znajdujący się w ostatniej warstwie sieci. Taki sposób funkcjonowania nie zawsze jest zgodny z oczekiwaniami użytkownika, gdyż w wielu zastosowaniach większą użytecznością mogą się charakteryzować metody dostarczające prognoz przedziałowych. Konstruując prognozę przedziałową wyznacza się przedział predykcji, do którego z ustalonym prawdopodobieństwem należeć będzie wartość zmiennej prognozowanej.

Perceptron wielowarstwowy nie może generować w sposób bezpośredni prognoz przedziałowych. Wyznaczenie prognozy tego typu wymaga znajomości rozkładu oczekiwanego błędu prognozy. W celu oszacowania jego parametrów można posłużyć się metodą bootstrapową, która umożliwia estymację nieznanego parametru rozkładu zmiennej losowej średnią z oszacowań parametru wyznaczonych na podstawie prób bootstrapowych. Próby bootstrapowe generowane są N razy poprzez losowanie ze zwracaniem elementów z dostępnego zbioru danych. Liczebność każdej próby bootstrapowej jest równa liczbie elementów wchodzących w skład pierwotnego zbioru danych. Schemat postępowania przystosowany do symulacyjnego szacowania oczekiwanych błędów prognoz uzyskiwanych przy pomocy modeli neuronowych przedstawia poniższy rysunek.


Rys. 32. Metoda bootstrapowa w modelowaniu neuronowym.

Punktem wyjścia do prowadzonych obliczeń jest posiadany zbiór danych, a ich celem jest oszacowanie parametrów rozkładu błędów prognoz. W każdej z N iteracji z posiadanego zbioru losowane są (ze zwracaniem) elementy tworzące zbiór bootstrapowy. Dla każdego, wygenerowanego w ten sposób zbioru, przeprowadzany jest proces konstrukcji modelu neuronowego. Uśrednione parametry rozkładu statystyk charakteryzujących błędy w próbach bootstrapowych stanowią oszacowanie parametrów rozkładu błędów prognoz.

Dysponując oszacowaniami parametrów rozkładu błędów prognoz uzyskanych przy pomocy modelu neuronowego można podjąć próbę skonstruowania przedziału predykcji.

Powrót do spisu treści


Wnioski końcowe

Sztuczne sieci neuronowe stanowią narzędzie modelowania i prognozowania interesujące zarówno dla teoretyków jak i dla praktyków. Mogą one opisywać zależności występujące pomiędzy zmiennymi, są narzędziem generowania prognoz, umożliwiają badanie struktury danych.

Wyniki uzyskane dzięki zastosowaniu modeli neuronowych wskazują, że stanowią one cenne uzupełnienie innych metod modelowania.

Powrót do spisu treści

Poprzedni artykuł