Sunday, October 25, 2009

Szablony dokumentów dla metodyki Rational Unified Process (RUP)

Model biznesowy



Software Architecture Document




Wizja systemu



Opis Use Casa



Słownik biznesowy



Słownik systemowy



Raport spotkania projektowego

Saturday, October 24, 2009

ForceSeat GT - Film Promocyjny

Wednesday, October 21, 2009

ForceSeat GT - 3 DoF Hydraulic Motion Simulator officially announce

I am pleased to announce that the first model of the hydraulic simulator was shown to a wider audience





Monday, June 08, 2009

SVN w Eclipse 3.4.2

Wbrew pozorom integracja pluginu SVN w eclipsie zabiera chwilę czasu, ponieważ dostępne w sieci tutoriale dziwnym sposobem nie prowadzą do działającego rozwiązania.

Instrukcja instalacji:



  • Zainstalować SVN Team Provider z:
    http://download.eclipse.org/technology/subversive/0.7/update-site/.


  • A na koniec sam plugin:
    http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/




Powinno działać

Sunday, June 07, 2009

Instalacja Google Chrome pod Ubuntu 9.04


sudo gedit /etc/apt/sources.list

deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/chromium-daily/ppa/ubuntu jaunty main

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xfbef0d696de1c72ba5a835fe5a9bf3bb4e5e17b5

sudo apt-get update
sudo apt-get install chromium-browser

Friday, June 05, 2009

Edytor LaTeXa pod Ubuntu - gEdit i LaTeX

Poniżej opiszę jak zainstalować plugin LaTeXa dla gEdita, efekt końcowy można zobaczyć pod tym adresem. Instrukcja:

Zacznijmy od dodania odpowienich repozytoriów:


sudo gedit /etc/apt/sources.list.d/gedit-latex-plugin.list


W pliku tym należy wkleić poniższe wiersze:

deb http://ppa.launchpad.net/ubuntu-it-dev/ubuntu gutsy main
deb-src http://ppa.launchpad.net/ubuntu-it-dev/ubuntu gutsy main


Uaktualnienie informacji o pakietach oraz instalacja odpowiednich paczek:

sudo apt-get update
sudo apt-get install texlive-latex-recommended texlive-latex-extra texlive-fonts-extra texlive-humanities texlive-math-extra texlive-pictures
sudo apt-get install rubber gedit-latex-plugin


Kolejnym krokiem będzie uruchomienie plug-inu już w edytorze gEdit. W tym celu należy wejść do menu Edycja-Preferencje i wybrać zakładkę Wtyczki.

Wednesday, June 03, 2009

Install Eclipse 3.4 on Ubuntu 9.04

Just follow the instructions given under the following adress:

http://zanshin.net/2009/04/25/install-eclipse-ganymede-on-ubuntu-904/

Thursday, May 07, 2009

Astromenace - gra warta uwagi

Dzisiaj trochę z innej beczki, ponieważ post dotyczyć będzie tematów rozrywkowych. A postanowiłem, go napisać ponieważ jak do tej pory ciekawe gry pod Linuxa to jednak rzadkość, więc jeżeli pojawia się coś interesującego myślę że warto o tym napisać.

Gra nazywa się Astromenace i jest strzelanką, w której latamy statkiem i strzelamy do wrogów. Scenariusz podobny do setek innych gier, to co wyróżnia jednak ten tytuł to bardzo starannie wykonana grafika, oraz znany zwłaszcza z gier RPG, mechanizm zdobywania doświadczenia i kupowania coraz to lepszego wyposażenia i pancerzy.

Poniżej kilka screenów z gry:








Instalacja:


  • Ściągamy spakowaną wersję gry ze strony producenta - link

  • Rozpakowujemy archiwum (np. tar jxvf amenace12.tar.bz2)

  • Uruchamiamy grę (./game_launcher)



Uwaga: Do prawidłowego działania gry zainstalowane musimy mieć następujące biblioteki:
libSDL, libopenal, libalut, libogg, libvorbis, libvorbisfile, libjpeg.

Monday, May 04, 2009

GIT - usunięcie plików omyłkowo dodanych do repozytorium

Czasami przez omyłkę lub błąd w pliku .gitignore do repozytorium dodana może zostać dość spora liczba plików, których byśmy tam nie chcieli. W moim przypadku w repozytorium znajdowała się dość spora liczba plików *.class. Poniżej podaję prosty sposób na rozwiązanie takiego problemu:


find . -name *.class -print0 | xargs -0 `git rm`

Git - domyślny plik gitignore

W przypadku kiedy pracujemy lub tworzymy wiele projektów, które wersjonujemy systemem GIT, konieczne jest wielokrotne tworzenie pliku .gitignore, w którym zawarte są reguły dotyczące plików które mają być ignorowane (ewentualnie reguły te wprowadzić można w pliku (.git/info/exclude). Jest to dość uciążliwe, na szczęście możemy zdefiniować domyślny plik gitignore dla wszystkich projektów z jakimi pracujemy. Magiczna linijka kodu która to ustawi znajduje się poniżej:


git config --global core.excludesfile ~/.gitignore


Uwagi: domyślny plik .gitignore znajduje się w katalogu domowym (nic jednak nie stoi na przeszkodze, aby umieścić go gdzie indziej)

Monday, April 20, 2009

Testy prototypu platformy hydraulicznej z trzema stopniami swobody (3 DoF)

Poniżej pierwsze filmy z testów platformy hydraulicznej.

Parametry techniczne:
- Ciśnienie w układzie - regulowane nastawnym zaworem przelewowym od 5 do 20 Bar
- Skok tłoka siłownika: 13 cm
- Mikrokontroler: AVR (Atmega 8)
- Komunikacja z komputerem: USB
- Układ pomiarowy: fotooptyczny
- Ciężar urządzenia: ok 130 kg
- Wydajność pompy: 12 [l/min] (na krućcach przy siłownikach zastosowane dodatkowo dławiki)







Friday, April 17, 2009

Pluginy Ruby on Rails z których najprawdopodobniej będziesz chciał skorzystać

Na RailsLab w ukazał się ciekawy artykuł, w którym znaleźć możemy zestawienie procentowe projektów wykorzystujących poszczególne wersje Ruby on Rails. Ciekwszym aspektem omawianego artykułu jest jednak zestawienie najczęściej wykorzystywanych pluginów (zrobione w oparciu o dane pochodzące z GitHuba). W pierwszej piątce znajdują się:


  1. exception_notification

  2. restful_authentication

  3. will_paginate

  4. attachment_fu

  5. acts_as_list



W dalszej kolejności znajdują się:


  1. hoptoad_notifer

  2. rspec

  3. acts_as_tree

  4. acts_as_state_machine

  5. auto_complete

  6. paperclip

  7. ssl_requirement

  8. haml

  9. rspec-rails

  10. annotate_models

  11. actice_merchant

  12. acts_as_taggable_on_steroids

  13. asset_packer

  14. calendar_date_select

  15. jrails

  16. in_place_editing

  17. responds_to_parent

Friday, April 03, 2009

Traffic Flow Simulation System based on Cellular Automata

Below I have attached videos from my application which simulate car traffic flow. Application use Cellular Automata to simulate car movements.














Thursday, April 02, 2009

Wykorzystanie Helperów w Kontrolerach i Modelu

Wykorzystanie dostępnych w Railsach Helperów bezpośrednio w modelu, lub kontrolerach nie jest wspierane bezpośrednio przez środowisko. Przyczyn tego faktu należu upatrywać w chęci zapobiegania wykorzystania kodu Widoku w niższych warstwach, dzięki czemu wzrasta przejrzystość całej aplikacji. Niestety w pewnych specyficznych przypadkach bardzo pomocne staje się wykorzystanie bezpośrednio w modelu którejś z metod np. ActionView::Helpers::TextHelper.

Poniżej metoda, jaką możemy zastosować aby wywołać helpery (źródło)

Tworzymy plik np. helpery.rb w katalogu 'lib'


def help
Helper.instance
end

class Helper
include Singleton
include ActionView::Helpers::TextHelper
end


Teraz wystarczy w modelu lub kontrollerze dodać nagłówek:

require 'lib/helpers'


Wywołanie metody helpera sprowadza się wówczas do wywołania:

# help.name_of_helper
help.pluralize 10, "person"

Tuesday, March 17, 2009

Szablon pracy magisterskiej w Latex'u

Jeżeli komuś miałbym polecać narzędzie w jakim miałby pisać pracę magisterską byłby to zdecydowanie Latex. Niestety potencjalny dyplomant staje przed problemem pełnego skonfigurowania środowiska, tak aby dokument wynikowy był zgodny z normami narzuconymi na jego uczelni.

Pisząc pracę dyplomową przygotowałem szablon Latexa, uwzględniający wszystkie wymogi edytorskie jakie były narzucona na moim wydziale (Politechnika Wrocławska Wydział Informatyki i Zarządzania). Być może przyda się to komuś jako punkt startu.

Szablon pracy magisterskiej w Latexu (750 kB)

Friday, March 13, 2009

Liczba Pi z dokładnością do MILIONA liczb po przecinku

3.14, a może 3.14159, chyba niewielu z nas potrzebuje z większą dokładnością przybliżać liczbę PI. A co jeśli z jakiegoś powodu potrzebna jest ZDECYDOWANIE większa dokładność, ..., sto miejsc, ..., tysiąc, ...? Teraz możliwe jest już nawet posługiwanie się liczbą Pi o dokładności do jednego MILIONA miejsc po przecinku, wystarczy tylko odwiedzić stronę:

http://3.141592653589793238462643383279502884197169399375105820974944592.com/index314.html

Monday, March 02, 2009

Wieloagentowa Architektura Rozproszonego Systemu Przetwarzania Zadań z Dynamicznym Równoważeniem Obciążeń

M Stanek-Wieloagentowa Architektura Rozproszonego Systemu Przetwarzania Zadan z Dynamicznym Rownowazeniem O...

Predykcja danych w szeregach czasowych

M Stanek-Predykcja Danych w Szeregach Czasowych


Predykcja danych w szeregach czasowych 1/42 Predykcja danych w szeregach czasowych na przykładzie predykcji cen akcji giełdowych spółki KGHM Polska Miedź S.A. Piotr Kupczyk (pkk@wp.pl) Michał Stanek (michal.stanek@student.pwr.wroc.pl) 13 czerwca 2005 Abstract: Prognozowanie przyszłych wartości akcji giełdowych jest marzeniem wielu osób. Artykuł przedstawia wykorzystanie hybrydowego rozwiązania bazującego na sieciach neuronowych oraz analizie statystycznej podczas predykcji danych w szeregach czasowych na przykładzie predykcji cen akcji KGHM Polska Miedź S.A. W dokumencie zostały szczegółowo omówione dwie architektury sieci neuronowych jedna bazująca na znakowej reprezentacji wartości funkcji druga bazująca na jej wartościach rzeczywistych. Na koniec omówiono rozwiązanie hybrydowe łączące Predykcja danych w szeregach czasowych moŜliwości tych sieci z predykcją opartą na funkcji regresji. Zostały omówione otrzymane wyniki oraz przedstawione moŜliwe ulepszenia. 2/42 Predykcja danych w szeregach czasowych 3/42 Spis treści: Wstęp.............................................................................................................................. 6 Dane ............................................................................................................................... 7 Predykcja ...................................................................................................................... 11 Metody predykcji ......................................................................................................... 13 Sieć neuronowa numeryczna............................................................................................ 13 Sieć neuronowa znakowa ................................................................................................. 15 Regresja ............................................................................................................................ 17 5. Eksperymenty............................................................................................................... 18 1. Badanie..................................................................................................................... 18 6. Wnioski ........................................................................................................................ 41 7. Literatura ...................................................................................................................... 42 1. 2. 3. 4. Spis tabel: Tabela 1. Dane giełdowe dla akcji spółki KGHM. .................................................................... 7 Tabela 2. Dane po preprocessingu. ............................................................................................ 7 Tabela 3. Błąd predykcji sieci liczbowej dla zbioru uczącego. ............................................... 19 Tabela 4. Liczba epok uczących sieci numerycznej dla zbioru testowego. ............................. 19 Spis rysunków: Rysunek 1. Dane giełdowe spółki KGHM................................................................................. 8 Rysunek 2. Wykres funkcji liniowej. ......................................................................................... 9 Rysunek 3. Wykres funkcji kwadratowej................................................................................... 9 Rysunek 4. Funkcja okresowa sin(x) + a ................................................................................. 10 Rysunek 5. Funkcja okresowa sin(x) + x ................................................................................ 10 Rysunek 6. Związek pomiędzy wartościami funkcji predykowanymi i rzeczywistymi. ......... 11 Rysunek 7. Idea predykcji krótko okresowej. .......................................................................... 12 Rysunek 8. Idea predykcji długo okresowej. ........................................................................... 12 Rysunek 9. Schemat blokowy hybrydy.................................................................................... 13 Rysunek 10. Schemat sieci numerycznej. ................................................................................ 14 Rysunek 11. Schemat konwersji danych dla sieci znakowej. .................................................. 15 Rysunek 12. Budowa sieci znakowej. ...................................................................................... 16 Rysunek 13. Przykład przybliŜenia funkcji wielomianem drugiego stopnia. .......................... 17 Rysunek 14. Przykład przybliŜenia funkcji wielomianem trzeciego stopnia........................... 17 Rysunek 15. Przykład przybliŜenia funkcji wielomianem czwartego stopnia......................... 17 Rysunek 16. Przykład przybliŜenia funkcji wielomianem piątego stopnia.............................. 17 Rysunek 17.Przykład przybliŜenia funkcji wielomianem szóstego stopnia. ........................... 17 Rysunek 18. Wykres zaleŜności błędu sieci numerycznej od ilości epok uczących................ 18 Rysunek 19. Wykres zaleŜności błędu sieci znakowej od ilości epok uczących. .................... 18 Rysunek 20. Funkcja linowa. ................................................................................................... 21 Rysunek 21. Predykcja na zbiorze uczącym. ........................................................................... 21 Rysunek 22. Predykcja krokowa na zbiorze testowym............................................................ 22 Rysunek 23. Predykcja ciągła na zbiorze testowym. ............................................................... 22 Predykcja danych w szeregach czasowych 4/42 Rysunek 24. Predykcja na zbiorze uczącym. ........................................................................... 22 Rysunek 25 Predykcja krokowa na zbiorze testowym............................................................. 22 Rysunek 26 Predykcja ciągła na zbiorze testowym. ................................................................ 22 Rysunek 27. Predykcja na zbiorze uczącym. ........................................................................... 23 Rysunek 28. Predykcja krokowa na zbiorze testowym............................................................ 23 Rysunek 29. Predykcja na zbiorze uczącym. ........................................................................... 23 Rysunek 30. Predykcja krokowa na zbiorze testowym............................................................ 23 Rysunek 31. Funkcja kwadratowa............................................................................................ 24 Rysunek 32. Predykcja na zbiorze uczącym. ........................................................................... 24 Rysunek 33. Predykcja krokowa na zbiorze testowym............................................................ 25 Rysunek 34. Predykcja ciągła na zbiorze testowym. ............................................................... 25 Rysunek 35. Predykcja na zbiorze uczącym. ........................................................................... 25 Rysunek 36. Predykcja krokowa na zbiorze testowym............................................................ 25 Rysunek 37. Predykcja ciągła na zbiorze testowym. ............................................................... 25 Rysunek 38. Predykcja na zbiorze uczącym. ........................................................................... 26 Rysunek 39. Predykcja krokowa na zbiorze testowym............................................................ 26 Rysunek 40. Predykcja na zbiorze uczącym. ........................................................................... 26 Rysunek 41. Predykcja krokowa na zbiorze testowym............................................................ 26 Rysunek 42. Funkcja sinusoidalna. .......................................................................................... 27 Rysunek 43. Predykcja na zbiorze uczącym. ........................................................................... 27 Rysunek 44. Predykcja krokowa na zbiorze testowym............................................................ 28 Rysunek 45. Predykcja ciągła na zbiorze testowym. ............................................................... 28 Rysunek 46. Predykcja na zbiorze uczącym. ........................................................................... 28 Rysunek 47. Predykcja krokowa na zbiorze testowym............................................................ 28 Rysunek 48. Predykcja ciągła na zbiorze testowym. ............................................................... 28 Rysunek 49. Funkcja sinusoidalno-malejąca. .......................................................................... 29 Rysunek 50. Predykcja na zbiorze uczącym. ........................................................................... 29 Rysunek 51. Predykcja krokowa na zbiorze testowym............................................................ 30 Rysunek 52. Predykcja ciągła na zbiorze testowym. ............................................................... 30 Rysunek 53. Predykcja na zbiorze uczącym. ........................................................................... 30 Rysunek 54. Predykcja krokowa na zbiorze testowym............................................................ 30 Rysunek 55. Predykcja ciągła na zbiorze testowym. ............................................................... 30 Rysunek 56. Predykcja na zbiorze uczącym. ........................................................................... 31 Rysunek 57. Predykcja krokowa na zbiorze testowym............................................................ 31 Rysunek 58. Predykcja na zbiorze uczącym. ........................................................................... 31 Rysunek 59. Predykcja krokowa na zbiorze testowym............................................................ 31 Rysunek 60. Funkcja notowań akcji firmy KGHM Polska Miedź S.A. .................................. 32 Rysunek 61. Predykcja na zbiorze uczącym. .......................Błąd! Nie zdefiniowano zakładki. Rysunek 62. Predykcja krokowa na zbiorze testowym............................................................ 33 Rysunek 63. Predykcja ciągła na zbiorze testowym. ............................................................... 33 Rysunek 64. Predykcja na zbiorze uczącym. ........................................................................... 33 Rysunek 65. Predykcja krokowa na zbiorze testowym............................................................ 34 Rysunek 66. Predykcja ciągła na zbiorze testowym. ............................................................... 34 Rysunek 67. Predykcja na zbiorze uczącym. .......................Błąd! Nie zdefiniowano zakładki. Rysunek 68. Predykcja krokowa na zbiorze testowym............................................................ 35 Rysunek 69. Predykcja ciągła na zbiorze testowym. ............................................................... 35 Rysunek 70. Predykcja na zbiorze uczącym. ........................................................................... 35 Rysunek 71. Predykcja krokowa na zbiorze testowym............................................................ 35 Rysunek 72. Predykcja na zbiorze uczącym. ........................................................................... 35 Rysunek 73. Predykcja krokowa na zbiorze testowym............................................................ 35 Predykcja danych w szeregach czasowych 5/42 Rysunek 74. Predykcja na zbiorze uczącym. ........................................................................... 35 Rysunek 75. Predykcja krokowa na zbiorze testowym, ciągły w stosunku do zbioru uczącego. .......................................................................................................................................... 37 Rysunek 76. Predykcja ciągła na zbiorze testowym, po okresie jednorocznej przerwy, w stosunku do zbioru uczącego............................................................................................ 37 Rysunek 77. Okno główne programu - widok parametrów nauki. .......................................... 38 Rysunek 78. Okno główne programu - widok parametrów predykcji ..................................... 39 Rysunek 79. Okno główne programu - widok danych wyników. ............................................ 39 Rysunek 80. Okno główne programu - widok danych predykcji............................................. 40 Predykcja danych w szeregach czasowych 6/42 1. Wstęp Dokument ten poświęcony jest zagadnieniu predykcji danych w szeregach czasowych. Na wstępie postaramy się wyjaśnić podstawowe pojęcia uŜywane zarówno w tytule jak i dalszej części niniejszej pracy. Jednym z kluczowych pojęć jest predykcja danych, polega ona na próbie przewidzenia t przyszłych wartości funkcji na podstawie n wcześniejszych wartości. Drugim bardzo waŜnym pojęciem jest szereg czasowy, który jest ciągiem następujących po sobie czasowo wartości. Szereg czasowy moŜe na przykład stanowić odczyt wskazań urządzenia pomiarowego lub zestawienie cen akcji giełdowych danej spółki na giełdzie. Predykcja cen akcji giełdowych jest niezmiernie interesująca dziedziną biorąc pod uwagę korzyści, jakie moŜe przynieść dokładne prognozowanie kolejnych wartości cenowych. Na podstawie tych prognoz moŜna podejmować decyzję czy dane akcje warto kupować w danej chwili czy teŜ moŜe lepiej je sprzedać. Im predykcja jest bardziej dokładna tym lepiej moŜna operować dysponowanymi przez nas pieniędzmi. Nic więc dziwnego, Ŝe prowadzi się wiele prac na ten temat. Niestety wiele z rozwiązań nie jest publikowanych i stanowią one jedynie część całych pakietów, których cena jest czasami niesamowicie wysoka. Predykcja moŜe być krótko lub długookresowa. Predykcja krótko okresowa dotyczy zazwyczaj predykcji kilku wartości w przód, podczas gdy predykcja długookresowa swoim zasięgiem moŜe obejmować bardzo długie okresy. Przyjmuje się, Ŝe dla predykcji krótko okresowych błąd szacowanych wartości z wartościami rzeczywistymi powinien być bardzo mały. Podczas predykcji długookresowej tolerowana jest nawet znaczna rozbieŜność na rzecz zachowania ogólnego trendu danych. W dokumencie tym opisane jest wykorzystanie sieci neuronowych oraz metod regresji w zadaniu predykcji danych. Metody te zostaną dokładnie scharakteryzowane w dalszej części tej pracy. Predykcja danych w szeregach czasowych 7/42 2. Dane Udało się uzyskać dane giełdowe spółki KGHM z lat 2001 – 2005, pobrane one zostały z serwisu www.money.pl. Wśród wartości, jakimi dysponowaliśmy były: • • • • • • Cena otwarcia Cena minimalna w ciągu dnia Cena maksymalna w ciągu dnia Cena podczas zamknięcia giełdy Procentowa zmiana w stosunku do dnia poprzedniego Ilość sprzedanych akcji w ciągu dnia (wolumen) W Tabela 1 znajduje się przykład formatu wykorzystywanych danych. Tabela 1. Dane giełdowe dla akcji spółki KGHM. Data 2005-05-27 2005-05-25 2005-05-24 2005-05-23 2005-05-20 2005-05-19 2005-05-18 2005-05-17 2005-05-16 Otw 29,10 28,60 28,60 28,70 28,90 28,90 28,30 28,90 29,00 Min 29,00 28,60 28,10 28,50 28,50 28,50 27,70 27,70 28,20 Max 29,40 29,00 28,70 29,00 29,40 29,00 28,50 28,90 29,00 Zamkn 29,40 28,90 28,60 28,60 28,60 29,00 28,40 28,10 28,60 Zmn.[%] Wolumen 1,73 1,05 0,00 0,00 -1,38 2,11 1,07 -1,75 -1,72 328848 271585 256392 231664 549326 1188384 818496 702573 207168 s Uznaliśmy, Ŝe interesująca z naszego punktu widzenia jest szczególnie wartość dotycząca ceny akcji podczas zamknięcia giełdy. Posiadane przez nas dane zostały poddane wstępnemu preprocessingowi, w którym usunęliśmy kolumny nie istotne z naszego punktu widzenia. W Tabela 2 został pokazany widok danych po tym procesie. Tabela 2. Dane po preprocessingu. Data 2005-05-27 2005-05-25 2005-05-24 2005-05-23 2005-05-20 2005-05-19 2005-05-18 2005-05-17 2005-05-16 Zamkn 29,40 28,90 28,60 28,60 28,60 29,00 28,40 29,40 28,90 Na Rysunek 1 przedstawiona jest zmiana wartości akcji w czasie. Predykcja danych w szeregach czasowych Dane giełdowe spółki KGHM 45,00 8/42 40,00 35,00 30,00 Wartość akcji [zł] 25,00 20,00 15,00 10,00 5,00 0,00 2005-05-27 2005-04-18 2005-03-07 2005-01-27 2004-12-21 2004-11-12 2004-10-04 2004-08-26 2004-07-20 2004-06-11 2004-05-04 2004-03-23 2004-02-13 2004-01-07 2003-11-25 2003-10-16 2003-09-09 2003-07-31 2003-06-24 2003-05-15 2003-04-03 2003-02-25 2003-01-17 2002-12-05 2002-10-24 2002-09-17 2002-08-08 2002-07-01 2002-05-20 2002-04-09 2001-11-20 2001-07-30 2001-04-04 2000-08-11 1999-05-25 1999-03-29 1999-01-22 1998-11-09 Data [dni] Rysunek 1. Dane giełdowe spółki KGHM. PoniewaŜ nie widać w tych danych wyraźniej zaleŜności postanowiliśmy przebadać nasze rozwiązanie równieŜ na innych danych wejściowych. Wybraliśmy do tego następujące funkcje: • • • • Funkcja liniowa y = ax+b Funkcja kwadratowa y = ax2 + bx + c Funkcja okresowa y = sin(x) + a Funkcja okresowa y = sin(x) + x PoniŜej znajdują się wykresy tych funkcji. Predykcja danych w szeregach czasowych Cena [zł] 10000 12000 14000 Cena [zł] 100 200 300 400 500 600 700 800 900 0 2000 4000 6000 8000 2003-01-27 2003-03-27 2003-05-27 2003-07-27 0 2002-04-16 2002-06-16 2002-08-16 2002-10-16 2002-12-16 Rysunek 3. Wykres funkcji kwadratowej. Funkcja kwadratowa y=ax^2+bx+c Rysunek 2. Wykres funkcji liniowej. 2003-02-16 2003-04-16 2003-06-16 2003-08-16 Data [dni] 2003-10-16 2003-12-16 2004-02-16 2004-04-16 2004-06-16 2004-08-16 2004-10-16 2004-12-16 2005-02-16 2003-09-27 Funkcja liniowa y=-ax+b 2003-11-27 2004-01-27 Data [dni] 2004-03-27 2004-05-27 2004-07-27 2004-09-27 2004-11-27 2005-01-27 2005-03-27 2005-04-16 2005-05-27 9/42 Predykcja danych w szeregach czasowych Cena [zł] 10,00 12,00 14,00 Cena [zł] 10,5 11,5 8,5 9,5 10 11 8 9 0,00 2002-04-16 2002-06-16 2002-08-16 2002-10-16 2002-12-16 2,00 4,00 6,00 8,00 2002-04-16 2002-06-16 2002-08-16 2002-10-16 2002-12-16 Rysunek 5. Funkcja okresowa sin(x) + x Rysunek 4. Funkcja okresowa sin(x) + a 2003-02-16 2003-04-16 2003-02-16 2003-04-16 2003-06-16 2003-08-16 Data [dni] 2003-10-16 2003-12-16 2004-02-16 2004-04-16 2004-06-16 2004-08-16 2004-10-16 2004-12-16 2005-02-16 2005-04-16 Funkcja okresowa y=sin(x)+a Fukncja sin(x)+x 2003-06-16 2003-08-16 Data [dni] 2003-10-16 2003-12-16 2004-02-16 2004-04-16 2004-06-16 2004-08-16 2004-10-16 2004-12-16 2005-02-16 2005-04-16 10/42 Predykcja danych w szeregach czasowych 11/42 3. Predykcja Jak wspominaliśmy juŜ we wstępie predykcja ma za zadanie oszacowanie wartości funkcji na podstawie innych jej wartości. Predykcja w szeregach czasowych bazuje na wartościach z przeszłości w celu próby oszacowania wartości w kolejnych punktach czasu. Jakość predykcji mierzy się zazwyczaj jako średnie odchylenie wartości uzyskanych w poszczególnych punktach od wartości rzeczywistych (oczekiwanych). Weźmy pod uwagę przykładową funkcję przedstawioną na Rysunek 6, oraz pewne punkty kontrolne t0, t1 oraz t2. Funkcja rzeczywista, czyli ta która próbujemy oszacować narysowana jest linią ciągłą, zaś nasze oszacowanie na wykresie narysowane jest linią przerywaną. Z rysunku łatwo moŜna zobaczyć, Ŝe znalezione oszacowanie róŜni się od funkcji jakiej szukaliśmy. Rysunek 6. Związek pomiędzy wartościami funkcji predykowanymi i rzeczywistymi. Przyjęta przez nas miara jakości predykcji wyraŜona jest wzorem (1). Błąd predykcji: n Err = Objaśnienie: ∑o i =1 z −o (1) n Err – całkowity błąd predykcji o – wartość uzyskana z predykcji oz – wartość oczekiwana n – ilość elementów predykowanego zbioru Predykcja danych w szeregach czasowych 12/42 Predykcja krótko okresowa – jest to rodzaj predykcji, który na podstawie wartości z przeszłości (okna) próbuje oszacować małą liczbę wartości w przyszłości. Podczas takiej predykcji nacisk kładziony jest na minimalizacje błędu predykcji. Podczas predykcji kaŜdej wartości wykorzystuje się dane rzeczywiste. W przypadku naszego programu byłaby to sytuacja, w której prognozuje on cenę akcji na następny dzień na podstawie wartości poprzednich. Za kaŜdym razem do programu podawane są rzeczywiste wartości cen akcji z dni poprzednich. Cena [zł] Rysunek 7. Idea predykcji krótko okresowej. Predykcja długo okresowa – to rodzaj predykcji który ma na celu prognozę trendu badanej funkcji. Nacisk kładziony jest na zachowanie ogólnego charakteru funkcji, a niŜeli dokładne przewidzenie przyszłych wartości. Predykcja taka dokonywana jest zazwyczaj poprzez przesuwanie okna danych z jednoczesnym włączaniem do szeregu uczącego przewidzianych wartości. Schemat ideowy takiego rozwiązania przedstawiony jest na Rysunek 8. Rysunek 8. Idea predykcji długo okresowej. Predykcja danych w szeregach czasowych 13/42 4. Metody predykcji W programie zostały zastosowane trzy metody predykcji. Dwie z nich wykorzystują sztuczną sieć neuronową, trzecia natomiast opiera się na metodzie regresji wielomianowej dowolnego stopnia. Rozwiązanie hybrydowe umoŜliwia wykorzystanie dowolnej kombinacji tych metod. Na Rysunek 9 przedstawiony jest ideowy schemat pracy hybrydy z włączonymi wszystkimi metodami predykcji. Rysunek 9. Schemat blokowy hybrydy. W dalszej części tego rozdziału zostanie dokładnie wyjaśnione kaŜde z tych rozwiązań. Sieć neuronowa numeryczna Jako pierwsze omówimy rozwiązanie bazujące na sieci neuronowej z propagacją wsteczną. Nazwa „sieć numeryczna” została jej nadana ze względu na sposób pracy z danymi. Sieć ta składa się przynajmniej z trzech warstw (Rysunek 10), pierwsza warstwa – wejściowa, jest odpowiedzialna za pobieranie wartości funkcji. Liczność tej warstwy odpowiada dokładnie szerokości okna danych. KaŜdy neuron pobiera wobec tego jedną wartość z okna i przekazuje go do warstwy ukrytej. Warstwa ukryta jest konfigurowalna w programie. MoŜemy określić ile neuronów będzie wchodzić w jej skład. Dodatkowo mamy równieŜ moŜliwość określenia ilości tych warstw. W literaturze podawane jest jednak najczęściej, Ŝe sieć taka powinna posiadać jedną warstwę ukrytą o liczności równej ilości neuronów w warstwie wejściowej. W naszym programie postanowiliśmy jednak sprawdzić jak zachowują się sieci z większą ilością warstw ukrytych oraz z róŜna od wejściowej liczbą neuronów w nich zawartych. Warstwa wyjściowa składa się zawsze z jednego neuronu, którego wartość na wyjściu stanowi wynik działania sieci. Predykcja danych w szeregach czasowych 14/42 Wyjście – denormalizacja wartości Warstwa wyjściowa Warstwa ukryta 1 2 3 4 5 6 7 8 Warstwa wejściowa 1 2 3 4 5 6 7 8 Wejścia do sieci – normalizacja danych Rysunek 10. Schemat sieci numerycznej. Błąd działania sieci: ilośl _ wyjsc ilosc _ wzorców Blad = Objaśnienie: ∑ (o i =0 Z − o) 2 ∑ i =1 (2) ilosc _ wyjsc Blad –błąd pracy sieci neuronowej o – wartość uzyskana na wyjściu z neuronu warstwy wyjściowej oz – wartość oczekiwana na wyjściu neuronu ilosc_wzorców – ilość wzorców danych ilosc_wyjsc – ilość wyjść sieci neuronowej Wartości dostarczane do warstwy wejściowej poddaje się normalizacji zgodnie z następującym wzorem: Normalizacja wartości wejściowej xs = Objaśnienie: xr − min max − min (3) xs – wartość podawana na wejście sieci Predykcja danych w szeregach czasowych xr – wartość rzeczywista przekazana na wejście min – minimalna wartość w zbiorze danych max – maksymalna wartość w zbiorze danych Wyjście z sieci następnie poddawane jest procesowi denormalizacji: 15/42 xs = xr ⋅ (max − min) + min Objaśnienie: xs – wartość podawana na wejście sieci xr – wartość rzeczywista przekazana na wejście min – minimalna wartość w zbiorze danych max – maksymalna wartość w zbiorze danych (4) Do uczenia sieci zastosowany jest algorytm propagacji wstecznej. KaŜdy z neuronów wchodzących w skład sieci ma dodatkowe wejście zwane biasem, które zawsze na wejściu ma podawaną wartość 1. Jako funkcja aktywacji neuronu zastosowana została funkcja unipolarna. Sieć neuronowa znakowa Sieć znakowa w naszym programie to specyficzny rodzaj sieci, która na wejściu analizuje nie wartości liczb a cyfry, z jakich one się składają. Efektem działania takiej sieci jest zatem predykcja pewnego napisu, który w szczególności będzie liczbą. Przykład konwersji liczby 2.5 na wejścia sieci znakowej został pokazany na Rysunek 11. Rysunek 11. Schemat konwersji danych dla sieci znakowej. NaleŜy zwrócić uwagę, Ŝe dla ciągu liczb 2.5; 2.51; 4.321 naleŜy ujednolicić ich zapis. W programie realizowane jest to dopisaniem tylu zer końcowych, aby długość kaŜdej liczby była taka sama. Dla naszego przykładu po takiej konwersji uzyskalibyśmy liczby (a w zasadzie napisy): 2.500 ; 2.510; 4.321 Predykcja danych w szeregach czasowych Budowa sieci znakowej jest następująca: • • • 16/42 Liczba neuronów w warstwie wejściowej – długość najdłuŜszej liczby (w postaci napisu) * 4 * szerokość okna Liczba neuronów w warstwie ukrytej – 0.5 * ilość neuronów wejściowych Liczba neuronów wyjściowych – długość najdłuŜszej liczby z danych uczących (w postaci napisu) * 4 Rysunek 12. Budowa sieci znakowej. Liczba, 4 przez która przemnaŜana jest liczba neuronów warstwy wejściowej i wyjściowej, wynika z faktu konwersji kaŜdej cyfry na postać binarną. PoniewaŜ musimy zakodować 10 cyfr oraz przecinek, potrzebnych jest naw w tym celu 11 wartości, a najbliŜsza potęgą dwójki jest 4 (liczba 16). KaŜdy neuron sieci znakowej zbudowany jest tak samo jak neuron sieci numerycznej. Błąd sieci równieŜ liczony jest ze wzoru (2). Sieć uczona jest równieŜ algorytmem BackPropagation. Zdecydowaną róŜnicą, jaka cechuje sieć znakową i sieć liczbową poza sposobem interpretacji danych wejściowych jest ilość neuronów, jaka wchodzi w ich skład. Zastosowanie sieci znakowej wynikało z paru czynników. Pierwszy z nich polegał na chęci przetestowania zastosowalności i przydatności takiego podejścia. Nigdzie w literaturze nie spotkaliśmy się z podobnym rozwiązaniem, dlatego ciekawiło nas jakie rezultaty jesteśmy w stanie osiągnąć z jego pomocą. Drugim powodem jaki przemawiał za zastosowaniem sieci znakowej był fakt jej wraŜliwości nawet na bardzo małe zmiany wartości wejściowych. Wystarczy, Ŝe weźmiemy taki przykład: Zakres danych = 100 Wartość 1 = 45.500 Wartość 2 = 49.000 Wartość 3 = 45.506 Dla sieci numerycznej wartości 1 oraz 3 są w zasadzie nierozróŜnialne, podczas gdy w sieci znakowej zmianie ulegnie wartość 3 neuronów. Regresja jest metodą, która polega na ustaleniu wzoru krzywej pewnego stopnia, w naszym przypadku jest to krzywa wielomianowa, poprzez dostrajanie jej parametrów. Dostrajanie to polega na minimalizacji średniego odchylenia krzywej aproksymującej prostą od funkcji bazowej. Wybranie stopnia wielomianu pozawala na mniejsze lub większe dopasowanie się krzywej regresji do funkcji. PoniŜej przedstawionych jest kilka przykładów, które demonstrują wpływ stopnia wielomianu na otrzymany wynik: Regresja Predykcja danych w szeregach czasowych Wartość akcji [zł] Wartość akcji [zł] 10,00 15,00 20,00 25,00 30,00 35,00 40,00 45,00 0,00 5,00 10,00 15,00 20,00 25,00 30,00 35,00 40,00 45,00 0,00 5,00 2005-05-27 2005- 05-27 Rysunek 15. Przykład przybliŜenia funkcji wielomianem czwartego stopnia. Rysunek 13. Przykład przybliŜenia funkcji wielomianem drugiego stopnia. 2005-04-19 2005-03-09 2005-02-01 2004-12-27 2004-11-19 2004-10-12 2004-09-06 2004-07-30 2004-06-24 2004-05-18 2004-04-07 2004-03-02 2005- 04-19 2005- 03-09 2005- 02-01 2004- 12-27 2004- 11-19 2004- 10-12 2004- 09-06 2004- 07-30 2004- 06-24 2004- 05-18 2004- 04-07 2004- 03-02 Rysunek 17.Przykład przybliŜenia funkcji wielomianem szóstego stopnia. Dane giełdowe spółki KGHM Dane giełdowe spółki KGHM 2004- 01-26 2003- 12-15 2003- 11-06 2003- 10-01 2003- 08-26 2003- 07-18 Data [dni] 2003- 06-11 2003- 05-06 2003- 03-26 2003- 02-18 2003- 01-13 2002- 12-02 2002- 10-22 2002- 09-16 2002- 08-08 2002- 07-02 2002- 05-22 2002- 04-12 2001- 12-14 2001- 08-22 2001- 05-16 2000- 10-13 1999- 08-25 1999- 04-26 1999- 02-15 1998- 12-02 2004-01-26 2003-12-15 2003-11-06 2003-10-01 2003-08-26 2003-07-18 Data [dni] 2003-06-11 2003-05-06 2003-03-26 2003-02-18 2003-01-13 2002-12-02 2002-10-22 2002-09-16 2002-08-08 2002-07-02 2002-05-22 2002-04-12 2001-12-14 2001-08-22 2001-05-16 2000-10-13 1999-08-25 1999-04-26 1999-02-15 1998-12-02 Wartość akcji [zł] 10,00 15,00 20,00 25,00 30,00 35,00 40,00 45,00 0,00 5,00 2005- 05-27 2005- 04-19 2005- 03-09 2005- 02-01 2004- 12-27 2004- 11-19 2004- 10-12 2004- 09-06 2004- 07-30 2004- 06-24 2004- 05-18 2004- 04-07 2004- 03-02 Dane giełdowe spółki KGHM 2004- 01-26 2003- 12-15 2003- 11-06 2003- 10-01 2003- 08-26 2003- 07-18 Data [dni] 2003- 06-11 2003- 05-06 2003- 03-26 2003- 02-18 2003- 01-13 2002- 12-02 2002- 10-22 2002- 09-16 2002- 08-08 2002- 07-02 2002- 05-22 2002- 04-12 2001- 12-14 2001- 08-22 2001- 05-16 2000- 10-13 1999- 08-25 1999- 04-26 1999- 02-15 1998- 12-02 Wartość akcji [zł] Wartość akcji [zł] 10,00 15,00 20,00 25,00 30,00 35,00 40,00 45,00 0,00 5,00 10,00 15,00 20,00 25,00 30,00 35,00 40,00 45,00 0,00 5,00 2005- 05-27 2005- 05-27 Rysunek 16. Przykład przybliŜenia funkcji wielomianem piątego stopnia. Rysunek 14. Przykład przybliŜenia funkcji wielomianem trzeciego stopnia. 2005- 04-19 2005- 03-09 2005- 02-01 2004- 12-27 2004- 11-19 2004- 10-12 2004- 09-06 2004- 07-30 2004- 06-24 2004- 05-18 2004- 04-07 2004- 03-02 2005- 04-19 2005- 03-09 2005- 02-01 2004- 12-27 2004- 11-19 2004- 10-12 2004- 09-06 2004- 07-30 2004- 06-24 2004- 05-18 2004- 04-07 2004- 03-02 Dane giełdowe spółki KGHM 2004- 01-26 2003- 12-15 2003- 11-06 2003- 10-01 2003- 08-26 2003- 07-18 Data [dni] 2003- 06-11 2003- 05-06 2003- 03-26 2003- 02-18 2003- 01-13 2002- 12-02 2002- 10-22 2002- 09-16 2002- 08-08 2002- 07-02 2002- 05-22 2002- 04-12 2001- 12-14 2001- 08-22 2001- 05-16 2000- 10-13 1999- 08-25 1999- 04-26 1999- 02-15 1998- 12-02 Dane giełdowe spółki KGHM 2004- 01-26 2003- 12-15 2003- 11-06 2003- 10-01 2003- 08-26 2003- 07-18 Data [dni] 2003- 06-11 2003- 05-06 2003- 03-26 2003- 02-18 2003- 01-13 2002- 12-02 2002- 10-22 2002- 09-16 2002- 08-08 2002- 07-02 2002- 05-22 2002- 04-12 2001- 12-14 2001- 08-22 2001- 05-16 2000- 10-13 1999- 08-25 1999- 04-26 1999- 02-15 1998- 12-02 17/42 Predykcja danych w szeregach czasowych 18/42 5. Eksperymenty 1. Badanie błędu sieci podczas procesu uczenia Pierwsze badanie miało na celu określenie zaleŜności pomiędzy wartością błędu sieci, a długością procesu uczenia. Dla sieci numerycznej zaleŜność ta została przedstawiona na Rysunek 18, a dla sieci znakowej, na Rysunek 19. Jak widać obie zaleŜności mają charakter 1/x. Uczenie sieci numerycznej 3,5 3 2,5 Wartość błędu 2 1,5 1 0,5 0 1 51 101 151 201 251 301 351 Ilość epok uczących Rysunek 18. Wykres zaleŜności błędu sieci numerycznej od ilości epok uczących. Błąd podczas uczenia sieci znakowej 5 4,5 4 3,5 Błąd sieci 3 2,5 2 1,5 1 0,5 0 1 26 51 Ilość epok 76 Rysunek 19. Wykres zaleŜności błędu sieci znakowej od ilości epok uczących. Predykcja danych w szeregach czasowych 19/42 2. Badanie wpływu parametrów uczenia na ilość epok uczących oraz błąd sieci. Badanie polegało na sprawdzeniu wpływu parametrów uczenia takich jak: maksymalny dopuszczalny błąd, współczynnik uczenia. Jak widać (Tabela 3. Błąd predykcji sieci liczbowej dla zbioru uczącego.Tabela 3 i Tabela 4) zmniejszenie wartośći dopuszczalnego błędu wpływa na polepszenie jakości otrzymywanych rozwiązań. JednakŜe związane jest to z dodatkowym kosztem obliczeniowym, wynikającym z dłuŜszego procesu uczenia. Tabela 3. Błąd predykcji sieci liczbowej dla zbioru uczącego. L.p. 1 2 3 4 5 6 7 8 9 10 Średnia: Max_bład=0,1 Wsp_uczenia=0.25 0,33944595 0,40685362 0,3211001 0,39504743 0,30614528 0,3702581 0,55567235 0,4061748 0,44178638 0,34696692 0,388945093 Max_błąd=0,1 Wsp_uczenia=0.1 0,40188 0,377126 0,435145 0,399811 0,388575 0,401558 0,39477 0,39934 0,405562 0,399018 0,400279 Max_błąd=0,01 Wsp_uczenia=0.25 0,119438 0,087539 0,139914 0,178516 0,166054 0,100523 0,119242 0,393672 0,096405 0,212274 0,161358 Tabela 4. Liczba epok uczących sieci numerycznej dla zbioru testowego. L.p. 1 2 3 4 5 6 7 8 9 10 Średnia: Max_bład=0,1 Wsp_uczenia=0.25 128 51 54 32 61 31 47 73 36 38 50,11363636 Max_błąd=0,1 Wsp_uczenia=0.1 156 67 104 87 121 131 108 130 109 104 101,5545 Max_błąd=0,01 Wsp_uczenia=0.25 443 638 723 879 505 660 848 480 742 637 595,9318 Predykcja danych w szeregach czasowych 3. Predykcja funkcji 20/42 W celu porównania działania wykorzystanych metod, poddano predykcji następujące funkcje: • funkcja liniowa • funkcja kwadratowa • funkcja sinusoidalna (sin(x) + a) • funkcja sinusoidalna połączona z funkcja liniową (sin(x) + x) • funkcja przedstawiająca notowania cen akcji firmy KGHM Polska Miedź S.A. Proces testowania polegał na wyuczeniu sieci numerycznej i znakowej na wybranym podzbiorze dziedziny funkcji, a następnie próbie predykcji wartości dla nieznanych dotąd argumentów. W kolejnych punktach przedstawione są uzyskiwane rezultaty. Predykcja danych w szeregach czasowych 4. Predykcja funkcji liniowej 21/42 Badania predykcji funkcji liniowej przedstawionej na Rys.20, miało na celu określenie zdolności systemu do wykrywania prostych zaleŜności między danymi. Rysunek 20. Funkcja linowa. Jako pierwszą zastosowaną metodę opartą na sieci numerycznej. Predykcję przeprowadzono dla dwóch wartości dopuszczalnego błędu: 1.0 i 0.01. Jak wynika z Rysunek 21 i Rysunek 24, obniŜenie progu błędu, pozwala na lepsze odwzorowanie funkcji, dla wartości wchodzących w skład zbioru uczącego. Wpływa to jednak ujemnie na zdolność uogólniania (Rysunek 22 i Rysunek 25). Akceptowalne rezultaty otrzymujemy jedynie dla predykcji krótkookresowej (krokowej). Dla predykcji długookresowej kumulacja błędu jest tak duŜa, Ŝe wartości predykowane nie zachowują nawet trendu funkcji bazowej (Rysunek 23 i Rysunek 26). Predykcja z zastosowaniem sieci numerycznej (max. błąd = 1): Rysunek 21. Predykcja na zbiorze uczącym. Predykcja danych w szeregach czasowych 22/42 Rysunek 22. Predykcja krokowa na zbiorze testowym. Rysunek 23. Predykcja ciągła na zbiorze testowym. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 0.01): Rysunek 24. Predykcja na zbiorze uczącym. Rysunek 25 Predykcja krokowa na zbiorze testowym. Rysunek 26 Predykcja ciągła na zbiorze testowym. Predykcja danych w szeregach czasowych 23/42 Drugi test został przeprowadzony na sieci znakowej (zasada działania opisana w poprzednim punkcie). Uzyskane wyniki dla duŜego błędu (powyŜej 1) nie wykazują Ŝadnej (bardzo znikomą) korelacji z funkcją bazową (Rysunek 27 i Rysunek 28). Dopiero zmniejszenie dopuszczalnego błędu pozwoliło uzyskać akceptowalne wyniki dla zbioru uczącego. JednakŜe, tak jak podejrzewaliśmy, sieć ta ma tendencję do uczenia się na pamięć, co moŜna zaobserwować na Rysunek 29 i Rysunek 30. Predykcja z zastosowaniem sieci znakowej (max. błąd = 1): Rysunek 27. Predykcja na zbiorze uczącym. Rysunek 28. Predykcja krokowa na zbiorze testowym. Predykcja z zastosowaniem sieci znakowej (max. błąd = 0.01) Rysunek 29. Predykcja na zbiorze uczącym. Rysunek 30. Predykcja krokowa na zbiorze testowym. Predykcja danych w szeregach czasowych 5. Predykcja funkcji kwadratowej 24/42 Kolejny test przeprowadzony został dla funkcji kwadratowej, przedstawionej na Rysunek 31. Badanie to ma na celu sprawdzenie zdolności uogólniania zaleŜności funkcyjnej. Badania zostały przeprowadzone zarówno dla sieci numerycznej jak i sieci znakowej. Rysunek 31. Funkcja kwadratowa. Uzyskane wyniki są porównywalne z wynikami otrzymanymi w poprzednim badaniu. Po raz kolejny swoja przewagę wykazała sieć numeryczna. Podczas testów potwierdziło się poprzednie przypuszczenie, Ŝe dla małej dopuszczalnej wartości błędu sieci, uczy się ona na pamięć. PoniŜej znajdują się otrzymane wyniki. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 1): Rysunek 32. Predykcja na zbiorze uczącym. Predykcja danych w szeregach czasowych 25/42 Rysunek 33. Predykcja krokowa na zbiorze testowym. Rysunek 34. Predykcja ciągła na zbiorze testowym. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 0.01) Rysunek 35. Predykcja na zbiorze uczącym. Rysunek 36. Predykcja krokowa na zbiorze testowym. Rysunek 37. Predykcja ciągła na zbiorze testowym. Predykcja danych w szeregach czasowych 26/42 Predykcja z zastosowaniem sieci znakowej (max. błąd = 1) Rysunek 38. Predykcja na zbiorze uczącym. Rysunek 39. Predykcja krokowa na zbiorze testowym. Predykcja z zastosowaniem sieci znakowej (max. błąd = 0.01) Rysunek 40. Predykcja na zbiorze uczącym. Rysunek 41. Predykcja krokowa na zbiorze testowym. Predykcja danych w szeregach czasowych 6. Predykcja funkcji okresowej – y=sin(x) + a 27/42 Kolejne testy przeprowadzone zostały dla funkcji okresowej w celu zbadania zdolności sieci do uczenia się schematów. Na Rysunek 42 przestawiony jest wykres funkcji bazowej. Rysunek 42. Funkcja sinusoidalna. Podczas prowadzenia badań zaobserwowaliśmy, iŜ okresowość funkcji pozwala zmniejszyć dopuszczalny błąd. W poprzednich badaniach zabieg ten dał negatywne efekty, których przejawem była nauka wzorców na pamięć. W aktualnie testowanej funkcji cecha ta jest poŜądana. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 1): Rysunek 43. Predykcja na zbiorze uczącym. Predykcja danych w szeregach czasowych 28/42 Rysunek 44. Predykcja krokowa na zbiorze testowym. Rysunek 45. Predykcja ciągła na zbiorze testowym. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 0.01): Rysunek 46. Predykcja na zbiorze uczącym. Rysunek 47. Predykcja krokowa na zbiorze testowym. Rysunek 48. Predykcja ciągła na zbiorze testowym. Predykcja danych w szeregach czasowych 7. Predykcja funkcji okresowej – y=sin(x) + x 29/42 W celu zbadania zdolności uogólniania zaleŜności funkcyjnych przy jednoczesnym wykorzystaniu faktu okresowości funkcji, badaniu poddaliśmy funkcję y=sin(x)+x. Wykres funkcji znajduje się na Rysunek 49. Rysunek 49. Funkcja sinusoidalno-malejąca. Jak wykazują przeprowadzone badania sieć numeryczna z dobrym rezultatem potrafiła odwzorować trend rozpatrywanej funkcji. Wysoka dokładność predykcji została uzyskana nie tylko na wzorcach uczących, ale równieŜ na zbiorze testowym (Rysunek 54). Wyniki predykcji długookresowej (ciągłej) pozostają nadal niezadowalające (Rysunek 52 i Rysunek 55). Predykcja z zastosowaniem sieci numerycznej (max. błąd = 1): Rysunek 50. Predykcja na zbiorze uczącym. Predykcja danych w szeregach czasowych 30/42 Rysunek 51. Predykcja krokowa na zbiorze testowym. Rysunek 52. Predykcja ciągła na zbiorze testowym. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 0.01): Rysunek 53. Predykcja na zbiorze uczącym. Rysunek 54. Predykcja krokowa na zbiorze testowym. Rysunek 55. Predykcja ciągła na zbiorze testowym. Predykcja danych w szeregach czasowych Predykcja z zastosowaniem sieci znakowej (max. błąd = 1): 31/42 Rysunek 56. Predykcja na zbiorze uczącym. Rysunek 57. Predykcja krokowa na zbiorze testowym. Predykcja z zastosowaniem sieci znakowej (max. błąd = 0.01): Rysunek 58. Predykcja na zbiorze uczącym. Rysunek 59. Predykcja krokowa na zbiorze testowym. Predykcja danych w szeregach czasowych 32/42 8. Predykcja danych giełdowych na przykładzie notowań akcji firmy KGHM Polska Miedź S.A. Najbardziej istotnym testem z punktu widzenia projektu było badanie zaproponowanego rozwiązania na danych rzeczywistych. Wstępna analiza ciągu uczącego nie pozwalała nam zakładać, Ŝe istnieją w nim jakiekolwiek zaleŜności funkcyjne (Rysunek 60). Rysunek 60. Funkcja notowań akcji firmy KGHM Polska Miedź S.A. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 1): Rysunek 61. Predykcja na zbiorze uczącym Predykcja danych w szeregach czasowych 33/42 Rysunek 62. Predykcja krokowa na zbiorze testowym. Rysunek 63. Predykcja ciągła na zbiorze testowym. Dla duŜej wartości dopuszczalnego błędu, sieć numeryczna nie odwzorowuje funkcji bazowej. Jest to związane z faktem bardzo małej róŜnicy pomiędzy kolejnymi wartościami w ciągu uczącym (Rysunek 61, Rysunek 62 i Rysunek 63). Predykcja z zastosowaniem sieci numerycznej (max. błąd = 0.01): Rysunek 64. Predykcja na zbiorze uczącym. Predykcja danych w szeregach czasowych 34/42 Rysunek 65. Predykcja krokowa na zbiorze testowym Rysunek 66. Predykcja ciągła na zbiorze testowym. Przy obniŜeniu wartości dopuszczalnego błędu, uzyskane rezultaty na ciągu testowym wykazują niesamowite zdolności predykcji danych. Sieć potrafiła poprawnie predykować wartości dla 4-miesięcznego okresu następującego po ciągu uczącym. Niemniej jednak zdolność do predykcji długoterminowej nie uległa znacznej poprawie. Okres predykcji w tym przypadku nie przekracza nawet tygodnia. Predykcja z zastosowaniem sieci numerycznej (max. błąd = 0.001): Rysunek 67. Predykcja na zbiorze uczącym Predykcja danych w szeregach czasowych 35/42 Rysunek 68. Predykcja krokowa na zbiorze testowym. Rysunek 69. Predykcja ciągła na zbiorze testowym. Predykcja z zastosowaniem sieci znakowej (max. błąd = 1): Rysunek 70. Predykcja na zbiorze uczącym. Rysunek 71. Predykcja krokowa na zbiorze testowym. Predykcja z zastosowaniem sieci znakowej (max. błąd = 0.01) Rysunek 72. Predykcja na zbiorze uczącym. Rysunek 73. Predykcja krokowa na zbiorze testowym. Predykcja danych w szeregach czasowych Predykcja z zastosowaniem sieci znakowej (max. błąd = 0.001) 36/42 Rysunek 74. Predykcja na zbiorze uczącym. Rysunek 75. Predykcja krokowa na zbiorze testowym. Zaskakującym jest fakt, iŜ sieć znakowa wykazuje zdolność do wiernego odwzorowywania tak złoŜonej funkcji. Wyniki uzyskane w tej części badań są dla nie duŜo lepsze, niŜ w poprzednich testach. W pewnych sytuacjach jest ona lepsza niŜ sieć numeryczna. Wytłumaczyć to moŜna faktem, iŜ w ciągu uczącym róŜnice pomiędzy kolejnymi elementami są bardzo małe. Predykcja z zastosowaniem sieci numerycznej i sieci znakowej (max. błąd = 0.01): Rysunek 76. Predykcja na zbiorze uczącym. Predykcja danych w szeregach czasowych 37/42 Rysunek 77. Predykcja krokowa na zbiorze testowym, ciągłym w stosunku do zbioru uczącego. Rysunek 78. Predykcja ciągła na zbiorze testowym, po okresie jednorocznej przerwy, w stosunku do zbioru uczącego. Ostatnie badanie polegało na sprawdzeniu jakości predykcji dla danych testowych, pochodzących z następujących po sobie lat. Jak moŜna zauwaŜyć dokładność działania sieci maleje wraz z Predykcja danych w szeregach czasowych 38/42 6. Opis programu PoniŜsze rysunki przedstawiają interfejs programu oraz jego podstawowe funkcje. Okno z wykresem wyników Wybór metod predykcji Otrzymane krzywe predykcji Parametry sieci numerycznej Parametry regresji wielomianowej Parametry nauki sieci neuronowych Parametry zbiorów uczących Rozpoczęcie nauki Rysunek 79. Okno główne programu - widok parametrów nauki. Predykcja danych w szeregach czasowych 39/42 Parametry dotyczące zakresu predykcji Parametry dotyczące typu predykcji Rozpoczęcie predykcji Uzyskane wartości z predykcji Rysunek 80. Okno główne programu - widok parametrów predykcji Dane kontrolne gromadzone w procesie nauki oraz predykcji Rysunek 81. Okno główne programu - widok danych wyników. Predykcja danych w szeregach czasowych 40/42 Wartość predykcji sieci znakowej Wartość predykcji dla metody regresji Wartość rzeczywista funkcji Wartość predykcji sieci numerycznej Rysunek 82. Okno główne programu - widok danych predykcji. Predykcja danych w szeregach czasowych 41/42 7. Wnioski Projekt dał nam moŜliwość zgłębienia wiedzy na temat predykcji i aproksymacji danych. Postawiony przed nami rzeczywisty problem, pozwolił nam zastosować własne rozwiązanie w postaci sieci znakowej. Podejście to nie było nigdzie opisane, dlatego z niecierpliwością oczekiwaliśmy na pierwsze wyniki. W celu zwiększenia efektywności tej metody, postanowiliśmy wspomóc ją innymi rozwiązaniami. Tworząc tym samym system hybrydowy. Nie ogranicza to w Ŝaden sposób naszych moŜliwości związanych z konfiguracją poszczególnych modułów. W celu oceny otrzymanego rozwiązania, przeprowadzone zostały testy na wybranych funkcjach o róŜnych charakterystykach. W dokumencie zamieszczone zostały wyniki przeprowadzonych badań. Sieć numeryczna w znakomitej większości przypadków wykazywała swoją przewagę nad innymi podejściami. Na jej korzyść przemawiają równieŜ: prostota oraz powszechnie znany algorytm uczenia. Zaproponowana przez nas sieć znakowa nie radziła sobie dobrze z funkcjami testowymi. Jednak dla funkcji rzeczywistej (notowań akcji na giełdzie) spisywała się ona porównywalnie lub w nielicznych przypadkach nawet lepiej niŜ sieć numeryczna. Efekt ten uzyskiwany był jednak tylko na krótkich przedziałach czasowych, nieznacznie oddalonych od zbioru uczącego. W projekcie uŜytkownik ma równieŜ moŜliwość wykorzystania metod statystycznych, jaką jest regresja wielomianowa. Rozwiązanie nasze cechuje bardzo dobra zdolność predykcji krótkookresowej, która moŜe być przydatna w rzeczywistych zastosowaniach, na przykład podczas gry na giełdzie. Wyniki predykcji długoterminowej są niezadowalające, czego moŜna się było spodziewać ze względu na kumulację błędów predykcji krótkookresowej, co w skali dłuŜszego okresu czasu odbiegało znacznie od wartości rzeczywistych. Projekt ten stanowił dla nas wyzwanie i pozwolił nam zgłębić nasza wiedzę w tej dziedzinie. Predykcja danych w szeregach czasowych 42/42 Literatura Benjamin W. Wah, Minglun Qian „Constrained Formulations and Algorithms for Stock-Price Predictions Using Recurrent FIR Neural Networks” G. E. P. Box, G. M. Jenkins „Time Series Analysis: Forecasting and Control” Józef Kalisz, Ryszard Pełka, Ryszard Szplet „Problemy projektowe w precyzyjnej metrologii odcinków czasu” Rayid Ghani, Hillery Simmons „Predicting the End-Price of Online Auctions” Rick Martinelli „Market data prediction with adaptive kalman filter” Jeffrey K. MacKie-Mason Anna Osepayshvili Daniel M. Reeves Michael P. Wellman „Price Prediction Strategies for Market-Based Scheduling” Ivakhnenko, A.G. „Recent Developments of Self-Organising Modeling in Prediction and Analysis of Stock Market” Foster „Commodities Futures Price Prediction An Artificial Intelligence Approach” (presentation) Sven F. „Crone Bussiness Forecasting with Artificial Neural Networks” (presentation)

Friday, February 27, 2009

ADAPTACYJNY SYSTEM SYGNALIZACJI ŚWIETLNEJ OPARTY NA ALGORYTMIE GENETYCZNYM

ADAPTACYJNY SYSTEM SYGNALIZACJI ŚWIETLNEJ OPARTY NA ALGORYTMIE GENETYCZNYM

Nowoczesne metody mikrosymulacji ruchu drogowego z wykorzystaniem automatów komórkowych

Nowoczesne metody mikrosymulacji ruchu drogowego z wykorzystaniem automatów komórkowych

Metody predykcji w szeregach czasowych


"Metody predykcji w szeregach czasowych, na przykładzie predykcji cen akcji giełdowych spółki KGHM Polska Miedz S. A." referat wygłoszony na Konferencji Naukowej Studentów w 2006 roku.



Artykuł przedstawia wykorzystanie rozwiązania bazującego na sieciach neuronowych podczas predykcji danych w szeregach czasowych na przykładzie zarówno predykcji krótko jak i długo okresowej cen akcji spółki KGHM Polska Miedź S.A. Dokument szczegółowo omawia dwie architektury sieci neuronowych, jedna bazująca na znakowej reprezentacji, druga na wartościach rzeczywistych. Omówione zostały otrzymane wyniki oraz moŜliwości ulepszenia za pomocą rozwiązania hybrydowego wykorzystującego wyniki działania obu sieci połączone z analizą statystyczną.



Dokument PDF - Metody predykcji w szeregach czasowych, na przykładzie predykcji cen akcji giełdowych spółki KGHM Polska Miedz S. A. (167 kB)

Wednesday, February 18, 2009

Sztuczna Inteligencja - Systemy Hybrydowe


Praca ta stanowi wprowadzenie w zagadnienie systemów hybrydowych (inteligentnych systemów hybrydowych). W dokumencie zawarte są podstawowe informacje dotyczące wyjaśnienia pojęć, przeglądu najczęściej wykorzystywanych metod sztucznej inteligencji oraz charakterystyki ich zalet i wad. Druga część pracy skupia się już na bardziej szczegółowych aspektach zagadnienia. Wyjaśnione w niej zostały powody oraz cele stosowania systemów hybrydowych, proponowane w literaturze architektury oraz modele komunikacji. Końcową część pracy stanowi analiza kierunków rozwoju.



Systemy Hybrydowe - Prezentacja (965 kB)


Michal Stanek-Systemy Hybrydowe

Systemy Hybrydowe Wprowadzenie Michał Stanek (mikol@e-informatyka.pl) 21 stycznia 2005 Streszczenie Praca ta stanowi wprowadzenie w zagadnienie systemów hybrydowych (inteligentnych systemów hybrydowych). W dokumencie zawarte są podstawowe informacje dotyczące wyjaśnienia pojęć, przeglądu najczęściej wykorzystywanych metod sztucznej inteligencji oraz charakterystyki ich zalet i wad. Druga część pracy skupia się już na bardziej szczegółowych aspektach zagadnienia. Wyjaśnione w niej zostały powody oraz cele stosowania systemów hybrydowych, proponowane w literaturze architektury oraz modele komunikacji. Końcową część pracy stanowi analiza kierunków rozwoju. 1 SPIS TREŚCI 2 Spis treści 1 Wstęp 2 Metody sztucznej inteligencji 2.1 Krótki rys historyczny . . . . . . . . . . . . . 2.2 Przegląd metod sztucznej inteligencji . . . . . 2.2.1 Systemy eskpertowe . . . . . . . . . . 2.2.2 Sieci neuronowe . . . . . . . . . . . . . 2.2.3 Algorytmy genetyczne . . . . . . . . . 2.2.4 Logika rozmyta . . . . . . . . . . . . . 2.3 Ocena użyteczności poszczególnych rozwiązań 3 Systemy hybrydowe 3.1 Cele systemu hybrydowego . . . . . . . . . . 3.2 Architektury budowy systemów hybrydowych 3.2.1 Systemy niezależne . . . . . . . . . . . 3.2.2 Systemy transformujące . . . . . . . . 3.2.3 Systemy luźno związane . . . . . . . . 3.2.4 Systemy zintegorwane . . . . . . . . . 3.2.5 Systemy w pełni zintegrowane . . . . . 3.3 Modele pracy systemu hybrydowego . . . . . 3.4 Przykładowy system hybrydowy . . . . . . . 3.5 Kierunki rozwoju systemów hybrydowych . . 4 5 5 6 6 7 8 10 10 12 12 14 14 14 15 15 15 16 17 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spis rysunków 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Kroki milowe rozwoju sztucznej inteligencji . . . . . . . . . . . . Reprezentacja ideowa systemu ekspertowego . . . . . . . . . . . . Model neuronu oraz sieci neuronowej . . . . . . . . . . . . . . . . Przykład klasteryzacji danych . . . . . . . . . . . . . . . . . . . . Schemat procesu działania algorytmu genetycznego . . . . . . . . Przykładowa reprezentacja zbiorów za pomocą logiki rozmytej . . Właściwości różnych metod sztucznej inteligencji . . . . . . . . . Możliwe elementy systemu hybrydowego . . . . . . . . . . . . . . Model systemu niezależnego . . . . . . . . . . . . . . . . . . . . . Model systemu transformującego . . . . . . . . . . . . . . . . . . Model systemu luźno powiązanego . . . . . . . . . . . . . . . . . Model systemu zintegrowanego . . . . . . . . . . . . . . . . . . . Model systemu w pełni zintegrowanego . . . . . . . . . . . . . . . Model przetwarzania w systemach hybrydowych . . . . . . . . . . Model ideowy połączenia Systemu ekspertowego z siecią neuronową Ilość prac naukowych na temat systemów hybrydowych . . . . . 5 6 8 8 9 10 11 13 14 14 15 16 16 17 18 19 SPIS RYSUNKÓW 3 17 Model agenta w systemie wieloagentowym . . . . . . . . . . . . . 19 1 WSTĘP 4 1 Wstęp Wydaje mi się, że wprowadzenie do systemów hybrydowych powinienem rozpocząć od wyjaśnienia samej nazwy, ponieważ dla osób niezaznajomionych z zagadnieniem, może wydawać się dziwna i niezrozumiała, a przez to mylnie interpretowana. Według jednej z definicji słownikowych system jest układem elementów o określonej strukturze, będący uporządkowaną logicznie całością. Hybryda, to natomiast mieszaniec powstały ze skrzyżowania dwóch różnych gatunków, ras, odmian, dziwoląg łączący cechy różnych osobników. Idea systemu hybrydowego bazuje wobec tego na integracji wielu dostępnych technik, metod, narzędzi w jednej spójnej i określonej strukturze stanowiącej logicznie uporządkowaną całość (wspólnie dążącą do osiągnięcia celu). Nasuwa się wobec tego pytanie, po co łączy się wiele różnych rozwiązań? Najogólniej można powiedzieć, że w celu osiągnięcia bardziej zadawalającego efektu niż przy wykorzystaniu każdej z tych technik osobno. Inteligentne systemy hybrydowe (Intelligent Hybrid Systems) starają się integrować odmienne techniki sztucznej inteligencji (logika rozmyta, sieci neuronowe, obliczenia ewolucyjne, metody probabilistyczne, maszynowe uczenie, systemy ekspertowe, itd. . . ). Fundamentem powstawania takich rozwiązań jest stwierdzenie, że metody te między sobą są komplementarne. W praktyce oznacza to, że metody te wzajemnie się uzupełniają, wady jednej są kompensowane zaletami innej. Istnieje wiele możliwych kombinacji wśród systemów symbolicznych i metod tak zwanej miękkiej sztucznej inteligencji (soft-computing) 1 , oraz wiele możliwych sposobów ich łączenia. Dla przykładu sieci neuronowe mogą być łączone z logiką rozmytą, wnioskowaniem na podstawie przykładów, algorytmami genetycznymi. W ostatnich latach, bardzo gwałtowny wzrost zapotrzebowania na wyrafinowane i złożone rozwiązania z dziedziny inteligentnych systemów informatycznych sprawia, że osiągnięcie pełnego sukcesu nie jest możliwe bez wykorzystania możliwości, jakie oferują nam systemy hybrydowe. Reprezentacja i manipulacja, przy pomocy komputerów, dużymi ilościami wiedzy oraz zapewnienie ich integralności, spójności i efektywności wykorzystania jest jednym z kluczowych nurtów badań w dziedzinie szeroko pojętej sztucznej inteligencji. Należy zdawać sobie sprawę z tego, że przyjęty przez nas format przechowywania i reprezentacji wiedzy powinien być w stanie poradzić sobie z pewnymi oczywistymi problemami. Niedokładność i niekompletność zgromadzonej wiedzy to jeden z nich. Różne sposoby przechowywania tejże wiedzy (np. sieci neuronowe, logika rozmyta, systemy ekspertowe) posiadają specyficzne własności radzenia sobie z danymi niepewnymi, nieprecyzyjnymi albo nawet nieprawidłowymi. Pewne metody lepiej nadają się do przechowywania danych numerycznych, jeszcze inne sprawdzają się lepiej, kiedy pragniemy operować na danych w postaci symbolicznej. Nie ma zadowalającego uniwersalnego rozwiązania, pozwalającego radzić sobie z wszystkimi problemami związanymi z reprezentacją wiedzy. 1 Pierwszy raz użył tego terminu Lotfi A. Zadeh 1995 2 METODY SZTUCZNEJ INTELIGENCJI 5 2 2.1 Metody sztucznej inteligencji Krótki rys historyczny Podobnie jak wiele innych, sztuczna inteligencja jest dziedziną nauki, która rozwija się w bardzo prężny sposób. W stosunkowo krótkiej historii, bo zaledwie 60 letniej, zaproponowano wiele koncepcji, które w znaczącym stopniu przyczyniły się do rozwoju, nie tylko jej, ale również wielu innych dziedzin w tym np. teorii sterowania i podejmowania decyzji. Pewne kroki milowe rozwoju AI (Artificial Intelligence) prezentuje rysunek 1. Wiele proponowanych teorii inspirowanych było przez naturę. Podczas gdy jedne próbowały ją naśladować (systemy ekspertowe, wnioskowanie na podstawie przykładów, logika rozmyta) inne ją kopiowały (sieci neuronowe, algorytmy genetyczne). Bardzo dużo danych wdrożeń systemów sztucznej inteligencji, projektowanych jako systemy ekspertowe, miało miejsce na przełomie lat 1970 1980 (MYCIN, DENDRAL, PROSPECTOR). Systemy te zostały tak oto zdefiniowane przez prof. Feigenbaum’a: ”inteligentne programy komputerowe wykorzystujące wiedzę oraz mechanizm wnioskowania w celu rozwiązania problemów, które są na tyle skomplikowane, że celem ich rozwiązania wymagają szczegółowej ekspertyzy wykonanej przez człowieka”. Każde z rozwiązań posiadało jednak pewne braki i ograniczenia. Problemem systemów ekspertowych była między innymi akwizycja wiedzy. Nowe rozwiązania, były odpowiedzią na wady poprzednich. Nowe koncepcje wprowadzały nowe możliwości, ale jednocześnie nowe ograniczenia. W pewnym momencie stało się oczywiste, że pewne metody da się, a nawet trzeba ze sobą łączyć, aby móc z ich pomocą rozwiązać problemy, które wcześniej były nierozwiązywalne (przy wykorzystaniu tylko jednej). W ten sposób postało pojęcie i rozpoczęły się badania nad systemami hybrydowymi. Rysunek 1: Kroki milowe rozwoju sztucznej inteligencji 2 METODY SZTUCZNEJ INTELIGENCJI 6 2.2 2.2.1 Przegląd metod sztucznej inteligencji Systemy eskpertowe Tak jak zostało to przedstawione w poprzednim punkcie idea systemu ekspertowego zainspirowana była sposobem, w jaki ludzie (eksperci w danej dziedzinie) rozwiązują zagadnienia i na podstawie pewnych przesłanek dochodzą do konkluzji (wniosków). Typowa budowa systemu ekspertowego została przedstawiona na rysunku 2. Poszczególne bloki odpowiadają za inne funkcje, bloki przedstawione kolorem jasnoszarym prezentują właściwą część systemu ekspertowego: • Baza wiedzy - stanowi bazę faktów, jaką dysponuje system. Baza ta budowana jest na podstawie danych pozyskanych od ekspertów dziedzinowych, a przekazuje ją do systemu inżynier wiedzy. • Blok rozumowania (mechanizm wnioskowania) jest to najważniejszy składnik systemu ekspertowego, jego zadaniem jest wyciąganie wniosków z przesłanek i pytań wprowadzanych przez użytkownika i generowanie odpowiedzi. • Mechanizmu wyjaśniający - umożliwia wyjaśnienie, na życzenie użytkownika, dlaczego system udzielił takiej, a nie innej odpowiedzi, albo dlaczego system zadał użytkownikowi określone pytanie. Ekstrakcją wiedzy od ekspertów zajmują się na ogół inżynierowie wiedzy. Jest to zwykle długi i żmudny proces, ponieważ wiedza stosowana przez ludzkich ekspertów jest zwykle wiedzą praktyczną i intuicyjną. Rysunek 2: Reprezentacja ideowa systemu ekspertowego 2 METODY SZTUCZNEJ INTELIGENCJI 7 Początkowo systemy ekspertowe były podatne na problemy związane z akwizycją (pozyskiwaniem wiedzy) i wnioskowaniem z niepewnością. W gruncie rzeczy problem transferu wiedzy ludzkiej do systemu ekspertowego jest kluczowy i nazywany jest w literaturze ”‘wąskim gardłem akwizycji wiedzy”’ (knowledge acquisition bottleneck ) [Giarratano98]. Jest to oczywiste o ile zrozumie się jak ciężkim i długim procesem jest przekazanie posiadanej przez eksperta wiedzy. Często wiedza ta jest rutynowa, bądź też intuicyjna, a sam ekspert nie zdaje sobie sprawy z jej posiadania. Drugim problemem systemów ekspertowych jest przekazywanie wiedzy nieścisłej, niepełnej i przybliżonej. Systemy ekspertowe wykorzystywane są m.in. w zagadnieniach: • diagnozowania, • przewidywania, • interpretacji, • planowania, • kontroli. 2.2.2 Sieci neuronowe Idea sieci neuronowych zainspirowana została modelem funkcjonowania mózgu człowieka. Sieć neuronowa składa się z neuronów oraz połączeń miedzyneronowych (rysunek 3). Sieć uczy się zależności, które występują między danymi, można powiedzieć, że sama ekstrahuje reguły, które w systemie ekspertowym trzeba było przekazać ręcznie. Informacje na temat tych właśnie reguł kodowane są w połączeniach miedzyneuronowych, a dokładniej w wagach wejść każdego neuronu. W odróżnieniu od systemu ekspertowego, typowa sieć neuronowa pracuje na danych numerycznych, a nie symbolicznych. Problemem staje się proces wyjaśnienia, dlaczego sieć odpowiedziała tak a nie inaczej. Wiedza nie jest zapisana w czytelny dla człowieka sposób. Można powiedzieć, że sieć działa i generuje odpowiedzi, ale tak naprawdę nie wiemy, dlaczego takie a nie inne. Jest to bardzo poważne ograniczenie, ponieważ czasami musimy wiedzieć, na jakiej podstawie została podjęta pewna decyzja. Dużą zaletą sieci neuronowych jest fakt automatycznego wydobywania wiedzy z przykładów uczących (tutaj pojawia się problem doboru odpowiednich przykładów uczących i testujących). Oprócz sieci neuronowych uczonych z nauczycielem istnieją również sieci, które uczą się bez nadzoru (rysunek 3). Wynikiem ich nauki jest rozpoznanie zależności, jakie występują miedzy danymi. Sieci takie potrafią wyróżniać klastry danych (grupy danych pod jakimś względem do siebie podobnych). Sieci neuronowe wykorzystywane są m.in. do: • rozpoznawania obiektów, • kompresji danych, 2 METODY SZTUCZNEJ INTELIGENCJI 8 • analizy serii danych i przewidywania, • detekcji anormalnych stanów pracy systemu, • analizy oraz klasteryzacji danych, • wizualizacji danych - wielowymiarowych zbiorów danych. Rysunek 3: Model neuronu oraz sieci neuronowej Rysunek 4: Przykład klasteryzacji danych 2.2.3 Algorytmy genetyczne Algorytmy genetyczne zainspirowane zostały obserwacją procesu ewolucji żywych organizmów. Koncepcja ta przeniesiona została przez Johna H. Holland’a 2 METODY SZTUCZNEJ INTELIGENCJI 9 w świat komputerów. Wystarczy założyć, że pewnym środowiskiem jest dziedzina problemu, jaki chcemy rozwiązać. Kodujemy teraz potencjalne początkowe rozwiązania jako osobniki naszej populacji. Następnie uruchamiamy proces ewolucji, w którym osobniki słabiej przystosowane eliminujemy (proces selekcji), a osobniki lepsze poddajemy procesowi krzyżowania. Skrzyżowany osobnik posiada część informacji przekazanej przez swoich rodziców (potencjalnie dobre rozwiązania). Z czasem osobniki będą coraz lepiej przystosowane do danego środowiska, czyli w naszym przypadku będą to coraz lepsze rozwiązania z przestrzeni zadania. Najczęściej działanie algorytmu przebiega następująco: 1. Losowana jest pewna populacja początkowa. 2. Populacja poddawana jest ocenie (selekcja). Najlepiej przystosowane osobniki biorą udział w procesie reprodukcji. 3. Genotypy najlepszych osobników są ze sobą kojarzone poprzez złączanie genotypów rodziców (krzyżowanie). 4. Przeprowadzana jest mutacja, czyli wprowadzenie drobnych losowych zmian. 5. Rodzi się drugie pokolenie i algorytm powraca do kroku drugiego, jeżeli nie znaleziono dostatecznie dobrego rozwiązania. W przeciwnym wypadku uzyskujemy wynik. Rysunek 5: Schemat procesu działania algorytmu genetycznego Algorytmy genetyczne stosowane są m.in. do: • harmonogramowania, 2 METODY SZTUCZNEJ INTELIGENCJI 10 • optymalizacji ułożenia elementów w układach cyfrowych, • znajdowanie optymalnych wartości parametrów, • optymalizacja długości drogi. 2.2.4 Logika rozmyta Logika rozmyta (fuzzy logic)2 , jedna z logik wielowartościowych (multi-valued logic), stanowi uogólnienie klasycznej dwuwartościowej logiki. Została zaproponowana przez Lotfi Zadeha w 1965 roku. W logice rozmytej między stanem 0 (fałsz) a stanem 1 (prawda) rozciąga się szereg wartości pośrednich (rysunek 6), które można kojarzyć z prawdopodobieństwem. Logika rozmyta okazała się bardzo przydatna w zastosowaniach inżynierskich, czyli tam, gdzie klasyczna logika klasyfikująca jedynie według kryterium prawda/fałsz nie potrafi skutecznie poradzić sobie z wieloma niejednoznacznościami i sprzecznościami. Logika rozmyta wykorzystywana jest m.in. w: • elektronicznych systemach sterowania (maszynami, pojazdami i automatami), • zadaniach eksploracji danych, • budowie systemów ekspertowych Rysunek 6: Przykładowa reprezentacja zbiorów za pomocą logiki rozmytej 2.3 Ocena użyteczności poszczególnych rozwiązań W poprzednim podpunkcie zostało przedstawione kilka najważniejszych metod sztucznej inteligencji. Został przedstawiony ich sposób działania oraz przykładowe zastosowania. Zwrócona została również uwaga na pewne mocne i słabe strony każdego z rozwiązań. 2 Definicja zaczerpnięta z Wikipedii, wolnej encyklopedii internetowej. 2 METODY SZTUCZNEJ INTELIGENCJI 11 Przyjrzyjmy się najważniejszym ograniczenią każdej z prezentowanych wcześniej metod: • Sieci neuronowe - brak wyjaśnień • Sieci samoorganizujące - brak możliwości rozwiązywania zadań • Systemy ekspertowe - nie są wystarczająco elastyczne • Algorytmy genetyczne - czasami nie da się zastosować, ze względu na kłopot z kodowaniem osobników, specyficzną dziedzinę problemu lub też inne specyficzne czynniki. • Systemy rozmyte - są rozmyte. . . Właściwości poszczególnych rozwiązań zostały przedstawione na rysunku 7. Oś pionowa demonstruje zdolność adaptacji metody do zmieniających się warunków pracy (w stosunku do założonych warunków początkowych), oś pozioma demonstruje przejście pomiędzy poziomem operacji na liczbach do operacji na wiedzy formalnej. Rysunek 7: Właściwości różnych metod sztucznej inteligencji 3 SYSTEMY HYBRYDOWE 12 3 3.1 Systemy hybrydowe Cele systemu hybrydowego Projektując inteligentny system informatyczny musimy zadać sobie pytanie, jaki jest cel jego pracy oraz na jakim rodzaju danych system będzie on pracował. Wcześniej wspomniany był problem akwizycji wiedzy w kontekście jej niepewności, sprzeczności itp. Przyjrzyjmy się jednak, z jakim rodzajami wiedzy mamy my, na co dzień do czynienia: • Film rozpocznie się o 8:15. [Dokładna] • Film rozpocznie się między 8:00 a 9:00. [Nieprecyzyjna] • Sądzę, że film rozpocznie się o 8:00, ale nie jestem pewien. [Niepewna] • Film rozpocznie się około 8:00. [Przybliżona] • Możliwe, że film rozpocznie się o 8:00. [Możliwa] • Prawdopodobnie film rozpocznie się o 8:00 (90 %). [Prawdopodobna] • Marek mówi, że film rozpocznie się o 8:00, ale Kasia mówi, że o 9:00. [Niespójna] • Nie wiem dokładnie, o której rozpocznie się film, ale zazwyczaj zaczyna się o 9:00. [Niekompletna] • Naprawdę nie wiem, o której zaczyna się film. [Nieznana] • Jestem pewien, że film nie zaczyna się z rana. [Negacja] • Film zaczyna się 2 godziny, po poprzedniej sesji. [Względna] • Film jest grany dzisiaj o 8:00 oraz jutro o 10:00. [Alternatywna] • Film zaczyna się o 8:00, 10:00 oraz 12:00. [Opcjonalna] • Film może się rozpocząć tylko pod warunkiem, że reżyser przyjedzie. [Asocjacyjna] • W następnym miesiącu. [Temporalna] Wiedza ludzka jest często trudna do wyrażenia w formacie, na jakim zazwyczaj operują komputery. Typowym jest fakt, że nie potrafimy sformułować naszej wiedzy w specyficznym języku (formie) jej reprezentacji. Ludzie rozwiązują problemy oraz operują na posiadanej wiedzy za pomocą następujących mechanizmów: • wnioskowanie, • analogia, 3 SYSTEMY HYBRYDOWE 13 • dedukcja, • bazowanie na wcześniejszych doświadczeniach. Naturalna inteligencja bazuje na wielu ”hybrydowych” sposobach jej reprezentacji i manipulacji. Podobnie celem stosowania systemów hybrydowych w dziedzinie sztucznej inteligencji jest: • wykorzystanie całej dostępnej wiedzy na temat specyficznego problemu, • możliwości skorzystania z wielu typów informacji (symbolicznej, numerycznej, nieścisłej, nieprecyzyjnej), • zaoferowanie wielu różnych schematów rozumowania i bardziej trafnego wyszukiwania odpowiedzi na zadawane pytania, • zwiększenia ogólnej efektywności systemu i eliminacja ujemnych stron pojedynczych metod, • stworzenie wydajnych i potężnych systemów rozumowania. Aby osiągnąć te cele konstruuje się systemy hybrydowe w skład, których mogą wchodzić metody przedstawione na rysunku 8 Rysunek 8: Możliwe elementy systemu hybrydowego 3 SYSTEMY HYBRYDOWE 14 3.2 Architektury budowy systemów hybrydowych Architektury systemów hybrydowych mogą być sklasyfikowane według stopnia integracji i sposobu integracji. Stopień integracji jest kryterium do mierzenia stopnia integracji pomiędzy dwoma modułami systemu hybrydowego. 3.2.1 Systemy niezależne Niezależne systemy hybrydowe charakteryzują się tym, że pomiędzy poszczególnymi modułami systemu nie istnieje żadna komunikacja (rysunek 9). Każdy moduł, nie korzysta w żaden sposób z wyników pracy innego modułu. Podejścia tego typu ma tą dobrą zaletę, że daje się zrównoleglić w bardzo dużym stopniu. Niezależność dwóch pracujących systemów może służyć również badaniu efektywności obu rozwiązań. Model ten może być również przyjęty w przypadku prototypowania systemu. Rysunek 9: Model systemu niezależnego 3.2.2 Systemy transformujące System hybrydowy bazujący na modelu transformującym działa na takiej zasadzie, że wyniki pracy jednego modułu systemu są transformowane do innego modułu (np. jako dane wejściowe). Rozwiązanie takie nadaje się bardzo dobrze w przypadkach, kiedy przed przekazaniem danych do głównego modułu systemu występuje potrzeba ich wcześniejszej transformacji lub obróbki (pre-processing danych). Rysunek 10: Model systemu transformującego 3 SYSTEMY HYBRYDOWE 15 3.2.3 Systemy luźno związane W systemach hybrydowych o luźno powiązanej architekturze (rysunek 11) występuje już zjawisko komunikacji pomiędzy modułami. Najczęściej jako medium wymiany danych używane są pliki, w których jeden proces zapisuje wyniki danych inny odczytuje, po czym może nastąpić zamiana. Ważne jest, że komunikacja w tym modelu jest dwustronna. Zaletami takiej architektury jest prostota implementacji, przez co nadają się znakomicie do prototypowania pewnych rozwiązań. Dodatkowa zaleta może być fakt, że taka architektura pozwala na korzystanie z modułów zewnętrznych dostarczonych przez inne osoby lub firmy. Prostota tego rozwiązania okupiona jest niestety wysokim kosztem komunikacji (odczytu. zapisu na dysku, ewentualnego parsowania danych). Rysunek 11: Model systemu luźno powiązanego 3.2.4 Systemy zintegorwane W systemach hybrydowych zintegrowanych przesyłanie informacji pomiędzy modułami odbywa się w pamięci operacyjnej komputera(rysunek 12). Aby możliwe było wykorzystanie tej architektury w systemie hybrydowym, każdy moduł musi zostać zaprojektowany tak, aby umożliwiał komunikację z częściami systemu. Systemy takie są najczęściej dedykowanymi rozwiązaniami, które są projektowane w celu rozwiązanie konkretnego problemu. Ponieważ komunikacja procesów następuje poprzez współdzieloną pamięć operacyjną, zrównoleglenie obliczeń jest czynnością dużo bardziej skomplikowaną niż w przypadku wcześniejszych rozwiązań. Zaleta wykorzystania tej architektury jest mały koszt związany z komunikacją. W rozwiązaniu tym wykorzystuje się również ideę tablicy (blackboard ), jest to ogólnodostępny obszar pamięci, w którym wykonujące się moduły zapisują wyniki swojej pracy, tak aby wszyscy inni mogli z nich natychmiast skorzystać. 3.2.5 Systemy w pełni zintegrowane W architekturze w pełni zintegrowanego systemu hybrydowego moduły dzielą między sobą zarówno wiedzę jak również struktury danych (rysunek 13). Zdecydowanie się na tą architekturę powoduje bardzo mocne powiązanie każdego modułu z resztą systemu, jednak zaletą jest usunięcie zbytecznej redundancji 3 SYSTEMY HYBRYDOWE 16 Rysunek 12: Model systemu zintegrowanego elementów. Możliwe jest również pełne kontrolowanie jednego modułu przez inny (np. algorytm genetyczny kierujący pracą innego algorytmu genetycznego), co powoduje większe możliwości rozwiązywania problemów. Niewątpliwą wadą takich systemów jest to, że są to rozwiązania ściśle dedykowane pod dany typ problemu i istnieją małe szanse ponownego wykorzystania elementów systemu w innych projektach. Kłopotliwe może być również zapewnienie dostatecznego poziomu równoległości, ze względu na dużą ilość zależności i powiązań międzymodułowych. Rysunek 13: Model systemu w pełni zintegrowanego 3.3 Modele pracy systemu hybrydowego Istnieje kilka modeli pracy modułów systemu hybrydowego. Zostały one przedstawione na rysunku 14. Opis sposobów integracji modułów: • Przetwarzanie łańcuchowe - moduł przetwarzania symbolicznego (np. system ekspertowy), odgrywa rolę głównego procesu systemu. Jego praca może być wspierana przez prace przez pre - procesor oraz post-procesor będący np. siecią neuronową. Możliwa jest również konfiguracja odwrotna. • Meta przetwarzanie - jeden moduł odgrywa rolę głównego procesu rozwiązującego problem inne natomiast pracują w meta - warstwie pełniąc role np. dozorcy, kontrolera wydajności, detektora błędów, w stosunku do procesu w niższej warstwie. • Przetwarzanie wewnętrzne - jeden lub więcej modułów jest osadzonych (wbudowanych) w innych. Praca elementów osadzonych jest koordy- 3 SYSTEMY HYBRYDOWE 17 nowana przez proces główny. • Przetwarzanie wspólne - oba moduły są równorzędnymi partnerami podczas rozwiązywania problemu. Każdy proces może działać bezpośrednio na środowisku, w którym pracują, oraz każdy może transmitować oraz obierać informacje od drugiego. Rysunek 14: Model przetwarzania w systemach hybrydowych 3.4 Przykładowy system hybrydowy Tradycyjne systemy ekspertowe podczas swojej pracy manipulują symbolami. Zaletami tego podejścia jest zdolność do zrozumiałej reprezentacji posiadanej wiedzy. Z drugiej zaś strony istnieją sieci neuronowe, w których wiedza zakodowana jest w postaci wag połączeń miedzyneuronowych. Wiedza ta nie jest łatwa do zinterpretowania i zanalizowania. Sieci neuronowe można traktować jak czarne pudełka, które działają, ale ciężko powiedzieć dlaczego i czy na pewno poprawnie. Jednakże sztuczne sieci neuronowe są bardzo potężnym narzędziem używanym do wydobywania (akwizycji) wiedzy z istniejących danych oraz do jej generalizacji. Sieci neuronowe z łatwością radzą sobie z informacją nieścisłą czy niepewną, która dla systemów ekspertowych stanowi poważny problem. Podczas, gdy tradycyjne systemy ekspertowe zostały zaprojektowane do przechowywania wiedzy w postaci reguł (uzyskiwanej od ludzi i przez nich rozumianej), systemy takie jak sieci neuronowe są używane do nauki i generalizowania wiedzy zawartej w praktycznych przypadkach. Połączenie tych dwóch podejść (systemów ekspertowych z sieciami neuronowymi), pozwoliło wykorzystać te dwa komplementarne podejścia w celu zwiększenia efektywności całego 3 SYSTEMY HYBRYDOWE 18 Rysunek 15: Model ideowy połączenia Systemu ekspertowego z siecią neuronową systemu. Wydobycie dodatkowych danych, wcześniej nieosiągalnych pozwoliło podnieść ogólną skuteczność wnioskowania, przy jednoczesnym zachowaniu możliwości objaśniających. Model ideowy takiego systemu ekspertowego został przedstawiony na rysunku 15. 3.5 Kierunki rozwoju systemów hybrydowych Aby stwierdzić, w jakim kierunku zmierza rozwój systemów hybrydowych, należałoby się przyjrzeć, jakie rozwiązania stosuje się przy konstruowania nowoczesnych systemów sztucznej inteligencji. Niestety informacje te są albo trudno osiągalne, albo wręcz chronione i stanowią tak zwane Know-How firm. Inną metodą jest porównanie liczby publikacji, jakie ukazują się na świecie z dziedziny systemów hybrydowych. Ilość publikacji na temat różnych rozwiązań świadczyć może zarówno o jego stopniu przydatności jak i o kierunku i potencjalnych przyszłych rozwiązań. Na rysunku 16, można zauważyć, że największa liczba publikacji dotyczy połączenia systemów ekspertowych z sieciami neuronowymi. W następnej kolejności publikowane są artykuły na temat systemów ekspertowych i logiki rozmytej, sieci neuronowej i logiki rozmytej. Najmniejszym zainteresowaniem cieszą się systemy hybrydowe próbujące wykorzystać zalety systemów ekspertowych i algorytmów genetycznych oraz systemy złożone z wielu modułów, to ostatnie podejrzewać można wiąże się z faktem bardzo dużego skomplikowania takich systemów. Nowe kierunki rozwoju systemów hybrydowych, poza badaniem skuteczności różnych połączeń poszczególnych modułów, prowadzą do stworzenia ujednoliconej architektury systemów hybrydowych oraz do standardowych modeli komunikacji. Powstał specjalny język służący komunikacji pracujących w systemie modułów - CHARON. Kolejnym krokiem jest koncepcja systemu wieloagentowego. Na system wie- 3 SYSTEMY HYBRYDOWE 19 Rysunek 16: Ilość prac naukowych na temat systemów hybrydowych loagentowy składają się agenci (niezależne jednostki), egzystujące i wchodzące w interakcje ze środowiskiem, w którym przebywają. Model agenta przedstawiony jest na rysunku 17. Obecnie implementacja systemów hybrydowych odbywa się na klasycznym ogólnodostępnym sprzęcie komputerowym. Kolejnym krokiem na drodze rozwoju systemów hybrydowych jest stworzenie dedykowanych architektur sprzętu (np. jak sterowniki rozmyte czasu rzeczywistego). Rysunek 17: Model agenta w systemie wieloagentowym LITERATURA 20 Literatura [1] Michał Białko Podstawowe własności sieci neuronowych i hybrydowych systemów eksperowych. Wydawnictwo Uczelniane Politechniki Koszalińskiej, 2000 [2] Hybrid Intelligent Systems - niebieska książka zalana kawą ;-) [3] Giarratano, Joseph and Riley, Gary. Expert Systems: Principles and Programming. 3rd Edition. PWS Publishing, Boston, MA. 1998. [4] Fernando Osorio Hybrid Systems. P.R.I.S - N.U.S. Singapore, April 2001 [5] Athanosios Tsakonas, George Dounias Hybrid Computational Intelligence Shemes in Complex Domains: An extended review [6] Rajeev Alur, Radu Grosu, Yerang Hur, Vijay Kumar, and Insup Lee Modular Specification of Hybrid Systems in Charon URL: http://www.cis.upenn.edu/ alur,grosu,yehur,kumar,lee [7] L´szló Monostori, József Horny´k, Csaba Egresits, Zsolt J´nos Viharos a a a SOFT COMPUTING AND HYBRID AI APPROACHES TO INTELLIGENT MANUFACTURING ieaaie, 1998