Zapisz jako PDF
Transkrypt
Zapisz jako PDF
powrót Spis treści 1 Uczenie maszynowe 1.1 Uczenie z nadzorem 1.2 Regresja liniowa 1.3 Algorytm najmniejszych kwadratów 1.4 Równania normalne 1.4.1 Rachunki macierzowe 1.4.2 Minimalizacja funkcji kosztu 1.5 Interpretacja probabilistyczna Uczenie maszynowe Na tych zajęciach zapoznamy się z koncepcjami "uczenia maszynowego". Podejście to jest nieco odmienne od standardowego programowania. Algorytmy, które będziemy omawiać bardziej stanowią "metodologię uczenia" niż sposoby kodowania rozwiązań konkretnych problemów. Zobaczymy jak łącza się pojęcia ze statystyki, algebry z inspiracjami biologicznymi. Na wstępie warto może wspomnieć, że uczenie może przebiegać z nadzorem lub bez nadzoru. Uczenie z nadzorem przypomina typowe uczenie w szkole, gdzie nauczyciel podaje przykłady dla których znane są prawidłowe odpowiedzi i potrafi uczniowi wskazać błędy. Uczenie bez nadzoru przypomina nieco uczenie się postrzegania świata przez małe dziecko. Bazuje ono głównie na obserwowaniu związków przyczynowo skutkowych - korelacji - pomiędzy różnymi bodźcami. Uczenie z nadzorem Zaczniemy od najprostszej wersji uczenia z nadzorem jaką jest regresja liniowa. Aby było nam łatwiej ją sobie wyobrażać weźmy konkretny przykład: chcielibyśmy przewidywać zużycie paliwa przez samochody. Załóżmy, że znamy odległość jaką samochód może pokonać i jego masę. Możemy narysować te dane. Przykładowe dane Jak na podstawie tych danych można przewidzieć zasięg innych samochodów? Można potraktować te dane jako punkty reprezentujące pewne odwzorowanie, funkcję. Najprostszą funkcję jaką moglibyśmy zaproponować to odwzorowanie liniowe. W tym miejscu wprowadzimy kilka ważnych pojęć i notację, z której będziemy korzystać w trakcie dalszych wykładów. wejście w naszym przykładzie daną wejściową jest masa samochodu. Oznaczmy ją . W kontekście uczenia maszynowego dane wejściowe często nazywane są cechami (ang. features). przestrzeń wejść przestrzeń, z której pochodzą dane wejściowe, oznaczymy ją wyjście w naszym przykładzie zasięg. Oznaczymy go . przestrzeń wyjść przestrzeń, z której pochodzą dane wyjściowe, oznaczymy ją przykład para wejścia i odpowiadającego mu wyjścia: ciąg uczący zbiór przykładów hipoteza : odwzorowanie stanowi pojedynczy przykład. . , które "dobrze" pasuje do przykładów ciągu uczącego. Formalnie proces uczenia z nadzorem polega na tym, żeby mając dany ciąg uczący znaleźć funkcję taką, że jest ona dobrym predyktorem mając dany . Gdy zmiana jest ciągła problem nazywamy regresją, gdy zmienna nazywamy klasyfikacją. jest dyskretna problem Regresja liniowa Aby nasz przykład uczynić bardziej interesującym załóżmy, że oprócz masy pojazdu znamy także jego moc. Aby przeprowadzić uczenie z nadzorem musimy zdecydować się jak będziemy reprezentować funkcję w komputerze. Na początek załóżmy, że będzie to funkcja liniowa: Parametry (zwane także wagami) parametryzują przestrzeń funkcji liniowych . Tam gdzie nie będzie to powodować niejednoznaczności zamiast będziemy pisać . Dla uproszczenia notacji wprowadzimy też "sztuczne" wejście , zaś parametr nazywać będziemy obciążeniem. Stosując powyższą konwencję możemy napisać: (u nas n = 2). Niektóre rachunki uproszczą się nam jeśli zastosujemy notację wektorową. Oznaczmy: , (zapisaliśmy oba wektory jako transponowane bo wektorami kolumnowymi). Wówczas: i są Problem uczenia maszynowego polega na tym: jak mając zbiór uczący znaleźć "dobre" parametry? Aby sformalizować ten problem wyprowadzimy funkcję kosztu. (Uwaga: to indeks przykładu a nie potęga. ) Teraz możemy powiedzieć, że "dobre" parametry to takie, które minimalizują funkcję kosztu. Algorytm najmniejszych kwadratów Chcemy znaleźć takie parametry aby zminimalizować funkcję kosztów. Zobaczmy czy zadziała następujący pomysł: Zacznijmy od pewniej "odgadniętej" wartości początkowej. Następnie zmieniamy ją zgodnie z kierunkiem przeciwnym do gradientu funkcji kosztu. Warto tu przypomnieć, że gradient funkcji to wektor, którego kierunek pokrywa się z kierunkiem, w którym funkcja zmienia się najszybciej, a zwrot wskazuje kierunek, w którym funkcja rośnie. Zatem jeśli wyobrazimy sobie funkcję jako pofałdowany teren, to poruszając się w kierunku przeciwnym do gradientu powinniśmy dotrzeć do niżej położonych partii terenu. Formalnie jeden krok algorytmu minimalizacji gradientowej możemy zapisać: dla każdego : gdzie parametr to szybkość uczenia. Przyjrzyjmy się pochodnej cząstkowej : Czyli zbierając te wyniki otrzymujemy algorytm: Zainicjuj powtarzaj, aż zbiegniesz: dla każdego : Algorytm najmniejszych kwadratów ma kilka cech, które są intuicyjne i naturalne. Wartość zmiany jest proporcjonalna do błędu. Gdy mamy przykład uczący, dla którego przewidywanie prawie zgadza się z to wprowadzane zmiany parametrów są małe. Większa zmiana parametrów będzie dla przykładu, który generuje większy błąd. Powyższe obliczenia dotyczą sytuacji gdy ciąg uczący zawierają wiele przykładów i poprawki obliczamy biorąc pod uwagę wszystkie przykłady. Jest to tak zwany algorytm gradientowy zbiorczy (ang. batch gradient descent). Uaktualnianie parametrów funkcji kosztu można też prowadzić po każdej prezentacji elementu ciągu uczącego. Zauważmy, że w pierwszej linijce naszych przekształceń występuje suma po przyczynkach pochodzących od pojedynczych przykładów. Każdy przykład daje przyczynek dodatni. Zatem minimalizując każdy z przyczynków niezależnie również zminimalizujemy funkcję kosztu. Wersja algorytmu, w której zmiany parametrów obliczane są i dla pojedynczych przykładów z ciągu uczącego podawanych w losowej kolejności nosi nazwę stochastycznego algorytmu minimalizacji gradientowej. Ta wersja algorytmu jest zwykle bardziej wydajna obliczeniowo. tem otrzymujemy algorytm: Zainicjuj powtarzaj, aż zbiegniesz: wylosuj przykład dla każdego : Warto w tym miejscu zauważyć, że algorytm gradientowy jest wrażliwy na minima lokalne, tzn. że z danego punktu w przestrzeni parametrów prowadzi do najbliższego minimum lokalnego. Na szczęście w przypadku regresji linowej istnieje tylko jedno minimum i jest to minimum globalne. Równania normalne Iteracyjna wersja minimalizacji funkcji kosztu przyda nam się jeszcze przy omawianiu algorytmów uczenia sztucznych sieci neuronowych. W pewnych sytuacjach można wykorzystać nieco bardziej narzędzia algebry i analizy matematycznej i znaleźć optymalne parametry analitycznie. W tym celu trzeba znaleźć pochodna funkcji kosztu po parametrach i przyrównać ją do zera. Aby rachunki poszły nam sprawniej przypomnijmy kilka wzorów z algebry. Rachunki macierzowe Dla danej funkcji pochodną względem mapującej macierze jako: Zatem gradient jest macierzą na liczby rzeczywiste definiujemy , której element to pochodna cząstkowa Jako przykład weźmy macierz i funkcję : W tym przypadku otrzymujemy: Dla przypomnienia operator śladu macierzy kwadratowej to suma elementów diagonalnych: . Operator śladu jest przemienny, tzn. Zachodzi również: Dla pochodnych macierzowych zachodzi: gdzie to wyznacznik macierzy A. Minimalizacja funkcji kosztu Uzbrojeni w powyższe wzory możemy powrócić do minimalizacji funkcji kosztu. Zbudujmy macierz wejść w taki sposób, że wejścia z poszczególnych przykładów są jej wierszami. Z wartości wyjściowych zbudujemy wektor kolumnowy Ponieważ możemy zapisać: Korzystając z faktu, że dla wektora następujący sposób: mamy Teraz aby zminimalizować funkcję kosztu równań (%i 2) i (%i 3) widzimy, że: Tak więc: Użyte tricki: możemy zapisać funkcję kosztu w znajdzmy jej pochodną względem . Korzystając z 1. w trzecim kroku skorzystaliśmy z tego, że ślad liczby jest tą samą liczbą 2. w czwartym kroku skorzystaliśmy z tego, że 3. w piątym kroku skorzystaliśmy z równania (%i 5), podstawiając , oraz równanie (%i 1) i Aby zminimalizować funkcję kosztu kładziemy jej pochodną równą 0 i otrzymujemy równanie normalne: Z niego możemy obliczyć parametry minimalizujące funkcję kosztu: Interpretacja probabilistyczna Dlaczego funkcja kosztu w postaci sumy kwadratów błędów dla problemu regresji jest sensowna? W tej sekcji zaprezentuje zestaw założeń probabilistycznych, dla których kwadratowa funkcja błędu jest naturalną konsekwencją. Załóżmy, że zmienne wejściowe i wyjściowe powiązane są zależnością: gdzie jest błędem, który albo pochodzi od pewnych nieuwzględnionych w modelu regresji czynników lub czynnikiem losowym. Załóżmy, że to zmienne niezależne i podlegające temu samemu rozkładowi (ang. IID - independent and identically distributed) normalnemu o średniej zero i wariancji . To założenie zapisujemy krótko: prawdopodobieństwa dana jest wzorem: Z tego wynika, że: . Zatem funkcja gęstości Notacja zmienną oznacza funkcję gęstości prawdopodobieństwa zmiennej mając daną sparametryzowaną przez . Nie mówimy "mając dane " bo nie jest zmienną losową. Prawdopodobieństwo danych (całego ciągu uczącego) określone jest przez rozkład . Ten rozkład zazwyczaj rozumiany jest jako funkcja i przy ustalonym . Możemy jednak spojrzeć na niego inaczej, tzn. jako funkcję przy ustalonych i . Funkcję tą nazywamy funkcją wiarygodności: Zauważmy, że dzięki założeniu o niezależności możemy tą funkcję zapisać jako: Teraz, mając nasz model probabilistyczny możemy się zapytać: jakie są sensowne? Chcielibyśmy, aby były to takie parametry, dla których zaobserwowanie naszego ciągu uczącego jest najbardziej prawdopodobne. Jest to zasada największej wiarygodności. A zatem w myśl tej zasady trzeba znaleźć , które maksymalizuje funkcję wiarygodności . Tak naprawdę wystarczy jeśli zmaksymalizujemy dowolną ściśle rosnącą funkcję funkcji wiarygodności. Rachunki znacznie się uproszczą jeśli jako tą funkcję wybierzemy (wówczas iloczyn przejdzie w sumę). Ostatecznie chcemy zmaksymalizować: Zauważmy, że aby zmaksymalizować funkcję wiarygodności musimy zminimalizować wyrażenie , czyli wprowadzoną w poprzednim rozdziale funkcję kosztu . Podsumowując: zakładając konkretny model probabilistyczny ciągu uczącego udało nam się pokazać, że minimalizacja funkcji kosztu jest konsekwencją zastosowania zasady największej wiarygodności. Warto jednak pamiętać, że procedura minimalizacji średniego błędu kwadratowego daje sensowne wyniki dla znacznie szerszej klasy modeli danych.