Sieci o zmiennej strukturze. - Katedra Informatyki Stosowanej UMK

advertisement
Sieci o zmiennej strukturze
Wykład 14
Włodzisław Duch
Katedra Informatyki Stosowanej UMK
Google: W. Duch
Co będzie
•
Uwagi na temat MLP
•
Sieci o zmiennej strukturze
•
Algorytmy konstruktywistyczne
•
Przykłady zastosowań sieci MLP
Sieci z 1 warstwą ukrytą.
Uczenie warstwy wyjściowej można uprościć odwracając:
o  o( H ( X )) 
1
;
1  exp( H ( X ))
 o 
Y ( X )  ln 
;
 1 o 
H ( X ) W  Y
H(X) sygnał z warstwy ukrytej
Y(X) aktywacja w. wyjściowej
Mając wartości dochodzące do warstwy wyjściowej można
obliczyć wartości W na wybranym zbiorze uczącym w sensie
metody najmniejszych kwadratów.
Można też nie uczyć warstwy wejściowej tylko użyć jej do
rzutowania danych w wysokowymiarową przestrzeń (biorąc
dostatecznie dużo neuronów) – znane jest to pod szumną nazwą
„Extreme Learning Machines”.
Uwagi praktyczne 1
Ile neuronów?
Zwykle niewiele, zacząć od 1 i zwiększać robiąc kroswalidację; reguły
heurystyczne są mało przydatne bo wszystko zależy od rozkładu
danych, może jest separowalny i wystarczy 1 neuron?
Uwagi praktyczne 2
Trudności w uczeniu?
Można dodać dodatkowe wyjścia pomocnicze (hints),
np. dzielące hierarchicznie na grupy kilku kategorii.
Ogólnie: co ciekawego mogą wykryć pośrednie warstwy?
Może warto zmienić cel uczenia?
Uwagi praktyczne 3
System dobrze się nauczył ale
słabo generalizuje?
•
•
•
•
•
Zbyt duża złożoność sieci.
Dodać regularyzację.
Stosować kroswalidację do
oceny błędu.
Zatrzymać uczenie zanim się
przetrenuje.
Dane treningowe nie są
reprezentatywne.
Algorytmy konstruktywistyczne
Złożoność sieci należy dopasować do złożoności danych: niezbyt
prosta ale i niezbyt dopasowana – zajmuje się tym dziedzina
zwana wyborem modelu.
Utwórz wiele sieci; wybierz najlepszą;
używaj algorytmów ewolucyjnych - ale czy warto?
używaj komitetów sieci - nie marnuj modeli.
Algorytmy sieciowe:
• upraszczające, usuwające połączenia i zbędne neurony;
• konstruktywne, dodające nowe zasoby w miarę potrzeb;
• ontogeniczne: rosnące i kurczące.
AK: upraszczanie
Zwykle:
• mała sieć - prosty model, dobre wyniki;
• duża sieć - zła generalizacja, za duża złożoność modelu.
Regularyzacja: duża sieć, elastyczna, ale efektywnie ma mało
swobodnych parametrów, zależnie od siły regularyzacji.
1. Utwórz dużą sieć.
2

W
 ij
2. Trenuj ją z członem regularyzującym.
i j
Metody Bayesowskie pozwalają automatycznie określić parametry
regularyzacji (Bishop), ale są rzadko stosowane.
Statystyczne kryteria przydatności neuronów można stosować
zamiast regularyzacji.
Korelacja kaskadowa
Fahlman i Labiere, 1991
Zacznij od zera, dodawaj neurony do warstwy ukrytej.
Maksymalizuj korelacje nowego neuronu i z błędem wykazywanym
przez neuron wyjściowy.

 o
i
p
( p)

 

 oi   Y ( p )  F  X ( p ) ;W   Y ( p )  F  X ( p ) ;W  


Dodaj kilka neuronów - kandydatów;
trenuj maksymalizując korelację;
wybierz najlepszy, pozostałe odrzuć.
KK - schemat
Warstwa
wyjściowa
Uczenie: jakąś wersją
metody BP (np. Quickprop).
Po dodaniu kandydata stare
neurony ukryte mają
ustalone wagi wejściowe.
Nowy neuron łączy się ze
wszystkimi istniejącymi.
CasCor 2 - minimalizuje
różnicę |E(sieć)-E(kand)|
kandydaci
CasPer
Cascade Correlation with Progressive RPROP (1997)
Architektura kaskadowa;
3 typy połączeń z różnymi szybkościami uczenia:
L1, wejście kandydata z neuronów
ukrytych i wejściowych;
L2 wyjście kandydata do neuronów
wyjściowych.
L3 istniejące neurony
L1>> L2>> L3
Rozpad wag + szum na wejściu.
FlexNet
Mohraz, Protzel 1996.
1.
Startuj bez warstw ukrytych.
2.
Uczyć aż błąd zacznie spadać powoli.
3.
Dodać nową jednostkę w różnych miejscach sieci.
4.
Neurony mogą być w istniejących lub nowych warstwach.
Algorytm wieżowy
Dodaj neuron tworząc nową warstwę;
trenuj aż się nauczy;
zamroź wagi, dodaj kolejny neuron.
Zbiega się po skończonej liczbie kroków
dla wypukłych danych.
Każda warstw usuwa przynajmniej
jeden błąd, ale generalizacja może być
kiepska.
Zawsze można zrobić dane wypukłe!
Algorytm typu "wieży"
Algorytm piramidowy
Jeden neuron/warstwę.
Dodaje połączenia pomiędzy
odległymi warstwami.
Uczenie - podobnie jak w
algorytmie wieżowym.
Używany w programie TDL
(Transdimensional Learning)
Algorytm typu "piramidy"
Algorytm kieszonkowy
Algorytm kieszonkowy uczenia sieci (Gallant 1990)
Próbuje wykorzystać sukcesy, nie tylko błędy.
Stosowany do wzorców binarnych:
1.
Przypadkowa inicjalizacja wag.
2.
Przypadkowo wybieraj wektory do uczenia.
3.
Policz, po ilu wektorach N(p) pojawia się błąd,
zapamiętaj ostatnie wagi W(p) w „kieszonce”
dokonaj korekty
W= W(p)+ DW(p).
4.
Przypadkowo wybieraj wektory do uczenia i licz, kiedy
pojawi się błąd; jeśli N<N(p) to weź W=W(p) (krok wstecz)
5.
Powtarzaj aż do skutku ...
Można udowodnić, że algorytm znajduje optymalne wagi.
Algorytm kafelkowy
Hierarchia warstw o malejącej
liczbie neuronów (Mezard, Nadal
1989).
Nowe warstwy - wierna
reprezentacja, tj. R(X)R(Y) jeśli
C(X) C(Y), dla wektorów binarnych.
Jednostka nadrzędna trenowana
jest na dużej liczbie wzorców tak, by
wytworzyć możliwie najdłuższy ciąg
poprawnych odpowiedzi.
Jednostki pomocnicze uczą się na
podzbiorach wzorców.
Algorytm kafelkowy
Algorytm upstart
Frean, 1990: neuron wyjściowy
połączony z wejściowymi,
wzorce są binarne.
Błędne odpowiedzi typu 0 i 1.
Dodaj 2 neurony, te same wejście, duże
W+/-, koryguj błędy typu 0 i 1.
Każdy neuron koryguje  1 błąd.
Algorytm uczenia - kieszonkowy.
Poprawny wynik w skończonej liczbie
kroków dla wypukłych danych (każdy
wektor można odseparować
płaszczyzną).
Binarne drzewo z perceptronem w
każdym węźle, dobre wyniki.
1
+
+
3
2
3
-
+
3
2
Algorytm "upstart"
3
IncNet
Incremental Network, sieć ontogeniczna, rośnie i maleje.
Jedyna sieć w pełni ontogeniczna: rośnie, kruczy się,
i łączy neurony.
Sieć jednowarstwowa, różne f. transferu, model 1-z-N.
Uczenie - w oparciu o rozszerzony filtr Kalmana, EKF
(estymator błędu i parametrów modelu).
Statystyczne kryteria wzrostu i kurczenia sieci.
Onto - podsumowanie
Inne sieci ontogeniczne: RAN, FSM - po RBF-ie.
Zalety algorytmów ontogenicznych:
• automatyczna konstrukcja
• zwykle dobre wyniki
• zwykle małe sieci, niewiele połączeń
• zwykle duża szybkość - trenowane są pojedyncze neurony
Wady:
• czasami mogą się przetrenować
• algorytmy rosnące nie gwarantują najprostszych sieci
• niektóre tworzą specyficzne architektury
• niewiele dobrych programów
• homogeniczne – lepiej czasem użyć różnych funkcji transferu dla
neuronów ukrytych.
Kilka zastosowań
Typowe problemy: diagnoza, wykrywanie anomalii
prognozowanie, aproksymacja funkcji w nD, kontrola.
Dobre benchmarki: XOR, parzystość, kompresja.
NETtalk (Sejnowski i Rosenberg 1987):
7 liter (wybranych z 29 znaków) tekstu w ruchomym okienku, na
wyjściu kod fonemu, 7x29=203 wejścia, 80 jednostek ukrytych i
26 wyjściowych.
1024 słowa, korelacja litera/fonem, gaworzenie, po 50 epokach
sieć 95% dokładności, 78% poprawnie na nowym tekście.
Zastosowania przemysłowe - strona Boba Marksa.
EANN - International Conference on Engineering Applications of
Neural Networks
Co dalej?
•
Sieci RBF
•
Sieci Hopfielda
•
Sieci Hebbowskie i modele mózgu
•
Samoorganizacja
Koniec wykładu 14
Co było
•
Perceptrony wielowarstwowe.
•
Algorytm wstecznej propagacji błędów
•
Problemy i własności wstecznej propagacji
Download