Moduł sztucznych sieci neuronowych dla GRASS 7

Post on 26-May-2015

987 views 4 download

description

prezentacja w formacie *.pdf z wykładu na warsztatach "Analizy przestrzenne z wykorzystaniem GRASS" 13-16.09.2010. Autor: Paweł Netzel.

Transcript of Moduł sztucznych sieci neuronowych dla GRASS 7

Sieci neuronowe w GRASS

Paweł Netzel

2

Sieci neuronowe

Skąd pomysł?Sprawność układu nerwowego

– Generalizacja wiedzy– Wnioskowanie– Pamięć skojarzeniowa

„Inteligencja”Przetwarzanie równoległe

3

Neuron biologiczny

4

Sieć neuronów biologicznych

5

Model neuronu

x1

x2

x3

xn

.

.

.

w1

w2

w3

wn

yf(wtx)

wagi mnożące

połączeniasynaptyczne

węzełprzetwarzający neuronu

6

Model matematyczny

Ujmując to matematycznie:

gdzie - odpowiedź neuronu - wektor wag - wektor wejściowy

y= f w t x= f ∑i=1

n

wi x i

yw=[w1 , w2 , ,wn]

t

x=[ x1 , x 2 , , xn]t

7

Funkcja przejścia

Sama suma ważona wielkości wejściowych to za małoFunkcja przejścia (aktywacji)Czynnik nieliniowyPierwsze podejście to funkcja skoku.Funkcja sigmoidalnaFunkcja liniowa

8

Funkcja przejścia cd.

Stosowane funkcje:(a) skoku

(b) liniowa

(c) logistyczna

(d) tangens hiperboliczny

f x = x

f x =1

1e−ax

f x =tanh ax

f x =1, gdy x0

9

Funkcja przejścia cd.

10

Sztuczna sieć neuronowa

11

Sieci jednokierunkowe

Sieć jednokierunkowa to sieć w której sygnał może przemieszczać się jedynie od wejść do wyjść.Wyróżnione:

– warstwa wejściowa– warstwa(y) ukryta– warstwa wyjściowa

Połączenia między warstwami tylko w jedną stronęMożliwość łączenia „ponad” warstwami

12

Sprzężenia zwrotne

Sieci w których dopuszcza się łączenie sygnałów wyjściowych z wejściami warstwy bieżącej lub poprzedniej.

13

Możliwe zastosowania

Liczne zastosowania– Interpolacja– Rozpoznawanie obrazów– Klasyfikacja obiektów– Generalizacja– Prognozowanie (ekstrapolacja)

Model „czarnej skrzynki”Najczęściej implementowane są sieci jednokierun-kowe, warstwowe, uczone algorytmem wstecznej propagacji błędu

– backpropagation network

14

Algorytm uczenia

Stan sieci i jej odpowiedź określona jest poprzez macierz wagUczenie sieci = dobór wagDla sieci jednokierunkowych warstwowych algorytm wstecznej propagacji błędu (wraz z różnymi wariantami)Prezentacja wzorca + prezentacja wyniku, obliczenie błędu, zmodyfikowanie wag na podstawie błęduOpis matematyczny (..........)

15

Uczenie sieci jednokierunkowej

Wybór zbioru uczącego (ważne!)Wybór architektury sieci (liczba warstw, liczba neuronów w warstwie, liczba połączeń i sposób łaczenia)Dobór parametrów uczeniaPrezentacja zbioru uczącego (epoka)Modyfikacja wagPowtarzanie procesu uczenia aż do osiągnięcia warunków zakończenia

16

Problemy

Zły dobór zbioru uczącegoZła reprezentacja danychZa mało neuronówZa dużo neuronówWpadanie w minima lokalneWpadanie w cykleNiestabilność numeryczna

17

Implementacje sieci

Wiele implementacji ANNW dużych programach obliczeniowychDedykowaneGPLSNNS- Stuttgart Neural Network SimulatorBiblioteki (np. FANN Fast Artificial Neural Network Library)Matlab/OctaveS / R

18

Sieci ANN a GRASS

Możliwość wykorzystania zewnętrznych pakietów do obliczeń neuronowychR

– AMORE • http://r.meteo.uni.wroc.pl/web/packages/AMORE

– monmlp• http://r.meteo.uni.wroc.pl/web/packages/monmlp

– Neuralnet• http://r.meteo.uni.wroc.pl/web/packages/neuralnet

– Nnet• http://r.meteo.uni.wroc.pl/web/packages/nnet

Octave– nnet -> Neural Network Toolbox (MATLAB)

Rozwiązania dedykowane

19

R, Octave

Kilka rozwiązań Istnieje interfejs do transferu danychPrzykład

– AMORE• http://r.meteo.uni.wroc.pl/web/packages/AMORE

net.start <- newff(n.neurons=c(2,4,2,2),learning.rate.global=1e-2, momentum.global=0.5, error.criterium="LMS", Stao=NA, hidden.layer="tansig", output.layer="purelin", method="ADAPTgdwm")

Problemy– Konieczność tworzenia kompletnych struktur danych w

pamięci komputera– Konwersja danych pomiędzy strukturami pakietów R– Importowanie danych do GRASS

20

Rozwiązanie dedykowane

Interpolacja wymaga dostępu do dużych struktur danychSystem GIS jest zorientowany na przetwarzanie i szybki dostęp do dużych struktur danychBiblioteki zoptymalizowane pod kątem wydajnościSzeroka funkcjonalnośćMożliwość połączenia odwołań do bibliotek GRASS i ANN za pomocą PythonaBiblioteka FANN

21

FANN

FANN Fast Artificial Neural Network Library– Biblioteka w C dla sieci wielowarstwowych– Algorytm wstecznej propagacji błędu (wraz z

odmianami)– Szybsza ok 150 razy od innych bibliotek (ponoć)– Możliwość głębokiej ingerencji w ustawienia

parametrów– Dobrze udokumentowana– Wieloplatformowa– Wiele funkcji aktywacji

Licencja LGPL

22

Python

Interfejs dla FANN w PythonieMożliwość tworzenia skryptów dla GRASS w PythonieDostęp do API GRASSMożliwość przetwarzania danych na poziomie elementów rastraSzybkość

23

Pakiet nn.*

Kontynuacja rozwiązania z GRASS 5.0Główny cel – interpolacja danych przestrzennychZestaw poleceń pozwalających na obsługę sieci neuronowych:

– nn.create – tworzenie sieci– nn.info – informacja o sieci– nn.data.rast – pobranie danych uczących– nn.learn – uczenie sieci– nn.run.rast – uruchomienie sieci

24

nn.create

Polecenie tworzy sieć o zadanej architekturzenn.create [-l] in=value hidd=value[,value,...] out=value

net=filename [conn_rate=value] [learn_rate=value] [--verbose] [--quiet]

Opcje:-l Ustawia liniową funkcję aktywacji dla neuronów

wyjściowych

Parametry:– in Liczba neuronów wejściowych (def. 1)– hidd Liczby neuronów w warstwach ukrytych (def.

jedna warstwa z 2 neuronami)– out Liczba neuronów wyjsciowych (def. 1)– net Nazwa pliku z siecią xxxx.net– conn_rate Połączenia (0.0 - brak, 1.0 – pełne) (def. 1)– learn_rate Szybkość uczenia (def. 0.7)

25

nn.info

Wypisuje dostępne sieci neuronowe lub opisuje wybraną sić

nn.info [-l] [net=filename] [--verbose] [--quiet]

Opcje:-l Wypisuje wszystkie definicje sieci neuronowych

zawarte w bieżącej kartotece

Parametry:net nazwa wybranej sieci (zostanie wypisana

informacja o tej sieci)

26

nn.data.rast

Przygotowuje dane uczące na podstawie lokalizacji oraz warstw rastrowych

– nn.data.rast in=string[,string,...] out=string[,string,...] [vector=string] [points=filename] [east_north=string] output=filename

Parametry:in Lista warstw rastrowych z których zostaną pobrane

dane wejścioweout Lista warstw rastrowych z których zostaną pobrane

dane wyjściowevector Warstwa wektorowa zawierająca punkty

wskazujące lokalizacje danych uczącychpoints Plik tekstowy zawierający współrzędne punktóweast_north Lista współrzędnych punktówoutput Nazwa pliku do którego zostanie zapisany zbiór

danych uczących

27

nn.learn

Uczenie sieci neuronowejnn.learn net=filename data=filename [max_iter=value]

[iter_report=value] [error=value] [output=string]

Parametry:net Nazwa sieci (pliku z siecią)data Nazwa pliku ze zbiorem uczącymmax_iter Maksymalna liczba epokiter_report Liczba epok po której wypisywany jest

raport z uczeniaerror Dopuszczalny błądoutput Nazwa pliku do którego zostanie zapisana

nauczona sieć

28

nn.run.rast

Uruchomienie nauczonej sieci ze wskazanymi danymi wejściowymi

nn.run.rast in=string[,string,...] [net=filename] output=string[,string,...] [--verbose] [--quiet]

Parametry:in Warstwy rastrowe z danymi wejściowyminet Nazwa siecioutput Warstwy rastrowe wygenerowane przez sieć

29

Przykład wykorzystania

Kolejne polecenia:Utworzenie definicji sieci (3 neurony wejściowe,

dwie warstwy ukryte zaierające 3 oraz 4 neurony, jeden neuron wyjsciowy) i zapisanie jej pod nazwą test

nn.create in=3 hidd=3,4 out=1 net=test

Pobranie danych uczących (wielkości wejściowe z warstw dtm,slope,asp; wielkości wyjsciowe z warstwy green; warstwy będą próbkowane w punktach smpl; plik wynikowy ma nazwę learndata)

nn.data.rast in=dtm,slope,asp out=green vector=smpl output=learndata

30

Przykład wykorzystania cd.

Uczenie sieci (uczona bedzie sieć test na podstawie zbioru learndata przez 10000 epok, sieć wynikowa zostanie zapisana pod nazwą test.learn)

nn.learn net=test data=learndata max_iter=1000000 ouput=test.learn

Uruchomienie sieci (dane wejściowe pobrane zostaną z warstw dtm,slope,asp; wyniki zapisane do warstwy green.nn; do obliczeń zostanie wykorzystana sieć test.learn)

nn.run.rast in=dtm,slope,asp out=green.nn net=text.learn

31

Przykład wykorzystania cd.

Interpolacja wysokości:Dane wejściowe: x, yDane wyjściowe: zUwaga: dane powinny być skalowanePunkty uczące losowo rozproszonePo wygenerowaniu wyników trzeba powrócić z danych przeskalowanych do wielkości rzeczywistychLiczebność zbioru uczącego: 986Dopuszczalny błąd: 0.001Liczba epok uczenia: 114298

32

Dane wejściowe

33

Zbiór uczący

34

Dane wejściowe

35

Dziękuję!