2. Sieci neuronowe
Skąd pomysł?
Sprawność układu nerwowego
– Generalizacja wiedzy
– Wnioskowanie
– Pamięć skojarzeniowa
„Inteligencja”
Przetwarzanie równoległe
2
5. Model neuronu
x1 połączenia
w1 synaptyczne
x2 w2
x3 w3
y
.
f(wtx)
.
.
wn
xn
węzeł
przetwarzający
neuronu
wagi mnożące
5
6. Model matematyczny
Ujmując to matematycznie:
n
t
y= f w x= f ∑ wi x i
i=1
gdzie
y - odpowiedź neuronu
w=[ w1 , w2 , , w n ] t - wektor wag
t
x=[ x 1 , x 2 , , x n ] - wektor wejściowy
6
7. Funkcja przejścia
Sama suma ważona wielkości wejściowych to za
mało
Funkcja przejścia (aktywacji)
Czynnik nieliniowy
Pierwsze podejście to funkcja skoku.
Funkcja sigmoidalna
Funkcja liniowa
7
8. Funkcja przejścia cd.
Stosowane funkcje:
(a) skoku
f x =1, gdy x0
(b) liniowa
f x = x
(c) logistyczna 1
f x = −ax
1e
(d) tangens hiperboliczny
f x =tanh ax
8
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
11
12. Sprzężenia zwrotne
Sieci w których dopuszcza się łączenie sygnałów
wyjściowych z wejściami warstwy bieżącej lub
poprzedniej.
12
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
13
14. Algorytm uczenia
Stan sieci i jej odpowiedź określona jest poprzez
macierz wag
Uczenie sieci = dobór wag
Dla 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łędu
Opis matematyczny (..........)
14
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 uczenia
Prezentacja zbioru uczącego (epoka)
Modyfikacja wag
Powtarzanie procesu uczenia aż do osiągnięcia
warunków zakończenia
15
16. Problemy
Zły dobór zbioru uczącego
Zła reprezentacja danych
Za mało neuronów
Za dużo neuronów
Wpadanie w minima lokalne
Wpadanie w cykle
Niestabilność numeryczna
16
17. Implementacje sieci
Wiele implementacji ANN
W dużych programach obliczeniowych
Dedykowane
GPL
SNNS- Stuttgart Neural Network Simulator
Biblioteki (np. FANN Fast Artificial Neural Network
Library)
Matlab/Octave
S/R
17
18. Sieci ANN a GRASS
Możliwość wykorzystania zewnętrznych pakietów do
obliczeń neuronowych
R
– 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
18
19. R, Octave
Kilka rozwiązań
Istnieje interfejs do transferu danych
Przykł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
19
20. Rozwiązanie dedykowane
Interpolacja wymaga dostępu do dużych struktur
danych
System GIS jest zorientowany na przetwarzanie i
szybki dostęp do dużych struktur danych
Biblioteki zoptymalizowane pod kątem wydajności
Szeroka funkcjonalność
Możliwość połączenia odwołań do bibliotek GRASS i
ANN za pomocą Pythona
Biblioteka FANN
20
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
21
22. Python
Interfejs dla FANN w Pythonie
Możliwość tworzenia skryptów dla GRASS w
Pythonie
Dostęp do API GRASS
Możliwość przetwarzania danych na poziomie
elementów rastra
Szybkość
22
23. Pakiet nn.*
Kontynuacja rozwiązania z GRASS 5.0
Główny cel – interpolacja danych przestrzennych
Zestaw 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
23
24. nn.create
Polecenie tworzy sieć o zadanej architekturze
nn.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) 24
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)
25
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ściowe
out Lista warstw rastrowych z których zostaną pobrane
dane wyjściowe
vector Warstwa wektorowa zawierająca punkty
wskazujące lokalizacje danych uczących
points Plik tekstowy zawierający współrzędne punktów
east_north Lista współrzędnych punktów
output Nazwa pliku do którego zostanie zapisany zbiór
danych uczących 26
27. nn.learn
Uczenie sieci neuronowej
nn.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ącym
max_iter Maksymalna liczba epok
iter_report Liczba epok po której wypisywany jest
raport z uczenia
error Dopuszczalny błąd
output Nazwa pliku do którego zostanie zapisana
nauczona sieć
27
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ściowymi
net Nazwa sieci
output Warstwy rastrowe wygenerowane przez sieć
28
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
29
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
30
31. Przykład wykorzystania cd.
Interpolacja wysokości:
Dane wejściowe: x, y
Dane wyjściowe: z
Uwaga: dane powinny być skalowane
Punkty uczące losowo rozproszone
Po wygenerowaniu wyników trzeba powrócić z
danych przeskalowanych do wielkości rzeczywistych
Liczebność zbioru uczącego: 986
Dopuszczalny błąd: 0.001
Liczba epok uczenia: 114298
31