Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

11

Click here to load reader

Transcript of Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

Page 1: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

V Konferencja PLOUGZakopanePaździernik 1999

Wykorzystanie algorytmów sieci neuronowych w aplikacjach

bazy danych OracleAndrzej Łukianiuk

e-mail: [email protected]

PIW Postinfo, ul. Świętokrzyska 36 m.48, 00-116 Warszawa

Bartłomiej Beliczyński

e-mail: bbeliczyń[email protected]

Politechnika Warszawska, Instytut Sterowania i Elektroniki Przemysłowej,

ul. Koszykowa 75, 00-662 Warszawa

Autorzy:

Mgr inż. Andrzej Łukaniuk – analityk, projektant systemów informatycznych dla telekomunikacji.

Dr inż. Bartłomiej Beliczyński – adiunkt na Wydziale Elektrycznym Politechniki Warszawskiej. Główneobszary zainteresowania: modelowanie układów dynamicznych, sieci neuronowe.

Streszczenie

W referacie omówiono sposób dołączenia do systemu Oracle i wykorzystania efektywnego zewnętrznegopakietu neuronowego do aproksymacji dynamiki układu reprezentowanego za pomocą danych zawartychw bazie. Zaprezentowano sposób jego użycia na przykładzie danych telekomunikacyjnych.

Page 2: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

2

1 WprowadzenieDla wielu zjawisk ze współczesnej nauki, techniki, ekonomii, biologii nieznane są

fenomenologiczne modele matematyczne, dla wielu istniejących modeli, rozwiązaniainteresujące użytkownika są nieznane lub ich wyznaczanie z trudem poddaje sięprocesowi algorytmizacji. Wymienić tu trzeba problemy klasyfikacji, rozpoznawania,aproksymacji i optymalizacji. Z niektórymi zagadnieniami tego typu radzą sobie natomiastznakomicie struktury obliczeniowe oparte na wielokrotnie powtórzonym prostymelemencie – inspirowanym biologicznie sztucznym neuronie. Piękno idei siecineuronowych, opracowanie ich podstaw teoretycznych a następnie sukcesy różnorodnychzastosowań sprawiły, że obliczenia neuronowe stały się powszechnie uznaną techniką. Zbiologii i psychologii pozostały terminy takie jak "neuron", "uczenie", „uczenie naprzykładach”, „generalizacja” itp., które nabrały nowego bardzo technicznego znaczenia.Wiele opracowywanych współcześnie pakietów obróbki danych posiada opcje neuronowe.

Ogromne ilości danych są przechowywane w bazach danych i nie są to tylko prostedane ewidencyjne, ale często także obrazy i dźwięki. Samo ich udostępnianie przestaje byćwystarczające. Całkiem naturalne są potrzeby ich syntezy i zaawansowanegoprzetwarzania. Właśnie algorytmy wykorzystujące architekturę sieci neuronowych mogąstanowić podstawę dodatkowej funkcjonalności aplikacji bazodanowych. System Oraclepozwala na podłączanie zewnętrznych procedur, które mogą być napisane w języku C, anastępnie w postaci dynamicznie linkowanej biblioteki dołączone do serwera i używanetak jak inne procedury wbudowane PL/SQL’a. Stwarza to możliwości zastosowaniadowolnie skomplikowanego algorytmu, w szczególności wykorzystującego operacjemacierzowe czy optymalizację. Byłoby to dość niezręczne w języku PL/SQL, a jeszcze niedość efektywne w języku Java.

Artykuł dotyczy jednego z obszarów zastosowań algorytmów neuronowych waplikacjach bazodanowych, t.j. aproksymacji funkcji i dynamiki systemu. Aproksymacjafunkcji jest dziedziną, w której podstawy teoretyczne sieci neuronowych są w miarędobrze ugruntowane i gdzie opracowano efektywne algorytmy obliczeniowe. Jest onapotrzebna również przy modelowaniu systemów dynamicznych, w predykcji lubsterowaniu. Coraz powszechniejsze są systemy hurtowni danych, gromadzące danehistoryczne opisujące działalność firmy, zachowania jej klientów itp. Można na ichpodstawie, wykorzystując sieci neuronowe, konstruować nieliniowe modele dynamicznesłużące do klasyfikacji, prognozowania i inne. W niniejszym artykule zaprezentujemyelementy konstrukcji zewnętrznego pakietu neuronowego do aproksymacji dynamikisystemu i jego dołączenie do Oracle'a .Jako ilustracja omawianych zagadnień podanyzostanie przykład obliczeniowy, w którym przedstawiono prognozę wykorzystywaniatelefonu przez statystycznego jego użytkownika w zależności od wysokości opłaty zaminutę rozmowy i poziomu inflacji. Ramy tego przykładu są typowe dla operatoratelekomunikacyjnego, jednak użyte dane są hipotetyczne.

Niniejszy artykuł jest zorganizowany następująco. W punkcie 2 scharakteryzujemykrótko wymagania obliczeniowe dla struktur neuronowych i uzasadnimy potrzebę użyciazewnętrznych względem Oracle’a procedur. W punkcie 3 zasygnalizujemy sposóbtworzenia i wykorzystania procedur oraz towarzyszące temu ograniczenia. Punkty 4 i 5zawierają informacje o aproksymacji funkcji za pomocą sieci neuronowej i aproksymacjidynamiki systemu. W punkcie 6 scharakteryzujemy stworzony przez nas pakiet doaproksymacji systemu dynamicznego, a w punkcie 7 zademonstrujemy przykładowe jegowykorzystanie. Punkt 8 zawiera uwagi końcowe i wnioski.

Page 3: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

3

2 Potrzeba zewnętrznych obliczeń neuronowychProste przetwarzanie danych obejmujące elementarne operacje algebraiczne, czy

nawet pewną obróbką statystyczną, może dokonać się w bazie danych. Jednak omawianetu algorytmy neuronowe wymagają szeregu zaawansowanych procedur matematycznychtakich jak operacje algebry macierzowo-wektorowej z dynamicznie deklarowanymiwymiarami, minimalizacje funkcji wielu zmiennych, rozkład macierzy względem wartościszczególnych itp. Niezbędne staje się posiadanie bądź to odpowiedniego pakietuspecjalistycznego, bądź zestawu procedur ze zbioru „Numerical receipts”.

3 Zewnętrzne procedury w Oracle’u, rozszerzeniefunkcjonalności serwera

Oracle 8.x umożliwia z poziomu PL/SQL korzystanie z zewnętrznych procedurnapisanych w języku 3GL np. języku C, tworzących dynamicznie linkowaną bibliotekę(„DLL”, „shared objects”). Procedury te odpowiednio zarejestrowane mogą być następnieużywane tak jak inne procedury składowane serwera. Pozwala to w sposób stosunkowonieskomplikowany rozszerzać funkcjonalność serwera o obliczenia numeryczne np. FFT,sprzęganie z obiektami zewnętrznymi, wykonywanie skomplikowanych przetwarzań ioperacji np. animacji.

Zasady tworzenia i dołączania procedur zewnętrznych do serwera są bardzo dobrzeopisane w dokumentacji [6], toteż w referacie tym ograniczymy się tylko do ich krótkiejprezentacji, ilustrującej tylko skalę trudności do pokonania. Oto czynności, które należywykonać podłączając zewnętrzną procedurę :

• utworzenie procedury w dowolnym języku, która musi wywoływalna z poziomu językaC,

• utworzenie dynamicznie linkowanej biblioteki w sposób odpowiedni dla używanegojęzyka, kompilatora i systemu operacyjnego,

• skonfigurowanie środowiska serwera, w szczególności tnsnames.ora oraz listener.ora,• utworzenie biblioteki skojarzonej z DLL poprzez instrukcję CREATE LIBRARY, np.

CREATE LIBRARY mojedll as ‘/lib/moje.dll’

• zarejestrowanie zewnętrznej procedury jako procedury PL/SQL , tak jak innychprocedur składowanych, ale bez ciała procedury tylko z odpowiednią klauzuląEXTERNAL, np.CREATE FUNCTION ext_fun( x IN BINARY_INTEGER, y IN VARCHAR2)RETURN BINARY_INTEGER AS EXTERNAL LIBRARY mojedll NAME „fun” LANGUAGE C; /* funkcja int fun(int x, char* y) j•zyka C

umieszczona w bibliotece dynamicznielinkowanej */

• wywoływanie funkcji ext_minim tak jak innych funkcji PL/SQL np.:a:=ext_minim(b,c)

Najbardziej istotne elementy, na które należy zwrócić uwagę to określenie kolejności itypów parametrów oraz obsługa błędów. Sposoby przekazywania parametrów, mapowaniatypów oraz zasady korzystania z interfejsu OCI (Oracle Call Interface) nie powinnynastręczać większych trudności. Problem jednakże, który autorzy mieli do pokonania, toprzekazywanie tablic (wektorów danych - macierzy) jako parametrów, nie wspierane wużywanej wersji systemu. Struktury macierzowe są bardzo charakterystyczne dlarozwiązywanego zagadnienia. Zdecydowano się na dekodowanie wartości binarnych

Page 4: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

4

elementów macierzy i przekazywanie ich jako odpowiednio zorganizowanego łańcuchaznakowego.

Korzyści ze stosowania zewnętrznych procedur wynikają z dwóch czynników. Popierwsze wiele algorytmów nie może być w sposób efektywny zakodowanych, a następnieuruchomionych i przetestowanych w PL/SQL ani nawet w Javie, jeżeli brać pod uwagęserwer 8i. Po drugie zachowane są wszystkie zalety składowanych procedur - wydajność,dostępność i zarządzanie nimi.

4 Sieci neuronowe jako uniwersalne aproksymatory funkcjiW wielu zastosowaniach występuje potrzeba aproksymacji funkcji, dla której znamy

tylko skończoną liczbę realizacji zwanych "przykładami". Jest to zagadnienie wyraźnieróżne od tradycyjnych zadań aproksymacji, gdzie znana, ale nieimplentowalna funkcja jestprzybliżana za pomocą innych funkcji (np. przy projektowaniu filtrów). Przykłady są więckolumnami liczb umieszczonymi w plikach czy tablicach bazy danych. Zadaniemaproksymacji jest wyznaczenie wartości funkcji dla wartości zmiennych niezależnych niewystępujących w przykładach. Aproksymowana funkcja jest z reguły funkcją wieluzmiennych i tradycyjne metody bądź nie mogą być zastosowane, bądź stają się bardzonieefektywne. Koncepcja sieci neuronowych jest tu znakomitą ofertą. Matematycznie,aproksymacja funkcji za pomocą sieci neuronowych może być uważana za aproksymacjęw przestrzeniach ze zmiennymi, adaptacyjnie dobieranymi bazami. Bazy przestrzeniaproksymującej dobiera się do aproksymowanej funkcji. Efektywność aproksymacji wstosunku do rozwiązań ze stałymi bazami, bardzo na tym zyskuje.

Stosunkowo niedawno, bo w latach 1989-1993 za sprawą autorów takich jak Cybenko[1], Hornik ze współpracownikami [2], Funahashi [4] i Leszno ze współpracownikami [3]dosyć jednoznacznie rozstrzygnięto możliwości aproksymacyjne sieci. Unikającszczegółów można powiedzieć, że trójwarstwowa struktura (inaczej nazywana siecią zjedną warstwą ukrytą) przedstawiona na Rys.1 pozwala na aproksymację dowolnej funkcjid zmiennych z dowolną dokładnością.

W warstwie wejściowej występują węzły zaczepowe, nie spełniające żadnychfunkcji logicznych czy matematycznych. Warstwa ukryta składa się z funktorów g1,..,gn,

które mogą być bardzo różne, alekoniecznie nieliniowe (znieliniowością niewielomianową).Najczęściej są to takie same funkcjeróżniące się parametrami tj.g(x,p1),...,g(x,pn). Bardzo często, takbędzie i w przypadku naszegoprzykładu g(x,ai,bi)=tanh(ai

Tx+bi),gdzie ai=[ai1,...,aid]T i bi jest skalarem,i=1,...,n. W warstwie wyjściowejużywany jest element liniowyrealizujący ważoną sumę sygnałówwchodzących. Parametry w1,...,wn sąwagami w warstwie wyjściowej.

Aproksymacja funkcji za pomocątakiej uniwersalnej struktury polegana dobraniu odpowiedniej liczby n

n

2

1

n

1

2

n

Warstwa

1

d

ww

wf

.

.

.

g

g

g

Warstwa LiniowyElement wyjściowywejściowa ukryta

x

x

2x

Rys.1 Uniwersalna trójwarstwowa architekturasieci neuronowej dla aproksymacji funkcji.

Page 5: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

5

funktorów warstwy ukrytej oraz (d+1)n ich parametrów. Oznacza to w praktyce potrzebęoptymalizacji w przestrzeni kilkudziesięciu i więcej parametrów. Ten proces wyznaczaniaparametrów uniwersalnej struktury, zwany uczeniem bywa czasochłonny. Istnieje równieżniebezpieczeństwo, że w trakcie uczenia system osiągnie lokalne minimum i procesuczenia zostanie zatrzymany.

W naszym rozwiązaniu zastosowaliśmy tzw. aproksymację przyrostową. Procesuczenia sieci przebiega iteracyjnie. Liczba neuronów w warstwie ukrytej nie jest ustalana zgóry, a w każdej iteracji dodawany jest tylko jeden neuron do warstwy ukrytej,wyznaczane są jego parametry, a następnie określa się wagi warstwy wyjściowej. Możliwajest jednoczesna aproksymacja kilku funkcji tych samych argumentów. Taki schemataproksymacji przedstawiony jest na Rys.2.

Rys.2 Schemat aproksymacji przyrostowej jednocześnie m-funkcji. W każdejiteracji wyznaczane są parametry jednego neuronu oraz wszystkie wagi w warstwiewyjściowej.

W aproksymacji przyrostowej każdorazowy proces wyznaczania parametrów jestwykonywany w przestrzeni (d+1) parametrów , a więc znacznie mniejszej niż w przypadkuaproksymacji nieprzyrostowej. Ponadto łatwo jest wykazać, że funkcja błędu uczenia jestściśle monotoniczna, a więc nie istnieje problem lokalnych minimów [5]. Taki wyjątkowoefektywny proces aproksymacji funkcji został zastosowany w prezentowanymrozwiązaniu.

5 Model dynamiki systemuSystem dynamiczny może być matematycznie zapisany w wielu różnych postaciach. Z

punktu widzenia „ uczenia na przykładach”, najwygodniejsze są tzw. postaci wejścia/wyjścia. Dla potrzeb tego pakietu przyjęto model dynamiki systemu w następującej formie

y(t)=f(x(t-1),...,x(t-n))

gdzie t oznacza czas dyskretny, x(.) jest wektorem wejść, y(.) jest wektorem wyjść, f jestfunkcją nieznaną. Bazując na przykładach realizacji funkcji f wyznaczana jest jejaproksymacja za pomocą sieci neuronowej.

x1

x2

xd

f 1

g1

g2

f 2

f mgn

x1

x2

xd

f 1

g1

g2

f 2

f m

x1

x2

xd

f 1g1

f 2

f m

Page 6: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

6

6 Tworzenie pakietu do aproksymacji dynamiki systemu

Rozwiązywane zagadnienie wymagało bardzo intensywnych i zaawansowanychoperacji numerycznych. Autorzy wykorzystywali do tego celu specjalizowane środowisko,które umożliwiało efektywne tworzenie, uruchamianie programu, śledzenie, prezentacjewyników. Opracowanie pakietu do obliczeń neuronowych w Oracle’u obejmowałonastępujące kroki:• utworzenie algorytmu na podstawie matematycznych teorii (jest to najtrudniejsze i

najbardziej czasochłonne zadanie),[kroki w środowisku badawczym ]

• zakodowanie w środowisku badawczym – napisanie procedur w specjalizowanymjęzyku,

• uruchomienie i testowanie w środowisku badawczym,• translacja procedur obliczeniowych z języka specjalizowanego do języka C,

[kroki w środowisku systemu operacyjnego/kompilatora]• oprogramowanie specyficznego interfejsu wg. wymagań i ograniczeń Oracle,• kompilacja i linkowanie – utworzenie dynamicznie linkowanej biblioteki,

[ kroki w środowisku Oracle’a ]• rejestracja procedur zewnętrznych na serwerze Oracle’a,• napisanie procedur sprzęgających dane i tabele oraz obliczenia,• przeprowadzenie testów w środowisku Oracle’a.

Opisany mechanizm zastosowany z powodzeniem przez autorów wskazuje namożliwość stosunkowo łatwej integracji wielu środowisk informatycznych, łączenia iprzenikania różnych technologii.

Pakiet posiada następujące funkcje:• określenie zakresu danych ( załadowanie, stworzenie perspektywy, e.t.c ),• edycja/wybór parametrów sieci i modelu,• uczenie sieci – stworzenie modelu dynamicznego,• wybór modelu,• określenie zakresu danych do odtworzenia,• odtworzenie wyjścia dla wybranego modelu – aproksymacja,• analiza wyników.

Dla ustalenia uwagi, bez szkody dla ogólności rozważań, przyjmijmy, że modelowanyprzykładowy system dynamiczny posiada trzy wejścia oraz jedno wyjście y. Potencjalnymzastosowaniem wyznaczonego modelu jest predykcja wyjścia dla wartości wejściowychnie występujących w zestawie danych uczących. Nowowprowadzone wartości wejść sąodróżnialne od wartości zestawu uczącego. Obliczone wyjścia modelu yp są zapamiętanedo przeprowadzenia szczegółowych analiz. Stosowany model systemu dynamicznegowymaga podania trzech parametrów : tolerancji ( dopuszczalnego błędu) , maksymalnejliczby neuronów, opóźnienia sygnałów wejściowych w modelu dynamicznym.Wyznaczany model jest de facto trójwarstwową siecią neuronową (siecią z jedną warstwąukrytą), ze skalowaniem wejścia i opóźnieniem. Jest on charakteryzowany przez szeregwartości : wektor skalujący xsc, elementy warstwy pierwszej w1,b1 , elementy warstwydrugiej w2,b2. Do realizacji przyjęto prosty schemat składający się z trzech tabel : DANE,PARAMETRY, MODELE. Odpowiedni diagram przedstawiono na Rys.3.

Page 7: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

7

PARAMETRY

KOD_PARAMTOLERANCJAMAXNODNDELAY

MODELE

ID_MODELUNDELAYMSCNSCXSCALEMW1NW1W1MB1NB1B1MW2NW2W2MB2NB2B2PARM_KOD_PARAM

DANE

TVXYPREDICTYP

MODEL_PARM_FK

Rys.3. Schemat tabel użytych w aplikacji.

Stworzono pakiet składowany składający się z czterech funkcji :model ( ...) – deklaracja do procedury zewnętrznej wyznaczającej model dynamiczny

systemuwy_modelu(...) – deklaracja do procedury zewnętrznej wyznaczający wyjście sieci

neuronowej ( modelu)uczenie (..) – procedura w PL/SQL przekazująca dane do funkcji model i

zapamiętująca wynikiodtwarzanie (...) – procedura w PL/SQL przekazująca/odbierająca dane/wyniki z

funkcji wy_modelu.Szczegóły deklaracji pakietu pokazano na Rys.4.

PACKAGE SNEUR_PKG IS/* Pakiet do aproksymacji systemu dynamicznego w aplikacjach ORACLE’a *//* AUTORZY : Andrzej Łukianiuk, Bartłomiej Beliczyński - Wrzesień 1999 *//* Uwaga! m?, n? – oznaczaja rozmiary macierzy */

FUNCTION model ( mx IN binary_integer, nx IN binary_integer, xx IN varchar2, --wartości sygnałówwejściowych y IN varchar2, -- wartości wektora wyjść systemu tol IN double precision, maxnod IN binary_integer, ndelay IN binary_integer, --

parametry --modelu/sieci

mw1 OUT binary_integer, nw1 OUT binary_integer, w1 OUT varchar2, -- wartości wektora w1 mb1 OUT binary_integer, nb1 OUT binary_integer, b1 OUT varchar2, -- wartości wektora b1 mw2 OUT binary_integer, nw2 OUT binary_integer, w2 OUT varchar2, -- wartości wektora w2 mb2 OUT binary_integer, nb2 OUT binary_integer, b2 OUT varchar2, -- wartości wektora b2 msc OUT binary_integer, nsc OUT binary_integer, xsc OUT varchar2,-- wartości wektoraskal. ndel OUT binary_integer, -- wartość opóźnienia dmax IN binary_integer) -- maksymalny rozmiar zadeklarowanych wektorowRETURN binary_integer; -- zwraca 0 lub kod błędu/* Deklaracja dla procedury zewnętrznej wyznaczającej model dynamiczny systemu */

FUNCTION wy_modelu ( mx IN binary_integer, nx IN binary_integer, xx IN varchar2, -- wartości sygnałów wejść. msc IN binary_integer, nsc IN binary_integer, xsc IN varchar2, -- wartości wektora skal. ndel IN binary_integer, -- wartość opóźnienia mw1 IN binary_integer, nw1 IN binary_integer, w1 IN varchar2, -- wartości wektora w1 mb1 IN binary_integer, nb1 IN binary_integer, b1 IN varchar2, -- wartości wektora b1 mw2 IN binary_integer, nw2 IN binary_integer, w2 IN varchar2, -- wartości wektora w2 mb2 IN binary_integer, nb2 IN binary_integer, b2 IN varchar2, -- wartości wektora b2 my OUT binary_integer, dy OUT varchar2, -- wartości wektora wyjść modelu

Page 8: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

8

dmax IN binary_integer) -- maksymalny rozmiar zadeklarowanych wektorowRETURN binary_integer; -- zwraca 0 lub kod błędu/* deklaracja do procedury zewnętrznej wyznaczający wyjście sieci neuronowej ( modelu) */

FUNCTION uczenie ( zest_par IN varchar2) –- kod zestawu parametrow, dla których sieć jest uczonaRETURN Number; -- zwraca 0 lub kod błędu/* procedura uczenia sieci z danych w tabeli DANE i parametrow o identyfikatorze zest_par*/

FUNCTION odtwarzanie ( id_mod IN Number ) –- identyfikator modelu, dla którego przeprowadzona jestaproksymacjaRETURN Number; -- zwraca 0 lub kod błędu/*procedura do aproksymacji danych z tabeli DANE i modelu o identyfikatorze id_mod */

END SNEUR_PKG;

Rys.4. Deklaracja pakietu PL/SQL do aproksymacji systemu dynamicznego.

7 Przykładowe wykorzystanie aplikacji neuronowej stworzonejza pomocą narzędzi Oracle’a

7.1 Interpretacja danychJako przykładowe dane wzięto ilość jednostek licznikowych przypadających na

statystycznego abonenta w zależności od czasu, ceny za jednostkę oraz wskaźnika inflacji.Ich przebiegi są zilustrowane na Rys. 5. Są one hipotetyczne, nie odpowiadające żadnejrzeczywistości, ale odzwierciedlające dynamikę podobnych, prawdziwych danych. Wrozpatrywanym okresie kilkudziesięciu miesięcy generalnie wzrastało wykorzystanietelefonów, ale po każdorazowej podwyżce opłat za jednostkę licznikową zaznaczał sięspadek, po czym ponowny jego wzrost.

Taki zbiór danych posłużył do nauczenia sieci neuronowej. Wektor wejściowyzawierał więc dwie zmienne tj. cenę i wskaźnik inflacji, wektor wyjściowy ilość jednosteklicznikowych na abonenta.

0 10 20 30 40 500

200

400

600

800

1000

1200

1400

1600

1800

2000

czas

Przebiegi danych wejsciowych

inflacja

cena

il. jednostek na abonenta

Rys. 5. Przebiegi danych wejściowych do uczenia sieci. Hipotetyczne dane dotycząceilości jednostek licznikowych przypadających na abonenta, ceny jednostki licznikowej iinflacji w kolejnych miesiącach.

Page 9: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

9

7.2 Omówienie wynikówW celu łatwiejszego użytkowania pakietu stworzono prosty formularz, który realizuje

funkcjonalność przedstawioną w poprzednim rozdziale. Widok jego podstawowego oknaprzedstawiono na Rys. 6. Blok danych z lewej strony służy do przeglądania danychuczących, blok danych z prawej strony służy do wprowadzania wartości nowych danych iprzeglądania wyników aproksymacji. Kolumny T,V,X należy interpretować odpowiedniojako kolejne miesiące, cenę i wskaźnik inflacji, Y oznacza ilość jednostek na abonenta,natomiast YP jako obliczane wartości z wybranego modelu. Widoczne przyciski służąodpowiednio do :• Edycji/wyboru parametrów modelu• Wywoływania procedury uczenia sieci – odwołującej się do procedury zewnętrznej• Wyboru modelu, wg którego ma być wykonana aproksymacja• Wykonania obliczeń aproksymacji – odwołujące się do procedury zewnętrznej• Oglądania wykresów

Dla zestawu danych uczących można wykonać szereg obliczeń modeli zmieniającparametry np. tolerancję lub opóźnienie. Dane charakteryzujące modele są zapamiętywane.Można je wykorzystywać w różnych eksperymentach aproksymacyjnych i na ichpodstawie wybrać model, który najlepiej rozstrzyga konflikt pomiędzy dokładnościąaproksymacji a jakością generalizacji.

Rys 6. Widok formularza przykładowej aplikacji do aproksymacji dynamiki systemu.

Przeprowadzono szereg eksperymentów i obliczeń dla wybranego zestawu danych.Przykładowe wyniki dla jednego z eksperymentów przedstawiono na Rys. 7. Aby uzyskaćpredykcję ilości impulsów (a docelowo przychodów) po kolejnej podwyżce, wprowadzononiewielki wzrost ceny za jednostkę oraz pewne wskaźniki inflacji. Odpowiedzią modelu

Page 10: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

10

było krótkotrwałe obniżenie ilości jednostek na abonenta, po czym ich stopniowewzrastanie. Celowo wybrano model, dla którego aproksymacja nie jest najdokładniejsza,aby osiągnąć lepsze własności generalizacji.

Rys. 7. Przebieg ilości jednostek na abonenta w czasie (dane i ichaproksymacja) – wykres górny oraz założonej zmiany ceny –wykresdolny.

W badanym przypadku, na typowym serwerze NT, dla fazy uczenia, osiąganoczasy przetwarzania rzędu 15 sekund (dla sieci złożonej z dwudziestu węzłów warstwyukrytej). Przy oszacowaniu pominięto czas potrzebny na załadowanie bibliotekidynamicznej przy pierwszym odwołaniu do jej procedur. Kolejne odwołania nie wymagająjuż jej ładowania, zatem jest to czas pomijalny. Na efektywność rozumianą szerzejwpływają nie tylko czasy samego przetwarzania, ale również czas przygotowania pakietu ijego uruchamiania. Wydaje się, że przyjęte algorytmy i metodologia dają znakomiterezultaty.

8 Uwagi końcowe i wnioskiW niniejszym artykule zaprezentowano sposób dołączenia i wykorzystania pakietu

neuronowego do aproksymacji dynamiki systemu, reprezentowanego przez dane zawarte wbazie. Wydaje się, że wykorzystanie zewnętrznych procedur, które mogą być z koleigenerowane poprzez specjalizowane pakiety matematyczne, neuronowe etc. jestefektywnym sposobem rozszerzenia funkcjonalności systemu bazy danych o możliwościzaawansowanego przetwarzania danych.

Page 11: Wykorzystanie algorytmów sieci neuronowych w aplikacjach bazy ...

11

Literatura[1] G.Cybenko, „Approximations by superpositions of a sigmoidal functions”, Math.

Contr. Signals, Syst., vol.2, pp.303-314, 1989.

[2] K.Hornik, M.Stinchcombe, and H.White, „Multi-layer feedforward networks areuniversal approximators”, Neural Networks, vol.2, pp.359-366, 1989.

[3] M.Leshno, V.Lin, A.Pinkus, and S.Schocken, „Multilayer feedforward networks witha nonpolynomial activation function can approximate any function”, Neural Networks,vo.6, pp.861-867, 1993.

[4] K. Funahashi. „On the approximate realization of continuous mappings by neuralnetworks”, Neural Networks,2, 1989.

[5] B. Beliczynski, „Incremental approximation by one-hidden-layer neural networks.”,Proceedings of the IEEE International Symposium on Industrial Electronics, IEEEService Center, 1996.

[6] Oracle Documentation Library.Oracle 8 Server, Release 8.0.5.