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.