Strona główna    Przejdź do apletu.


Opis algorytmu sieci.



  •    Cel projektu i przyjęte założenia.

    Celem naszego projektu było stworzenie sieci neuronowej, której zadaniem jest predykcja pogody w oparciu o wybrane parametry opisujące stan pogody.
    Postanowiliśmy zrealizować powyższą sieć w oparciu o perceptron wielowarstwowy, uczony metodą wstecznej propagacji błędów. Jako dane wejściowe wybraliśmy: temperaturę w dzień, ciśnienie atmosferyczne, zachmurzenie, oraz zjawiska atmosferyczne: deszcz, śnieg, burzę i mgłę. Zadaniem sieci jest przewidywanie powyższych danych wraz z temperaturą nocną dla pięciu kolejnych dni.
    Wszystkie dane przeznaczone do nauczenia sieci zostały zebrane dla miasta Krakowa od 1 grudnia 2003r. do 31 listopada 2004r. dla godzin popołudniowych (między 12:00 a 13:00) z serwisu www.eurometeo.com.


  •    Realizacja sieci.

    Sieć zrealizowaliśmy w oparciu o perceptron wielowarstwowy ze względu na łatwość jej implementacji oraz dobrze znany nam algorytm jej uczenia. Jej schemat widoczny jest na poniższym rysunku.




    Zastosowana sieć neuronowa posiada jedną warstwę ukrytą, gdyż naszym zdaniem zupełnie wystarcza ona do realizacji zamierzonego celu. Zwiększenie liczby warstw ukrytych nie zawsze bowiem wpływa na jakość uczenia, natomiast wydłuża jego proces.
    Warstwę wejściową stanowią neurony z liniową funkcją aktywacji, pełniące rolę buforów. Warstwy ukryta i wyjściowa posiadają zaś sigmoidalną funkcję aktywacji, oznaczoną jako f(x), opisaną poniższym wzorem.





    Zdecydowaliśmy się na użycie tej funkcji, gdyż łatwo można wyliczyć jej pochodną ( f'(x)), która potrzebna jest w procesie uczenia sieci. Największą jednak zaletą jej użycia jest możliwość realizacji bardzo szerokiego zakresu funkcji przez sieć neuronową posiadającą nieliniową funkcję aktywacji.
    Wejściami sieci są wybrane przez nas dane pogodowe: temperatura w dzień, ciśnienie atmosferyczne, zachmurzenie, oraz zjawiska atmosferyczne: deszcz, śnieg, burza i mgła. Każda z nich jest normalizowana do przedziału <-1;1>. Dodatkowym wejściem jest tzw. polaryzacja, którą jest stała, dobrana przez nas eksperymentalnie, wartość 0.25. Po jej dodaniu sieć ma zwiększone spektrum możliwych do zrealizowania prez siebie funkcji, co można było zaobserwować sensowniejszymi prognozami.
    W warstwie ukrytej zdecydowaliśmy po wielu eksperymentach, że optymalną ze względu na sensowność generowanych danych wyjściowych jest liczba pięciu neuronów. Mniejsza liczba neuronów w tej warstwie wpływa korzystnie na efektywność uczenia, gdyż jest wówczas mniej połączeń, przez co więcej danych uczących przypada na jedną wagę. Z drugiej zaś strony zbyt mała ilość neuronów w tej warstwie (a zatem ilość połączeń) zubaża sieć o możliwości realizacji bardziej skomplikowanych funcji.
    Po przejściu przez sieć, zebrane dane wyjściowe (temperatura nocna danego dnia oraz pozostałe dane dla dnia następnego) są przekształcane z przedziału <-1;1> do im odpowiadających i obrazowane w postaci graficznej.

  •    Algotym wstecznej propoagacji błędów.

    Uczenie przebiega zgodnie z algorytmem wstecznej propagacji błędów (ang. back propagation). Każdy neuron sieci składa się z elementu sumującego iloczyny wag i sygnałów wejściowych oraz z elementu nieliniowego, którego charakterystyka przejściowa nazywana jest funkcją aktywacji neuronu opisaną wzorem zamieszczonym w poprzednim rozdziale. Sygnał e jest sygnałem wyjściowym sumatora, zaś y = f(e) jest sygnałem wyjściowym elementu nieliniowego i zarazem sygnałem wyjściowym neuronu.

    >


    Na etapie uczenia rozważanej sieci neuronowej musimy dyspodować ciągiem danych uczących składających się ze zbioru sygnałów wejściowych (na powyższym obrazku są to x1 i x2) oraz przyporządkowanych im oczekiwanych (wymaganych) sygnałów wyjściowych. Proces uczenia przebiega iteracyjnie dla kolejnych danych uczących, przy czym w każdym kroku współczynniki wagowe połączeń ulegają modyfikacji według opisanego poniżej algorytmu.
    Każdy krok uczenia rozpoczynamy od podania na wejście sieci ośmiu sygnałów wejściowych. Następnie sygnały są mnożone przez wagi odpowiadające poszczególnym połączeniom, sumowane w neuronach oraz przekazywane przez warstwę ukrytą do wyjściowej.
    W kolejnym kroku każdy sygnał wyjściowy sieci możemy porównać z - zawartą w ciągu uczącym - oczekiwaną (wymaganą) wartością sygnału wyjściowego. Różnica obu wartości nazywana jest sygnałem błędu neuronu warstwy wyjściowej.
    Dla neuronów leżących w wewnętrznych warstwach sieci (warstwach ukrytych) nie ma możliwości bezpośredniego określenia błędu, ponieważ nie są znane wartości oczekiwane sygnałów wyjściowych z tych neuronów. Zgodnie z algorytmem mając wyznaczony błąd dla danego wyjścia występujący podczas realizacji pojedynczego kroku procesu uczenia, możemy go "rzutować" wstecz do wszystkich tych neuronów, których sygnały wyjściowe stanowiły wejścia dla rozważanego neuronu.
    Rzutowane wstecznie błędy mnożone są przez te same współczynniki, przez które mnożone były przesyłane sygnały, tyle tylko, że kierunek przesyłania informacji zostaje w tym wypadku odwrócony: zamiast od wejścia do wyjścia przesyła się je od wyjścia kolejno w kierunku wejścia. Opisaną technikę wstecznej propagacji błędów stosuje się sukcesywnie dla ewentualnych wcześniejszych warstw sieci. W przypadku gdy propagowane błędy dochodzą z kilku neuronów ich wartości sumują się.
    Ostatnim krokiem jest modyfikacja wag połączeń zgodnie ze wzorem.



    Błąd danego neuronu oznaczony jest jakod. Wartość poprzedni neuronu to w(k), zaś nabyta w kroku uczenia w(k+1).
    Współczynnik szybkości uczenia h jest stały i wynosi 0.1, choć z reguły zaleca się stosowanie większych wartości h na początku procesu uczenia i zmniejszanie ich w miarę, jak współczynniki wagowe zbliżają się do swoich ustalonych wartości.


  •    Zasada działania sieci.

    Na wstępie konieczne jest nauczenie siecie, które przebiega zgodnie z opisanym wyżej algorytmem. Przed pierwszym krokiem uczenia wagi dobierane są w sieci losowo z przedziału <-0.1;0.1>. Dane uczące zebrane są w pliku meteo.xml. Każda z podanych procentowo wartości określających poszczególne dane wejściowe jest przypisywana odpowiedniemu zakresowi okreslonemu słownie. Przykładowo wartość zachmurzenia z przedziału <0%;25%) oznaczana jest jako "brak", <25%;50%) jako "małe", <50%;75%) - "duże" i <75%;100%) - "całkowite". Opady i mgły mają zdefiniowane trzy przedziały: brak, przelotne, duże. Przed podaniem na warstwę wejściową sieci każda wartość poszczególnego wejścia jest normalizowana do przedziału <-1;1>.
    Proces uczenia dla danych z całego roku powtarzany jest 3000 razy, gdyż taką wartość uznaliśmy za rozsądną. Nie zastosowaliśmy tym samym żadnego kryterium stopu.
    Po skończonym uczeniu sieć przetwarza wpisane przez użytkownika dane przewidując pogodę na dzień następny i obrazując ją graficznie i opisowo. W kolejnym kroku sieć przenosi na wejście przepowiedziane dane i prognozuje pogodę na kolejny dzień .

  •    Podsumowanie.

    Cel, jaim było stworzenie systemu prognozowania pogody w oparciu o sieć neuronową, został osiągnięty. W trakcie tworzenia przeprowadziliśmy szereg eksperymentów celem jak najlepszego doboru parametrów sieci i współczynników. Mimo tego mogą zdażać się w prognozie wartości nie mające sensu, co spowodowane jest ograniczoną ilością danych uczących (szczególnie dni zawierających w swoim opisie meteorologicznym burzę). Ich zwiększenie zdecydowanie podniosłoby walory sieci.

      Wróć do początku strony

    © 2005