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)