Zapisz jako PDF

Transkrypt

Zapisz jako PDF
powrót
Spis treści
1 Formy nieliniowości
2 Uczenie
2.1 Pojedynczy neuron: reguła delta
2.2 Uczenie nieliniowej sieci: Jak znaleźć błąd dla warstwy ukrytej?
2.3 Problemy uczenia metodą wstecznej propagacji błędu
3 Klasyczne przykłady zastosowań
Formy nieliniowości
Na poprzednich wykładach zajmowaliśmy się:
sieciami liniowymi: łatwo można dla nich sformułować i udowodnić zbieżność gradientowej
reguły uczenia. Niestety miały one ograniczenie do reprezentowania odwzorowań liniowych.
perceptornem Rosenblatta: łatwo można było wyprowadzić dla niego regułę uczenia, wnosił
nową jakość- podział przestrzeni wejściowej na rozłączne obszary decyzyjne, składanie sieci
wielowarstwowych wprowadza nową jakość (możliwość konstruowania dowolnych podziałów
przestrzeni wejściowej ) ale:
dla jednej warstwy można rozwiązywać tylko problemy separowalne liniowo
dla większej ilości warstw brak jest reguły uczenia
Problem z regułą uczenia perceptronu Rosenblatta bierze się z tego, że nie można do niej
wykorzystać metod spadku gradientowego, ze względu na występującą w nim nieciągłość.
Okazuje się, że w wielu przypadkach dobrze sprawdzają się następujące dwie funkcje sigmoidalne:
funkcja logistyczna:
* pochodna:
* zbiór wartości otwarty:
tangens hiperboliczny
* pochodna :
* zbiór wartości
We wszystkich powyższych wzorach
pobudzenie neuronu.
to parametr odpowiadający za stromość sigmoidy, zaś
to
Uczenie
Pojedynczy neuron: reguła delta
Podobnie jak dla wszystkich omawianych dotychczas sieci celem uczenia neuronu nieliniowego jest
taki dobór jego wag, aby zminimalizować błąd średnio-kwadratowy popełniany na ciągu uczącym.
Niech ciąg uczący będzie:
Funkcja błędu to:
gdzie:
zaś
podobnie jak w przypadku regresji liniowej chcemy zmieniać wag w kierunku przeciwnym do
kierunku gradientu funkcji kosztu, tzn. po prezentacji j = 1 przykładu i-ta waga zmienia się tak:
łatwo zauważyć, że:
oraz, że:
natomiast:
Łącząc te wszystkie spostrzeżenia otrzymujemy:
gdzie wprowadziliśmy:
Uczenie nieliniowej sieci: Jak znaleźć błąd dla warstwy
ukrytej?
Pomysł
błąd
występujący w j − tym kroku uczenia na neuronie m rzutujemy wstecz do wszystkich
neuronów, które stanowią wejście dla neuronu m − tego. Rzutując, mnożymy błąd przez ten sam
współczynnik wagowy, który w czasie propagacji w przód ważył wejście.
Dlaczego?
Uzasadnienie intuicyjne
Jeśli neuron warstwy ukrytej przyczynił się do powstania błędu na neuronie warstwy
wyjściowej rzutując w przód przez dużą wagę, to trzeba mu zwrócić informację o błędzie
proporcjonalnie do tej wagi.
Uzasadnienie formalne
Oznaczenia
Reguła ta wynika wprost z gradientowej metody minimalizacji funkcji błędu. Rozważmy sieć
dwuwarstwową. Dla wzorca j − tego k − ta jednostka ukryta otrzymuje pobudzenie:
gdzie: - indeksy wejść warstwy ukrytej,
Jednostka ta wytwarza sygnał wyjściowy:
- i-ta waga k-tej jednostki w j-tym kroku uczenia.
Jednostka wyjściowa, n − ta, otrzymuje zatem sygnał:
(gdzie:
— indeksy wejść warstwy wyjściowej, uwaga:
dla
!)
i wytwarza sygnał wyjściowy:
Miara błędu wygląda tak:
i jest ciągłą i różniczkowalną funkcją wszystkich wag, możemy więc ją minimalizować zmieniając
wagi w kierunku przeciwnym do gradientu ( to wszystkie wagi zarówno w jak i W ).
Dla warstwy wyjściowej otrzymujemy:
gdzie oznaczyliśmy:
Dla warstwy ukrytej otrzymujemy:
Błędy w warstwie ukrytej
przy czym zdefiniowaliśmy:
Widać, że wzór na zmianę wag, czy to warstwy wejściowej, czy ukrytej ma tę samą postać, różni się
jedynie definicją . Dla warstw ukrytych błąd jest sumą ważoną (wagami połączeń do przodu) błędów
popełnionych w wyższej warstwie.
Regułę tą można udowodnić dla dowolnej ilości warstw stosując odpowiednią ilość razy regułę
łańcuchową.
Problemy uczenia metodą wstecznej propagacji błędu
Minima lokalne funkcji kosztu. W odróżnieniu od funkcji kosztu dla problemu sieci liniowych w
przypadku sieci nieliniowych funkcja kosztu ma zazwyczaj wiele lokalnych minimów. Algorytm
wstecznej propagacji błędu jako algorytm spadku gradientowego nie jest odporny na ich
występowanie.
Generalizacja: Uczenie z wykorzystaniem tylko jednego ciągu uczącego i reguły wstecznej
propagacji błędu może prowadzić do problemów z generalizacją, czyli wynikami działania sieci
na danych nie występujących w ciągu uczącym.
Klasyczne przykłady zastosowań
XOR
rozwiązanie metodą wstecznej propagacji dla jednostek sigmoidalnych — jednostki są
sterowane w stronę wysycenia. Czas uczenia jest bardzo długi: setki epok prezentacji całego
zbioru treningowego.
Koder
Dwuwarstwowa sieć o N wejściach, N wyjściach i M neuronach w warstwie ukrytej (M < N).
Chcemy uzyskać autoasocjację czyli X(j) = Y (j).
Praktyczne zastosowanie — kompresja np. obrazów.
Teoretyczne — wyznaczanie możliwości sieci — problem łatwo można skalować i zmieniać jego
trudność przez zmianę M/N.
Ilustracja koncepcji kodera.
NETtalk
Klasyczna praca (Sejnowski i Rosenberg 1987,Complex Systems 1, 145–168): generacja ciągu
fonemów z angielskiego tekstu pisanego.
Architektura: 7 × 29 wejść kodujących 7 kolejnych liter, 80 jednostek ukrytych, 26 jednostek
wyjściowych kodujacych fonemy.
Zbiór uczący: 1024 słowa podawane w postaci par (litera,fonem)
Efekty: po 10 epokach zrozumiała wymowa, po 50 — 95% odtwarzania zbioru treningowego,
78% na ciągłym tekście źródłowym. Porównanie stanowi system algorytmiczny DEC-talk (jest
lepszy)
Ilustracja konstrukcji sieci NetTalk
Struktura drugorzędowa białka
(Quian, Sejnowski (1988), Journal of Molecural Biology 202, 865–884).
Wejście — ruchome okno z 13 aminokwasów.
Na wyjściu odczytujemy prognozę struktury środkowej części okna jako spirali α, arkusza β lub
innej struktury.
Efekt: na nowym zbiorze danych dokładność predykcji 62% (w porównaniu do konkurencyjnej
metody 53%)
Rozpoznawanie celów sonarowych
(Gorman i Sejnowski (1988) Neural Network 1, 75–89) Problem: rozróżnianie sygnałów
sonarowych odbitych albo od skał albo od metalowych cylindrów leżących na dnie zatoki.
Preprocessing: transformanta Fouriera
Architektura: 60 jednostek wejściowych i 2 wyjściowe, liczba jednostek ukrytych od 0 –24,
Na nowych danych (generalizacja ) dla 12 jednostek ukrytych ∼ 85%; poprawa jakości do ∼
90% po staranniejszym wybraniu zbioru treningowego.
Wyniki różnych architektur dla zbioru
uczącego
Kierowanie samochodem (Pomerlau, 1989)
Sygnał wejściowy — obraz z kamery video 30 × 32 piksle umocowanej na dachu oraz obraz 8 ×
32 piksle z dalmierza kodującego odległość w skali szarości,
warstwa ukryta 29 jednostek, wyjście 45 jednostek ułożonych w linię (środkowa jednostka
kodowała jazdę na wprost, boczne — kąt skrętu odpowiednio w lewo lub w prawo).
Zbiór treningowy: 1200 symulowanych fragmentów drogi. Uczenie: około 40 powtórzeń
każdego ze wzorców.
Efekt: sieć mogła prowadzić samochód z prędkością około 5 km/h po drodze przez zalesiony
obszar wokół kampusu Carrengie-Mellon.
Ograniczenie prędkości: moc obliczeniowa komputera — sieć symulowana była na komputerze Sun-3
(metody algorytmiczne dawały prędkość o połowę mniejszą) [kierowania samochodem (czas
3:25-8:38)]
Rozpoznawanie ręcznie pisanych kodów pocztowych(Le Cun 1989, Neural Computaion 1 541–551)
Schemat sieci do rozpoznawania kodów pocztowych
Preprocessing: rozdzielenie kodów na po jedyncze cyfry, wyskalowanie do standardowych
rozmiarów i skwantowanie na tablicę piksli 16 × 16.
W całej sieci było w sumie 1256 jednostek i 9700 niezależnych parametrów.
Nauka na zbiorze 7300 cyfr i test na 2000 cyfr.
Wynik: 1% błędów dla zbioru uczącego i 5% dla testowego. Po dopuszceniu odpowiedzi ”nie
wiem” błąd na zbiorze testowym 1%, ale odrzucone było 12% cyfr. Dalszą poprawę
generalizacji uzyskano po usunięciu niepotrzebnych wag (99% trafności przy 9% odrzutów)