Moduł sztucznych sieci neuronowych dla GRASS 7
description
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ę!