praca jakuba gierasimczyka z machine learning'u

65
Algorytm spadku gradientu w uczeniu maszynowym Jakub Gierasimczyk 7 listopada 2016

Upload: vanmien

Post on 11-Jan-2017

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: praca Jakuba Gierasimczyka z machine learning'u

Algorytm spadku gradientuw

uczeniu maszynowym

Jakub Gierasimczyk

7 listopada 2016

Page 2: praca Jakuba Gierasimczyka z machine learning'u

Streszczenie

Celem pracy jest przedstawienie wybranych zagadnień związanych z algoryt-mem spadku gradientu. Algorytm zostanie wykorzystany w jednym z pro-blemów uczenia maszynowego, jakim jest regresja. Naszym zadaniem jestznalezienie możliwie najlepszego przybliżenia funkcji f : X → Y opisującejprawdziwą, ale nieznaną zależność między zbiorami X i Y . Będziemy próbo-wali znaleźć tę funkcję wykorzystując algorytm spadku gradientu oraz znanynam, n - elementowy zbiór uczący S = {(x1, y1), ..., (xn, yn)} ⊂ X × Y . Abyzapobiec przetrenowaniu, zastosowana zostanie regularyzacja Tikhonova. Al-gorytm będzie działał w przestrzeni Hilberta z jądrem reprodukującym.

Słowa kluczowe: uczenie maszynowe, regresja, regularyzacja Tikhonova,algorytm spadku gradientu w przestrzeni Hilberta z jądrem reprodukującym.

Dziedzina nauki i techniki, zgodnie z wymogami OECD: 1.1 Mate-matyka.

3

Page 3: praca Jakuba Gierasimczyka z machine learning'u

Abstract

The purpose of this document is to introduce some facts about Batch Gra-dient Descent (BGD) algorithm. This algorithm is used to solve regressionproblem - one of the Machine Learning issue. Our goal is to find best possi-ble approximation of function f : X → Y which describes true but unknowndependencies between sets X and Y . We look for this function using BGDalgorithm and a learning set S = {(x1, y1), ..., (xn, yn)} ⊂ X ×Y . In order toavoid overfitting, the Tikhonov regularization is added. The algorithm worksin Reproducing Kernel Hilbert Space.

Keywords: Machine Learning, regression, Tikhonov regularization, BatchGradient Descent algorithm in Reproducing Kernel Hilbert Space.

4

Page 4: praca Jakuba Gierasimczyka z machine learning'u

Spis treści

Wstęp 7

1 Podstawy uczenia maszynowego 91.1 Przestrzeń hipotez . . . . . . . . . . . . . . . . . . . . . . . . 91.2 Funkcja straty . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3 Oczekiwany i empiryczny błąd . . . . . . . . . . . . . . . . . . 101.4 Zdolność do uogólnienia . . . . . . . . . . . . . . . . . . . . . 111.5 Przetrenowanie i regularyzacja . . . . . . . . . . . . . . . . . . 11

2 Algorytm spadających gradientów 122.1 Minimalizacja formy kwadratowej . . . . . . . . . . . . . . . . 12

3 Przestrzeń Hilberta z jądrem reprodukującym 183.1 Wybrane zagadnienia . . . . . . . . . . . . . . . . . . . . . . . 193.2 Twierdzenie o reprezentacji . . . . . . . . . . . . . . . . . . . . 22

3.2.1 Przykład 1 . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.2 Przykład 2 . . . . . . . . . . . . . . . . . . . . . . . . . 27

4 Algorytm malejących gradientów w przestrzeni Hilberta 324.1 Gradient w przestrzeni Hilberta . . . . . . . . . . . . . . . . . 324.2 Implementacja algorytmu . . . . . . . . . . . . . . . . . . . . 36

5 Regularyzacja Tikhonov’a 385.1 Warunek wystarczający dla uogólniania . . . . . . . . . . . . . 385.2 Regularyzacja Tikohnova - zdolność do uogólniania . . . . . . 42

6 Podsumowanie 48

A Kody w R 49

Bibliografia 65

5

Page 5: praca Jakuba Gierasimczyka z machine learning'u

6

Page 6: praca Jakuba Gierasimczyka z machine learning'u

Wstęp

W ostatnich czasach uczenie maszynowe zyskuje coraz większą popularność.Ze względu na wzrastającą ilość danych, potrzebujemy wydajnych metod doich analizowania. Uczenie maszynowe takich metod dostarcza. Termin „ucze-nie maszynowe” ma podkreślać analogię do uczenia człowieka. W każdymmomencie życia otrzymujemy z otoczenia pewne dane, zapamiętujemy je,przetwarzamy i wykorzystujemy w przyszłości w podobnych, a nawet zu-pełnie nowych sytuacjach. Podobnie działa uczenie maszynowe. Dysponujączbiorem uczącym S, który reprezentuje kawałek danych z otoczenia, chcemywyciągnąc wnioski odnośnie występujących zależności - może to być zależnośćfunkcyjna (regresja), podział na kategorie (klient spłaci/nie spłaci kredytu),rozpoznawanie wzorców (przetworzenie kodu pocztowego napisanego ręczniena zapis cyfrowy) itp.

W pracy omówimy niektóre zagadnienia związane z regresją.

W pierwszym rozdziale przedstawimy krótkie wprowadzenie do uczeniamaszynowego. Większość pojęć przedstawionych w tym rozdziale - takichjak: zbiór uczący, funkcja straty, błąd empiryczny, przestrzeń hipotez - jeststosowana powszechnie w zagadnieniach uczenia maszynowego.

Drugi rozdział został poświęcony przedstawieniu algorytmu spadku gra-dientu. Pokazane zostanie w jaki sposób można wykorzystać algorytm doznalezienia minimum danej funkcji. W dalszej części pracy, algorytm spadkugradientu będzie wykorzystywany w celu znalezienia minimum funkcji straty.Rozdział ma na celu wyrobienie intuicji stojących za tą metodą.

W rozdziale trzecim wprowadzamy wybrane pojęcia związane z przestrze-nią Hilberta z jądrem reprodukującym. W tej przestrzeni będzie działał algo-rytm spadku gradientu. Przedstawiamy twierdzenie o reprezentacji mówiące oszczególnej postaci funkcji, której szukamy. Dodatkowo rozdział zawiera dwaprzykłady. Pierwszy pokazuje jak działa twierdzenie o reprezentacji. Drugi

7

Page 7: praca Jakuba Gierasimczyka z machine learning'u

metodę wybierania niektórych parametrów modelu.

Rozdział czwarty jest najważniejszy w pracy. Przedstawiony zostaje wnim algorytm spadku gradientu w przestrzeni Hilberta z jądrem reprodu-kującym. Dodatkowo wprowadzona zostaje równoważna postać algorytmu,pozwalająca na implementację w komputerze.

Rozdział piąty jest wprowadzeniem do regularyzacji Tikhonova. Pokazu-jemy najpierw jaki jest warunek wystarczający, aby funkcja wygenerowanaprzez algorytm miała zdolność uogólniania. Następnie wykażemy, że regula-ryzacja Tikhonova ten warunek spełnia.

W dodatku został załączony kod napisany w środowisku R wykorzysty-wany w pracy. Dla działania algorytmu nie jest wymagany żaden dodatkowypakiet. Jedyne pakiety, które zostały dołączone, to pakiety graficzne: ggplot2oraz plot3D.

Praca opiera się głównie na wykładach T. Poggio, L. Rosasco i in. -9.520: Statistical Learning Theory and Applications, Fall 2014. Na dzień28.10.2016 r. materiały z tych wykładów są dostępne pod adresem http://www.mit.edu/~9.520/fall14/.Ponieważ tamatyka jest stosunkowo nowa, wiele pojęć z języka angielskiegozostało przetłumaczonych wedle uznania autora, wraz z podaniem orygina-nych (angielskich) nazw.

8

Page 8: praca Jakuba Gierasimczyka z machine learning'u

Rozdział 1

Podstawy uczenia maszynowego

Uczenie maszynowe możemy podzielić ze względu na postać danych jakichużywamy do uczenia. Wyróżniamy:

• uczenie z nadzorem (supervised learning),

• uczenie bez nadzoru (unsupervised learning).

W przypadku uczenia z nadzorem, dla danych wejściowych x1, ..., xn ∈ Xznamy dane wyjściowe - etykiety (labels) - y1, ..., yn ∈ Y . Dane są losowaneniezależnie ze stałego, ale nieznanego rozkładu ρ(Z) na Z = X × Y i tworzązbiór uczący

S = {(x1, y1), ..., (xn, yn)} ⊂ X × Y. (1.1)

Naszym celem jest znalezienie funkcji fS : X → Y , która jest przybliżeniemfunkcji f : X → Y opisującej rzeczywistą zależności między X i Y . Ucze-nie z nadzorem możemy podzielić na problem regresji (regression) oraz roz-poznawania wzorców (patter recognition). W przypadku regresji zakładamyzazwyczaj, że Y ⊂ R, natomiast dla rozpoznawania wzorców Y = {−1, 1}Wuczeniu bez nadzoru nie mamy zbioru Y . Mówimy wtedy głównie o klasyfi-kacji.

W pracy będziemy zajmować się zagadnieniem regresji.

1.1 Przestrzeń hipotezPrzy każdym problemie związanym z uczeniem maszynowym, określamy tzw.przestrzeń hipotez H. Jest to przestrzeń funkcji wśród których będziemy

9

Page 9: praca Jakuba Gierasimczyka z machine learning'u

szukać fS. Często będzie to przestrzeń Hilberta z jądrem reprodukującym(Reproducing Kernel Hilbert Space - RKHS). Algorytm uczący, na podstawiedanych uczących S będzie „szukał” funkcji fS ∈ H, która najlepiej opisujerzeczywistość. Ta funkcja będzie służyła do przewidywań wartości ypred ∈ Ydla nowych wartości xnew ∈ X

ypred = fS(xnew). (1.2)

Zdolność do predykcji jest kluczowa dla zagadnień związanych z uczeniemmaszynowym.

1.2 Funkcja stratyW celu wybrania najlepszej funkcji fS ∈ H będziemy stosować algorytm,który w każdej iteracji musi ocenić jak „dobra” jest aktualna hipoteza. Bę-dziemy w tym celu wykorzystywać kwadratową funkcję straty V : X×Y → Rdaną wzorem

V (f(x), y) = (f(x)− y)2. (1.3)

1.3 Oczekiwany i empiryczny błądDla danej funkcji f : X → Y , funkcji straty V i miary probabilistycznej ρ,oczekiwany błąd (expected error) funkcji f definiujemy jako:

I(f) = E(x,y)(V (f(x), y)) =∫X×Y

V (f(x), y)dρ(x, y), (1.4)

czyli oczekiwaną stratę wynikająca z użycia funkcji f do przewidywania war-tości y dla każdego punktu x. Naszym zadaniem będzie znalezienie funk-cji fS ∈ H, która minimalizuje oczekiwany błąd. Ponieważ zazwyczaj nieznamy rozkładu ρ, będziemy obliczać błąd empiryczny, który jest przybliże-niem błędu oczekiwanego. Błąd empiryczny dla danej funkcji f definiujemyjako:

IS(f) =1n

n∑i=1

V (f(xi), yi). (1.5)

10

Page 10: praca Jakuba Gierasimczyka z machine learning'u

1.4 Zdolność do uogólnieniaJednym z podstawowych wymogów dotyczących funkcji fS jest zdolność douogólniania (generalization). Rozumiemy przez to, że różnica między błędemempirycznym a oczekiwanym dąży do zera, kiedy rozmiar zbioru uczącegodąży do nieskończoności.

1.5 Przetrenowanie i regularyzacjaMinimalizując błąd empiryczny na zbiorze uczącym S może się pojawić pro-blem przetrenowania (overfitting). Zjawisko to polega na tym, że znalezionafunkcja fS bardzo dobrze pasuje do danych S, ale kosztem zdolności do uogól-niania. Regularyzacja rozwiązuje ten problem. Mówiąc obrazowo, dodajemykarę za skomplikowaną postać funkcji fS.

Jedną z metod regularyzacji jest tzw. regularyzacja Tikhonova (Tikhonovregularization). W przypadku regresji używa się też nazwy ridge regression.Metoda polega na dodaniu do błędu empirycznego (1.5) czynnika λ||f ||2K ,mianowicie

1n

n∑i=1

V (f(xi), yi) + λ||f ||2K , (1.6)

gdzie ||f ||K jest normą w H - przestrzeni Hilberta z jądrem reprodukującymK. Więcej o tej przestrzeni powiemy w Rozdziale 3. Parametr λ > 0 odpo-wiada za balans między dopasowaniem funkcji f do danych a jej złożonością(bias - variance tradeoff ).

W dalszej części będziemy zajmować się problemem znalezienia funkcji H 3fλS : X → Y minimalizującej błąd empiryczny z regularyzacją, tj.

argminf∈H

1n

n∑i=1

V (f(xi)− yi) + λ||f ||2K . (1.7)

Dla uproszczenia zapisu będziemy używali oznaczenia fS = fλS .

Istnienie i jednoznaczność rozwiązania zostały pokazane w pracy [3].

11

Page 11: praca Jakuba Gierasimczyka z machine learning'u

Rozdział 2

Algorytm spadających gradientów

W tym rozdziale przedstawimy ideę, która stoi za algorytmem spadającychgradientów. Jest to jeden z najpopularniejszych algorytmów stosowanych wuczeniu maszynowym. Jego główną zaletą jest brak złożoności obliczenio-wej. W pracy zajmiemy się jego standardową wersją - algorytm będzie dzia-łał z wykorzystaniem całego zbioru uczącego w każdej iteracji. Stąd nazwaBatch Gradient Descent. Istnieje wiele nowszych wersji tego algorytmu, którewymagają jeszcze mniejszej ilości obliczeń, w wielu przypadkach nie tracącna dokładności rozwiązania ani tempie zbieżności. Przykładem są algorytmywykorzystujące jedną obserwację w każdej iteracji (Online Gradient Descent,np. [3]) - co pozwala również na bieżącą aktualizację wraz z napływającymidanymi. Niniejszy rozdział oparty jest o pracę [7].

2.1 Minimalizacja formy kwadratowejDefinicja 1 (Macierz dodatnio określona) Niech A będzie symetrycznąmacierzą o wymiarze n × n, n ∈ N. Mówimy, że macierz A jest dodatniookreślona, jeżeli skalar xTAx jest większy od zera dla każdego niezerowegowektora x o długości n.

Formą kwadratową nazywamy funkcję f : Rd → R określoną wzorem

f(x) =12xTAx− bTx+ c, (2.1)

gdzie A jest macierzą, b oraz x są wektorami, a c wartością skalarną.

Gradient funkcji f oznaczamy przez

12

Page 12: praca Jakuba Gierasimczyka z machine learning'u

∇f(x) =[∂

∂x1f(x)

∂x2f(x) · · · ∂

∂xnf(x)

]T. (2.2)

Gradient jest polem wektorowym, które dla danego punktu x wskazuje kie-runek najszybszego wzrostu f(x). Możemy szukać minimum f przyrównującgradient do zera, mianowicie:

∇f(x) = 12ATx+

12Ax− b = 0 (2.3)

Jeśli A jest symetryczna, to AT = A, więc mamy:

∇f(x) = Ax− b = 0 (2.4)

Jeżeli A jest również dodatnio określona, to rozwiązanie x∗ równania (2.4)jest punktem, w którym f osiąga minimum.

Aby znaleźć x∗ wykorzystamy algorytm spadku gradientu. Zaczynamy wdowolnie wybranym punkcie x0 i „ślizgamy się” w dół paraboloidy. Otrzymu-jemy kolejne punkty x1, x2, ..., i kontynuujemy tak długo, aż znajdziemy sięsatysfakcjonująco blisko minimum x∗.

W każdej iteracji poruszamy się w kierunku, w którym paraboloida najszyb-ciej maleje, tj. w kierunku przeciwnym do tego wskazywanego przez gradient.Zgodnie z równaniem (2.4), gradient wskazuje kierunek

r := ∇f(x) = Ax− b, (2.5)

więc będziemy się poruszać w kierunku −r. Pierwszy krok algorytmu wyko-nujemy w kierunku −r0 = b− Ax0, następnie −rt = b− Axt, mianowicie:

xt+1 = xt − γrt, (2.6)

gdzie γ > 0. Im większa wartość parametru γ, tym dalej się przesuwamy wkierunku przeciwnym do kierunku wzrostu gradientu.

Pokażemy zasadę działania metody malejących gradientów w oparciu oprzykład. Niech

13

Page 13: praca Jakuba Gierasimczyka z machine learning'u

A =[3 22 6

], b =

[2−8

], c = 0. (2.7)

Zauważmy, że forma kwadratowa

f(x) =12xTAx− bTx+ c = 1

2xT[3 22 6

]x−

[2−8

]xT (2.8)

ma kształt paraboloidy z ramionami skierowanmy ku górze - co jest konse-kwencją faktu, że A jest dodatnio określona.

Rysunek 2.1: Forma kwadratowa f(x) =12xTAx− bTx+ c.

Rozwiązaniem tego problemu jest x∗ = [2;−2]T . Załóżmy, że zaczynamyw punkcie x0 = [−2; 1]T . Poniżej przedstawiony jest wykres poziomic dla

14

Page 14: praca Jakuba Gierasimczyka z machine learning'u

f z oznaczonym minimum x∗ = [−2; 2]T (czarny kwadrat) oraz kolejnymiwartościami xt (czerowne punkty). Krok γ = 0,2.

Rysunek 2.2: Wykres poziomic dla formy kwadratowej f z kolejnymi wartościamixt. Krok γ = 0,2.

Oddzielnym zagadnieniem jest wielkość kroku γ > 0. Jeśli będzie on zbytduży, algorytm nie będzie zbiegał - co prawda poruszamy się w kierunkuspadku gradientu, ale „przechodzimy” przez minimum i jesteśmy od niegocoraz dalej. Z drugiej strony, jeśli γ będzie zbyt mały, to algorytm będziezbiegał bardzo wolno.

Pokażemy te zjawiska poniżej. Weźmy ten sam punkt początkowy x0 =[−2; 1]T . Jeśli zmienimy wartość kroku na γ = 0,02, algorytm będzie zbiegał,ale wolno. Ilustruje to poniższy rysunek.

15

Page 15: praca Jakuba Gierasimczyka z machine learning'u

Rysunek 2.3: Wykres poziomic dla formy kwadratowej f z kolejnymi wartościamixt. Krok γ = 0,02.

Z kolei w przypadku zbyt dużego kroku, algorytm nie będzie zbiegał - w każ-dej iteracji gradient wyznacza kierunek, w którym powinniśmy się poruszać,jednak „skaczemy” zbyt daleko. Niech γ = 0,32. W tym przypadku algorytmnie zbiega.

16

Page 16: praca Jakuba Gierasimczyka z machine learning'u

Rysunek 2.4: Wykres poziomic dla formy kwadratowej f z kolejnymi wartościamixt. Krok γ = 0,32.

Wybór kroku γ jest trudnym zagadnieniem, poświęcono mu wiele publikacji.W algorytmie wykorzystywanym w dalszej części pracy - za [5] - przyjęto

γ =21 + λ

, gdzie λ > 0 jest parametrem regularyzacji.

17

Page 17: praca Jakuba Gierasimczyka z machine learning'u

Rozdział 3

Przestrzeń Hilberta z jądremreprodukującym

Omówimy teraz krótko wybrane zagadnienia związane z przestrzenią Hilbertaz jądrem reprodukującym. W dalszej części pracy będziemy wykorzystywaćtę przestrzeń jako przestrzeń hipotez.

W zastosowaniach niezwykle istotna jest równowaga między elastyczno-ścią w doborze przestrzeni hipotezH a możliwością implementacji algorytmu.Przypuśćmy, że rozwiązania problemu (1.7) szukamy wśród funkcji liniowychf(x) = wTx, x ∈ X, w ∈ Rd. Oczywiście za pomocą komputera nie jesteśmyw stanie działać na funkcjach jako obiektach. Zauważmy jednak, że każdąfunkcję z przestrzeni funkcji liniowych możemy jednoznacznie wyznaczyć zapomocą wektora w. Dzięki temu funkcje możemy traktować jak wektory, coprzekłada się na możliwość implementacji. Jednocześnie przestrzeń funkcjiliniowych jest uboga - dla większości problemów jest niewystarczająca. Po-dobnie sytuacja przedstawia się np. w przypadku przestrzeni wielomianów.Dodatkowo musimy ustalić wśród wielomianów jakiego stopnia szukamy roz-wiązania, co jest kolejnym ograniczeniem.Przestrzeń Hilberta pozwala na przeniesienie problemu do nieskończenie wy-miarowej przestrzeni funkcji. Daje to większą swobodę w wyborze postacifunkcji przy jednoczesnym zachowaniu łatwości implementacji. Szczególniewygodna będzie przestrzeń Hilberta z jądrem reprodukującym.

Definicja 2 (Przestrzeń Hilberta) Przestrzenią Hilberta H nazywamy zu-pełną przestrzeń wektorową z iloczynem skalarnym 〈·, ·〉H.

Norma w H może być zdefiniowana jako ||·||H:=√〈·, ·〉

H.

18

Page 18: praca Jakuba Gierasimczyka z machine learning'u

3.1 Wybrane zagadnieniaZdefiniujemy teraz przestrzeń Hilberta H z jądrem reprodukującym (RKHS)i krótko uzasadnimy dlaczego jej używamy. Niniejszy podrozdział został opra-cowany w oparciu o [6] - do tej pracy odsyłamy w celu znalezienia szczegó-łowych informacji.

Definicja 3 (Delta Diraca) Niech X będzie niepustym zbiorem. Deltą Di-raca na przestrzeni Hilberta H funkcji f : X → R nazywamy funkcjonałδx : H → R, który funkcji f przyporządkowuje jej wartość w punkcie x ∈ X :

∀x∈X δx(f) = f(x). (3.1)

Powyższy funkcjonał jest liniowy. Rzeczywiście, dla a, b ∈ R oraz f, g ∈ Hmamy δx(af + bg) = (af + bg)(x) = af(x) + bg(x) = δxf + δxg.

Definicja 4 (Przestrzeń Hilberta z jądrem reprodukującym) Prze-strzeń Hilberta H funkcji f : X → R określonych na niepustym zbiorzeX nazywamy przestrzenią Hilberta z jądrem reprodukującym, jeżeli δx jestfunkcjonałem ciągłym, dla każdego x ∈ X.

Można pokazać, że w RKHS zbieżność w normie pociąga zbieżność wpunktową, tj. lim

n→∞||fn−f ||H= 0 =⇒ lim

n→∞fn(x) = f(x), dla każdego x ∈ X.

Rzeczywiście,

|fn(x)− f(x)|= |δxfn − δxf |≤ ||δx||||fn − f ||H, (3.2)

gdzie ||δx|| jest ograniczona z definicji RKHS. Powyższa uwaga mówi, że jeżelifunkcje są „blisko” w przestrzeni Hiberta RKHS, to ich wartości też są „blisko”siebie.

Przykład Rozważmy przestrzeń rzeczywistych funkcji całkowalnych z kwa-dratem

H = L2[a, b] = {f : X → R;∫ b

a

√|f(x)|2dx <∞},

z iloczynem skalarnym

〈f, g〉 =∫ b

af(x)g(x)dx.

19

Page 19: praca Jakuba Gierasimczyka z machine learning'u

Jest to przestrzeń Hilberta, ale nie jest RKHS - funkcjonał δx nie jest ciągły.Zauważmy, że biorąc dowolne dwie funkcje f, g ∈ L2 należące do jednej klasyw L2 - tj. różniące się w przeliczalnej liczbie punktów - mamy, że ||f−g||L2= 0.Oznacza to, że całkowalność z kwadratem nie jest wystarczająco silnym ogra-niczeniem nałożonym na przestrzeń hipotez, ponieważ predykcja wymagaobliczania funkcji w danym punkcie. To jest zasadnicza różnica między prze-strzenią Hilberta a przestrzenią Hilberta z jądrem reprodukującym.

Rysunek 3.1: W przestrzeni L2 funkcje f i g traktowane są jako ten sam obiekt.

20

Page 20: praca Jakuba Gierasimczyka z machine learning'u

Powyższa definicja RKHS nie jest wygodna w zastosowaniach, dlategomożna wprowadzić defincję równoważną - z użyciem jądra reprodukującegoK, od którego przestrzeń wzięła nazwę. Na początek zdefiniujmy samo jądroreprodukujące.

Definicja 5 (Jądro reprodukujące) Niech H będzie przestrzenią Hilbertafunkcji f : X → R, gdzie X jest niepustym zbiorem. Funkcję K : X×X → Rnazywamy jądrem reprodukującym przestrzeni H, jeżeli spełnia:

• ∀x ∈ X, K(x, ·) ∈ H

• ∀x ∈ X ∀f ∈ H, 〈f,K(x, ·)〉H = f(x) (własność reprodukcji).

W szczególności mamy: 〈K(·, x), K(·, y)〉H = K(x, y) = K(y, x).

Wprowadźmy jeszcze oznaczenie Kx = K(x, ·). Własność reprodukcji bę-dziemy natomiast skrótowo oznaczali przez r.p. (reproducig property). Dlaskrócenia zapisu, jądro reprodukujące będziemy często nazywali „ jądrem”.

Zanim przejdziemy do dalszych własności przestrzeni RKHS, przedsta-wimy jądro, które będziemy wykorzystywać w dalszej części pracy, tj. jądroGaussa:

K(x1, x2) = e(x1−x2)

2

σ2 , (3.3)

gdzie x1, x2 ∈ X, σ > 0. Jest to jedno z najczęściej używanych jąder wuczeniu maszynowym.

Poniżej podajemy Twierdzenie 6 oraz Twierdzenie 9, mówiące o zależno-ściach między jądrem reprodukującym K a RKHS. Dowody tych twierdzeń(a także Twierdzenia 8) można znaleźć w [6].

Twierdzenie 6 Przestrzeń Hilberta H jest przestrzenią Hilberta z jądremreprodukującym (tj. delta Diraca jest ciągłym liniowym operatorem) wtedy itylko wtedy, gdy H posiada jądro reprodukujące.

Definicja 7 (Funkcja dodatnio określona) Symetryczną funkcję h : X ×X → R naywamy dodatnio określoną, jeżeli ∀n ≥ 1 ∀(α1, ..., αn) ∈ Rn ∀(x1, ..., xn) ∈Xn zachodzi:

n∑i=1

n∑j=1

αiαjh(xi, xj) ≥ 0. (3.4)

21

Page 21: praca Jakuba Gierasimczyka z machine learning'u

Twierdzenie 8 Jądro reprodukujące jest dodatnio określone.

Poniższe twierdzenie mówi, że mając daną dodatnio określoną funkcję Kmożemy skonstruować RKHS. Mianowicie zachodzi

Twierdzenie 9 (Moore - Aronszajn) Niech K : X×X → R będzie funk-cją dodatnio określoną. Wtedy istnieje jednoznacznie wynaczona RKHS H zjądrem reprodukującym K.

Można pokazać, że [6]

f =m∑j=1

αjKxj ∈ H, (3.5)

gdzie m ∈ N, αj ∈ R, xj ∈ X dla j = 1, ...,m, oraz H jest przestrzeniąHilberta z jądrem reprodukującym powiązaną z K.Powyższe twierdzenie mówi również, że każda dodatnio określona funkcja jestjądrem reprodukującym.

W dalszej części pracy przestrzeń Hilberta H z jądrem reprodukującymK będziemy oznaczać przez HK . Iloczyn skalarny w tej przestrzeni będziemyoznaczać przez 〈·, ·〉K .

3.2 Twierdzenie o reprezentacjiSzukanie rozwiązania problemu (1.7) wśród funkcji f ∈ HK chcielibyśmymóc przeprowadzić z pomocą komputera. Konieczne jest zatem takie przed-stawienie funkcji f , które pozwala na implementację algorytmu. PrzestrzeńHK może być nieskończona, jednak poniższe twierdzenie podaje wygodnąreprezentację funkcji, wśród których będziemy szukać rozwiązania. Zachodzimianowicie

Twierdzenie 10 (Twierdzenie o reprezentacji) Funkcja fS ∈ HK mini-malizująca problem (1.7) jest postaci

fS =n∑i=1

αiKxi , (3.6)

gdzie x1, ..., xn ∈ S oraz α1, ..., αn ∈ R.

22

Page 22: praca Jakuba Gierasimczyka z machine learning'u

Powyższe twierdzenie mówi, że funkcja będąca rozwiązaniem problemu (1.7),może być przedstawiona za pomocą kombinacji liniowej jąder reprodukują-cych obliczanych w punktach xi ∈ S, gdzie i = 1, ..., n oraz n - liczba obser-wacji. Innymi słowy, problem znalezienia funkcji minimalizującej (1.7) spro-wadzamy do znalezienia co najwyżej n współczynników αi w oparciu tylko ozbiór uczący S.

Dowód (Twierdzenie 10) Zdefiniujmy liniową podprzestrzeń H0 prze-strzeni H

H0 = {f ∈ HK ; f =n∑i=1

αiKxi ; xi ∈ S, αi ∈ R, i = 1, ..., n}. (3.7)

Niech H⊥0 będzie liniową podprzestrzenią HK ortogonalną do H0, tj.

H⊥0 = {g ∈ HK ; 〈g, f〉K = 0, dla każdej f ∈ H0}. (3.8)

Z [1] mamy, że ponieważ H0 jest skończenie wymiarowa, to jest domknięta,więc HK = H0⊕H⊥0 . Stąd wynika, że każda f ∈ HK może być jednoznacznieprzedstawiona jako suma elementów f 0 ∈ H0 i f 1 ∈ H⊥0 :

f = f 0 + f 1. (3.9)

Przypomnijmy, że szukamy funkcji fS ∈ HK minimalizującej ryzyko empi-ryczne z regularyzacją. Pokażemy, że fS ∈ H0. Zajmiemy sie oddzielnie każ-dym z czynników: ryzykiem empirycznym i regularyzacją. Pierwszy z nich,ryzyko empiryczne, jest postaci

IS(fS) =1n

n∑i=1

V (f 0S(xi) + f1S(xi), yi) =

1n

n∑i=1

V (f 0S(xi), yi) = IS(f0). (3.10)

Rzeczywiście, dla każdego xi ∈ S, i = 1, ..., n, zachodzi

f 1S(xi)r.p.= 〈f 1S, Kxi〉K = 0, (3.11)

gdzie ostatnie równanie wynika z faktu, że Kxi ∈ H0.

Zachodzi [1]

23

Page 23: praca Jakuba Gierasimczyka z machine learning'u

||fS||2K= ||f 0S||2K+||f 1S||2K . (3.12)

Powyższa równość wynika z ortogonalności f 0S i f 1S. Stąd dla regularyzacji,ponieważ szukamy funkcji, która minimalizuje problem (1.7), najlepiej, żeby||f 1S||2K= 0. Zatem ostatecznie fS ∈ H0.

Od tego miejsca, pisząc fS ∈ HK będziemy mieli na myśli funkcję postacifS =

n∑i=1

αiKxi .

Wykorzystując powyższe twierdzenie, pokażemy teraz jak można przed-stawić normę funkcji f ∈ H0. Mamy mianowicie:

||f ||2K = 〈f, f〉K

= 〈n∑i=1

αiKxi ,n∑i=1

αiKxi〉K

=n∑i=1

n∑i=1

αiαi〈KxiKxi〉K

=n∑i=1

n∑i=1

αiαiK(xi, xi)

= αTKα.

(3.13)

W powyższym równaniu przezK oznaczamy macierz jądraK := K(i, j)i,j=1,...,n =K(xi, xj).

3.2.1 Przykład 1

W tej części pokażemy jak działa Twierdzenie 10 w przypadku jądra Gaussa.Poniższe funkcje zostały wygenerowane przy użyciu algorytmu zaprezento-wanego w Rozdziale 4. Kod można znaleźć w Dodatku A.

Przypuśćmy, że zbiór uczący składa się z czterech oberwacji

S = {(−10; 0,2), (−5;−2), (1; 0,5), (5; 1,5)}. (3.14)

24

Page 24: praca Jakuba Gierasimczyka z machine learning'u

Każdej obserwacji xi ∈ S, i = 1, 2, 3, 4, przyporządkowujemy jądro gaussow-

skie K(xi, x) = exp(−(xi − x)2

σ2), gdzie x ∈ X, σ > 0. Niech σ = 2. Zgodnie

z Twierdzeniem 10 funkcja fS : X → R jest kombinacją liniową jąder K(xi, ·)

fS(x) =4∑i=i

αiK(xi, x). (3.15)

Na podstawie algorytmu zostały wyznaczone parametry αi. Odpowiadająone za „wysokość” krzywych. Pierwszy z dwóch poniższych rysunków przed-stawia cztery jądra odpowiadające punktom x1, ..., x4 (jądra są scentrowanew tych punktach). Na drugim rysunku została dodana funkcja fS - liniowakombinacja tych jąder.

Rysunek 3.2: Jądra gaussowskie skoncentrowane w punktach x1, ..., x4.

25

Page 25: praca Jakuba Gierasimczyka z machine learning'u

Rysunek 3.3: Kombinacja liniowa jąder gaussowskich z zaznaczonymi jądrami skła-dowymi.

Sprawdzimy teraz jak zmiana parametru σ wpływa na postać funckji f .Zauważmy, że zmieniając σ rozważamy inną przestrzeń hipotez HK . Niechσ = 3. Otrzymujemy

Rysunek 3.4: Wpływ parametru σ na kształt kombinacji liniowej jąder.

Widzimy, że teraz jądra są „szersze”. Im większa wartość parametru σ tymbardziej jądra składające się na funkcję f będą „rozciągnięte”.

26

Page 26: praca Jakuba Gierasimczyka z machine learning'u

Powyższe przykłady były generowane bez regularyzacji, tj. λ = 0. Po-każemy teraz jak zmieni się postać funkcji przy niezerowej wartości tegoparametru. Niech ponownie σ = 2, ale λ = 0,5. Otrzymujemy

Rysunek 3.5: Wpływ regularyzacji na kształt kombinacji liniowej jąder.

Widzimy, że otrzymana funkcja jest bardziej płaska - nałożyliśmy karę zaskomplikowaną postać fS. Dla parównania, funkcja z Rysunku 3.3 ma normę||fS||K≈ 2,52, natomiast funkcja z powyższego Rysunku 3.7 ma normę ||fS||K≈0,85. Normy zostały wyliczone na podstawie wzoru (3.13).

W tym przykładzie parametr λ ma dość dużą wartość, dlatego otrzymanafunkcja fS jest słabo dopasowana do danych. Przy wzrastającej wartości λfunkcja fS będzie dążyła do funkcji tożsamościowo równej 0.

3.2.2 Przykład 2

W tym podrozdziale powiemy krótko o wyborze parametru regularyzacji λ.Jedną z metod ([4]) jest użycie zbioru walidującego (testowego). Bierzemykilka wartości lambda λ1, λ2, ..., λl. Dla każdej λi znajdujemy funkcję fS,następnie sprawdzamy jaki ta funkcja generuje błąd na zbiorze walidującym.

W przykładzie sztucznie wygenerujemy dane, z których wydzielimy zbióruczący oraz testowy. Weźmy funkcję f(x) = 50 cos(x)+x2−14x+20 określoną

27

Page 27: praca Jakuba Gierasimczyka z machine learning'u

na X = [−8, 8]. Losowo wybieramy n = 200 wartości x ∈ X. Przypuśćmy,że szum ma rozkład jednostajny U(−40, 40). Generujemy n = 200 wartościy. Na wykresie poniżej przedstawiamy funkcję f wraz z wygenerowanymidanymi.

Rysunek 3.6: Funkcja f(x) = 50 cos(x)+x2−14x+20 z wygenerowanymi danymi.

Standardowym zabiegiem w uczeniu maszynowym jest normalizacja da-nych, co - zwłaszcza w przypadku danych wielowymiarowych o różnej skaliwartości - jest istotne dla tempa zbieżności algorytmu ([4]). Poniżej zbiór wy-generowanych danych - już po znormalizowaniu i z zaznaczonymi na czerwonodanymi, które zostały wzięte jako zbiór testowy. Nie są one brane pod uwagępodczas uczenia algorytmu. Zbiór uczący liczy 150 punktów (75% wszystkichdanych), natomiast zbiór walidujący 50 punktów (25%).

28

Page 28: praca Jakuba Gierasimczyka z machine learning'u

Rysunek 3.7: Znormalizowane dane z podziałem na zbiory: uczący i testowy.

W przykładzie weźmiemy σ = 0,2. Algorytm będzie uruchomiony dlaλ = {0; 2−18; 2−16; ...; 2−2; 20}. Wartości błędu na zbiorze walidującym dlakolejnych wartości λ przedstawione są na rysunku poniżej.

Rysunek 3.8: Błąd na zbiorze walidującym.

Widzimy, że błąd ma najmniejszą wartość dla λ = 2−8. Poniżej znajdujesię wykres prawdziwej funkcji f (czarna) oraz fS (niebieska) dopasowanej

29

Page 29: praca Jakuba Gierasimczyka z machine learning'u

przez algorytm z optymalnym parametrem λ = 2−8. Dla porównania dodamydwa kolejne rysunki funkcji fS: bez regularyzacji oraz z λ = 0,5.

Rysunek 3.9: Dopasowana funkcja fS z optymalnym parametrem λ = 2−8.

Rysunek 3.10: Dopasowana funkcja fS bez regularyzacji (λ = 0).

30

Page 30: praca Jakuba Gierasimczyka z machine learning'u

Rysunek 3.11: Dopasowana funkcja fS z parametrem λ = 2−2.

Na powyższych rysunkach widać, że uczenie bez regularyzacji powoduje prze-trenowanie. Z kolei w przypadku zbyt dużej wartości parametru λ zaczynamyignorować dane na korzyść prostoty funkcji fS. Zależność najlepiej oddajefunkcja na pierwszym z trzech powyższych rysunków.

W przykładzie zostało wybrane jądro σ = 0,2. W rzeczywistości najlepszejądro również wybiera się za pomocą zbioru walidującego.

31

Page 31: praca Jakuba Gierasimczyka z machine learning'u

Rozdział 4

Algorytm malejących gradientóww przestrzeni Hilberta

W tym rozdziale przedstawimy algorytm malejących gradientów działającyw przestrzeni Hilberta. W tym celu będziemy musieli policzyć gradient kwa-dratowej funkcji straty V. Najpierw jednak pokażemy jak algorytm wygląda.Zakładając, że HK 3 ft, ft+1 : X → R, dla t = 1, 2, 3, ..., oraz f1 = 0, okazujesię, że algorytm malejących gradientów jest postaci

ft+1 = ft − γt(1n

n∑i=1

ft(xi)− yi) + λft). (4.1)

4.1 Gradient w przestrzeni HilbertaW tym podrozdziale przedstawiony zostanie algorytm w dowolnej przestrzeniHilberta W z iloczynem skalarnym 〈·, ·〉. Rozdział opiera się o [8]. Rozważmykwadratowe odwzorowanie V : W → R dane wzorem

V (w) =12〈Aw,w〉+ 〈B,w〉+ C, (4.2)

gdzie A : W → W jest dodatnio określonym ograniczonym liniowym opera-torem, którego operator odwrotny jest ograniczony, tj. ||A−1||< ∞, B ∈ Woraz C ∈ R. Wtedy okazuje się [8], że gradient gradV : W → W jest postaci

gradV (w) = Aw +B (4.3)

oraz dla V istnieje dokładnie jeden punkt w∗ ∈ W minimalizujący V tak, żegradV (w∗) = Aw∗ +B = 0, tj.

32

Page 32: praca Jakuba Gierasimczyka z machine learning'u

w∗ = −A−1B. (4.4)

Naszym celem jest znalezienie przybliżenia punktu w∗, kiedy A, B, C sąelementami losowymi określonymi na przestrzeni probabilistycznej Z = X ×Y . Wykorzystamy w tym celu tzw. stochastyczny algorytm spadku gradientudany formułą [8]

wt+1 = wt − γtgradVz(wt), dla t = 1, 2, ..., (4.5)

gdzie γt > 0.

Dla każdej z ∈ Z, gradient gradVz(w) : W → W jest dany przez przekształ-cenie gradVz(w) = A(z)w + B(z), gdzie A(z), B(z) oznaczają wartości ele-mentów losowych A,B w punkcie z ∈ Z. Oznaczając At = A(zt), Bt = B(zt)dla zt ∈ Z, równanie (4.5) możemy zapisać jako

wt+1 = wt − γt(Atwt +Bt), dla pewnego w1 ∈ W, (4.6)

gdzie

1. zt ∈ Z, t ∈ N, są losowane niezależnie z rozkładu ρ na Z;

2. Krok γt > 0;

3. Odwzorowanie A : Z → SL(W ) jest elementem losowym o wartościachw SL(W ) - przestrzeni wektorowej symetrycznych i ograniczonych ope-ratorów liniowych działających z W do W , a B : Z → W jest elemen-tem losowym o wartościach w W .

Z równania (4.5) otrzymamy algorytm (4.1). Rozważmy mianowicie przypa-dek W = HK . Dla ustalonej z = (x, y) ∈ Z weźmy kwadratowy funkcjonałVz : HK → R zdefiniowany jako

Vz(f) =12((f(x)− y)2 + λ||f ||2K). (4.7)

W tym przypadku mamy Azf := f(x)Kx + λf , Bz := −yKx, Cz :=12y2.

Rzeczywiście

33

Page 33: praca Jakuba Gierasimczyka z machine learning'u

Vz(f) =12〈Azf, f〉K + 〈Bz, f〉K + Cz

=12〈f(x)Kx + λf, f〉K + 〈−yKx, f〉K +

12y2

=12(f(x)2 + λ||f ||2K)− yf(x) +

12y2

=12((f(x)− y)2 + λ||f ||2K).

(4.8)

Gradient gradVz : HK → HK obliczany w f ∈ HK jest to odwzorowanie,które dla każdego g ∈ HK spełnia

〈gradVz(f), g〉K = DVz(f)(g), (4.9)

gdzie pochodna Frèchet’a w f , DVz(f) : HK → R, jest liniowym funkcjona-łem takim, że dla g ∈ HK

lim||g||K→0

|Vz(f + g)− Vz(f)−DVz(f)(g)|||g||K

= 0 (4.10)

Uwaga. W szczególności, dla funkcjonału F : H → R określonego na pewnejprzestrzeni Hilberta H jako F(f) = ||f ||2= 〈f, f〉 mamy DF(f)(g) = 2f .Rzeczywiście

lim||g||→0

〈f + g, f + g〉 − 〈f, f〉 − 〈2f, g〉||g||

= lim||g||→0

〈f, f〉+ 2〈f, g〉+ 〈g, g〉 − 〈f, f〉 − 2〈f, g〉||g||

= 0.

Zachodzi

DVz(f)(g) = (f(x)− y)g(x) + λ〈f, g〉K(∗)= (f(x)− y)〈Kx, g〉K + λ〈f, g〉K= 〈(f(x)− y)Kx, g〉K + 〈λf, g〉K= 〈(f(x)− y)Kx + λf, g〉K ,

(4.11)

34

Page 34: praca Jakuba Gierasimczyka z machine learning'u

gdzie przejście (*) wynika z własności reprodukcji g(x) = 〈g,Kx〉K .Pokażemy, że powyższe równanie jest prawdziwe, tj. DVz(f)(g) = (f(x) −y)g(x) + λ〈f, g〉K spełnia (4.10). Rzeczywiście, mamy

Vz(f + g)− Vz(f) =12

([(f + g)(x)− y]2 + λ||f + g||2K−(f(x)− y)2 − λ||f ||2K

)=12(f(x)2 + g(x)2 + y2 + 2f(x)g(x)− 2f(x)y − 2g(x)y

+ λ〈f + g, f + g〉K − f(x)2 + 2f(x)y − y2 − λ〈f, f〉K)

= g(x)(f(x)− y) + λ〈f, g〉K︸ ︷︷ ︸DVz(f)(g)

+12g(x)2 +

12λ〈g, g〉K .

(4.12)

Ponieważ mamy

lim||g||K→0

12g(x)

2 + 12λ||g||2K

||g||K

(∗)≤ 12lim

||g||K→0

||g||2K ||Kx||2K+λ||g||2K||g||K

=12lim

||g||K→0||g||K ||Kx||2K+λ||g||K= 0,

(4.13)

co daje (4.10). Przejście (*) wynika z własności reprodukcji i nierównościCauchy’ego - Schwartza: |g(x)|= |〈g,Kx〉|≤ ||g||K ||Kx||K .

Dostajemy zatem następującą równość:

gradVz(f) = (f(x)− y)Kx + λf. (4.14)

Biorąc teraz f = ft, (x, y) = (xi, yi), mamy

gradVzi(ft) = (ft(xi)− yi)Kxi + λft. (4.15)

Sumując obustronnie i dzieląc przez n otrzymamy

1n

n∑i=1

gradVzi(ft) =1n

n∑i=1

((ft(xi)− yi)Kxi + λft)

⇔ grad1n

n∑i=1

Vzi(ft) =1n

n∑i=1

(ft(xi)− yi)Kxi + λft.(4.16)

35

Page 35: praca Jakuba Gierasimczyka z machine learning'u

Otrzymaliśmy zatem, że gradient empirycznej funkcji straty z regularyzacjąjest postaci

gradV (ft) =1n

n∑i=1

(ft(xi)− yi)Kxi + λft, (4.17)

co ostateczenie daje równanie (4.1).

4.2 Implementacja algorytmuOtrzymany algorytm (4.1) chcielibyśmy móc zaimplemetować. W tym celuzapiszemy go w innej, równoważnej postaci. Korzystając z Twierdzenia 10,możemy algorytm (4.1) zmienić z algorytmu aktualizującego funkcje ft+1,na algorytm aktualizujący parametry αt+1 ∈ R, t ∈ N. Mianowicie dla t =1, 2, ..., mamy

αt+1i ← αti(1− λγt)− γt1n(ft(xi)− yi) (4.18)

Pokażemy, że tak dobrane współczynniki spełniają (4.1). Pomnóżmy miano-wicie wyrażenie (4.1) obustronnie przez ft. Mamy

ft+1 = ft − γt(1n

n∑i=1

(ft(xi)− yi)Kxi + λft

)/·ft

⇔ 〈ft+1, ft〉K = (1− λγt)〈ft, ft〉K − γt1n

n∑i=1

(ft(xi)− yi)〈Kxi , ft〉K

⇔ 〈ft+1, ft〉K(∗)= (1− λγt)〈ft, ft〉K − γt

1n

n∑i=1

(ft(xi)− yi)ft(xi)

(4.19)

Korzystając z Twierdzenia 10, własności 〈Kx, Ky〉K = K(x, y) i podstawiającz lewej strony równania (*) αt+1i = α

ti(1− λγt)− γt

1n(ft(xi)− yi) mamy

36

Page 36: praca Jakuba Gierasimczyka z machine learning'u

L = 〈ft+1, ft〉K

= 〈n∑i=1

αt+1i Kxi ,n∑j=1

αtjKxj〉K

=n∑i=1

αt+1i

n∑j=1

αtjK(xi, xj)

= (1− λγt)n∑i=1

αti

n∑j=1

αtjK(xi, xj)− γt1n

n∑i=1

(ft(xi)− yi)n∑j=1

αtjK(xi, xj)

= (1− λγt)〈ft, ft〉K − γt1n

n∑i=1

(ft(xi)− yi)ft(xi) = P.

(4.20)

37

Page 37: praca Jakuba Gierasimczyka z machine learning'u

Rozdział 5

Regularyzacja Tikhonov’a

W tym rozdziale pokażemy, że funkcja fS minimalizująca regularyzację Ti-khonova (1.7) ma zdolność do uogólniania, tj. różnica między błędem ocze-kiwanym (1.4) a empirycznym (1.5) maleje wraz ze wzrostem liczby obser-wacji. Najpierw wprowadzimy nowe oznaczenie funkcji straty, którego bę-dziemy używać w celu uproszczenia zapisu. Funkcję straty będziemy miano-wicie oznaczać przez V (f, z), gdzie z = (x, y) ∈ Z. Przypomnijmy, że błądoczekiwany definiujemy jako

I(f) = Ez(V (f, z)) =∫ZV (f, z)dρ(z)

oraz błąd empiryczny jako

IS(f) =1n

n∑i=1

V (f, zi).

Różnicę (defect) pomiędzy powyższymi błędami oznaczmy przez

D(fS) := I(fS)− IS(fS). (5.1)

5.1 Warunek wystarczający dla uogólnianiaW tej sekcji będziemy chcieli pokazać jakie warunki są wystarczające douzyskania zdolności do uogólniania. Wprowadzimy definicję βn - stabilności.Okazuje się, że jeżeli funkcja jest βn - stabilna, to (przy kilku dodatkowychzałożeniach), ma zdolność do uogólniania.W kolejnej sekcji pokażemy, że funkcja wyznaczona za pomocą regularyzacjiTikhonova jest βn - stabilna.

38

Page 38: praca Jakuba Gierasimczyka z machine learning'u

Przez Si,z oznaczmy zbiór treningowy (uczący) utworzony przez zamianę i-tego elementu w S na nowy punkt z = (x, y) ∈ Z.

Definicja 11 (βn - stabilność) Mówimy, że funkcja fS jest βn - stabilna,jeżeli

∀(S,z)∈Zn+1∀i−1,...,n supz′∈Z|V (fS, z′)− V (fSi,z , z′)|≤ βn. (5.2)

βn - stabilność mówi, że rozwiązanie nie zmienia się bardzo przy niewielkichzmianach na zbiorze uczącym.

Zakładając, że algorytm jest βn - stabilny, chcemy znaleźć ograniczenie dlaróżnicy D(fS). Zauważmy, że nie możemy stosować prawa wielkich liczb. Coprawda zakładamy, że z1, ..., zn są losowane niezależnie z jednakowego roz-kładu, jednak funkcja (zmienna losowa) fS jest wyznaczana za pomocą całegozbioru S, więc zmienne losowe V (fS, zi) oraz V (fS, zj) mogą być między sobązależne. Skorzystamy z nierówności McDiarmid’a.

Twierdzenie 12 (Nierówność McDiarmid’a [2]) Niech

1. Funkcjonał F : (Z1, ..., Zn)→ R taki, że EznF(Z1, ..., Zn) <∞

2. ∀i=1,...,n ∃ci>0 supS∈Zn,z′i∈Z

|F(S)−F(Si,z′)|≤ ci.

Wtedy

P (|F(S)− ES(F(S)|> ε) ≤ 2 exp

− 2ε2n∑i=2

c2i

. (5.3)

Będziemy korzystali z Twierdzenia (12) w wersji F(S) = D(fS). Mianowicie

Twierdzenie 13 Niech

1. ES(D(fS)) ≤ βn <∞

2. ∀i∃ci supS,z|D(fs)−D(fSi,z)|≤ ci.

Wtedy

P (|D(fS)− ES(D(fS))|> ε) ≤ 2 exp(− nε2

2(nβn +M)2

). (5.4)

39

Page 39: praca Jakuba Gierasimczyka z machine learning'u

Aby skorzystać z powyższej nierówności pokażemy, że przy założeniu o ogra-niczoności funkcji straty V i βn - stabilności funkcji fS wynika prawdziwośćzałożeń Twierdzenia (13). Mianowicie

Twierdzenie 14 Jeżeli funkcja straty V jest ograniczona przez pewną stałąM > 0 oraz fS jest βn - stabilna, to

1. ES(D(fS)) ≤ βn <∞

2. ∀i∃ci supS,z(D(fS)−D(fSi,z)) ≤ ci.

Dowód Najpierw pokażemy prawdziwość punktu 1. Oszacujemy wyrażenieES(D(fS)). Zachodzi

ES(D(fS)) = ES(I(fS)− IS(fS))

= ES

(∫ZV (fS, z)dρ(z)−

1n

n∑i=1

V (fS, zi))

= ES

(∫Z

1n

n∑i=1

(V (fS, z)− V (fS, zi)) dρ(z))

≤ βn.

(5.5)

Teraz pokażemy, że prawdziwy jest punkt 2. Mamy

|D(fS)−D(fSi,z)| = |I(fS)− IS(fS)− I(fSi,z) + ISi,z(fSi,z)≤ |I(fS)− I(fSi,z)|+|IS(fS)− ISi,z(fSi,z)|(∗)≤ βn +

2Mn+ βn

= 2βn +2Mn=: ci.

(5.6)

Pokażemy jeszcze, że nierówność (*) jest prawdziwa. Z założenia o βn - sta-bilności mamy, że

|I(fS)− I(fSi,z)|=∫Z

V (fS, z)− V (fSi,z , z)dρ(z) ≤ βn. (5.7)

Dodatkowo z ograniczenia funkcji straty przez M i βn - stabilności, zachodzi

40

Page 40: praca Jakuba Gierasimczyka z machine learning'u

|IS(fS)− ISi,z(fSi,z)| =1n

n∑j=1

V (fS, zj)−1n

n∑j=1

V (fSi,z , zj)

≤ 1n|V (fS, zi)− V (fSi,z , z)|︸ ︷︷ ︸

(∗∗)

+1n

∑j 6=i|V (fS, zj)− V (fSi,z , zj)|

≤ 2Mn+(n− 1)n

βn ≤2Mn+ βn.

(5.8)

Dla wyrażenia (**) nie możemy użyć βn - stabilności, ponieważ funkcja stratydziała na dwóch - potencjalnie różnych - punktach zi, z. Wykorzystujemyzatem założenie o ograniczoności funkcji straty.

Teraz możemy zastosować nierówność McDiarmid’a. Mamy oszacowanie

P (|D(fS)− ES(D(fS))|> ε) ≤ 2 exp

− 2ε2n∑i=1(2βn + 2Mn )

2

= 2 exp

(− 2ε2

n(2βn + 2Mn )2

)

= 2 exp(− nε2

2(nβn +M)2

).

(5.9)

Niech teraz

δ := 2 exp(− nε2

2(nβn +M)2

). (5.10)

Rozwiązując powyższe równanie względem ε mamy:

ε = (nβn +M)

√2 ln(2/δ)

n. (5.11)

Możemy zatem powiedzieć, że z prawdopodobieństwem 1− δ

D(fS) ≤ ES(D(fS)) + (nβn +M)√2 ln(2/δ)

n. (5.12)

41

Page 41: praca Jakuba Gierasimczyka z machine learning'u

Ostatecznie z prawdopodobieństwem 1− δ mamy

D(fS) ≤ βn + (nβn +M)

√2 ln(2/δ)

n. (5.13)

Chcemy uzyskać

D(fS) = I(fS)− IS(fS)n→∞−→ 0. (5.14)

W tym celu musimy nałożyć pewne ograniczenie na tempo zbieżności βn.Okazuje się, że wystarczy założyć, aby βn zbiegała do zera jak 1/n, czyliβn = O(1/n). Rzeczywiście, w tym przypadku mamy:

D(fS) ≤ βn + (nβn +M)

√2 ln(2/δ)

n

= O(1/n) + (O(1))√O(1/n)

= O(√1/n) n→∞−→ 0.

(5.15)

5.2 Regularyzacja Tikohnova - zdolność do uogól-niania

W tym rozdziale pokażemy, że funkcja wygenerowana przez algorytm wyko-rzystujący regularyzację Tikhonova z ograniczoną funkcją straty V < M jestβn-stabilny, gdzie βn = O(1/n). Jak pokazaliśmy wyżej, implikuje to zdolnośćdo uogólniania.

Najpierw wprowadzimy dodatkowe założenia. Niech

1. Funckja straty V będzie lipschitzowska względem f , czyli

∀f1,f2∈HK |V (f1, z)− V (f2, z)|≤ L||f1 − f2||∞ (5.16)

Uwaga. W przypadku kwadratowej funkji straty ten warunek nie za-chodzi, jeżeli dziedzina jest nieograniczona.

2. Jądro K jest ograniczone, tj

∃CK∈R supx∈X|K(x, x)|≤ C2K <∞. (5.17)

42

Page 42: praca Jakuba Gierasimczyka z machine learning'u

Uwaga. Dla jądra gaussowskiego CK = 1.

Przedstawimy teraz i udowodnimy twierdzenie mówiące, że rozwiązanie re-gularyzacji Tikhonova jest βn - stabilne. Następnie pokażemy, że założeniatego twierdzenia są spełnione.

Twierdzenie 15 (Rozwiązanie regularyzacji Tikhonova jest βn - sta-bilne) Przy powyższych założeniach, jeżeli βn = O(1/n), funkcja straty V <M , dla pewnego M > 0 oraz

1. ||f − f ′||∞≤ CK ||f − f ′||K ∀f,f ′∈HK

2. ||fS − fSi,z ||2K≤L

λn||fS − fSi,z ||∞,

to rozwiązanie regularyzacji Tikhonova jest βn - stabilne.

Dowód. Oszacujmy najpierw wartość wyrażenia ||fS − fSi,z ||K . Mamy

||fS − fSi,z ||2K(2)≤ L

λn||fS − fSi,z ||∞

(1)≤ LCK

λn||fS − fSi,z ||K .

(5.18)

Dzieląc powyższą nierówność obustronnie przez ||fS − fSi,z ||K mamy

||fS − fSi,z ||K≤LCKλn

. (5.19)

Wykorzystując ten rezultat mamy

|V (fS, z′)− V (fSi,z , z′)|(L)≤ L||fS − fSi,z ||∞(1)≤ LCK ||fS − fSi,z ||K(5.19)≤ L2C2K

λn=: βn.

(5.20)

Zauważmy, że βn = O(1/n). Zatem udowodniliśmy, że rozwiązanie ma zdol-ność uogólniania.

43

Page 43: praca Jakuba Gierasimczyka z machine learning'u

Teraz pokażemy, że założenia Twierdzenia 15 zachodzą. Każde z założeńprzedstawimy jako oddzielne twierdzenie i udowodnimy. Pierwsze z założeńoznaczmy jako Twierdzenie 16, natomiast drugie jako Twierdzenie 19.

Twierdzenie 16 Załóżmy, że f ∈ HK, gdzie jądro K przestrzeni HK jestograniczone, tj. sup

x∈X|K(x, x)|= C2K <∞. Wtedy

||f ||∞≤ CK ||f ||K . (5.21)

Dowód.

||f ||∞ = supx∈X|f(x)|

(r.p.)= sup

x∈X|〈f,K(x, ·)〉K |

(C−S)≤ sup

x∈X||f ||K ||K(x, ·)||K

= supx∈X||f ||K

√〈K(x, ·), K(x, ·)〉K

= supx∈X||f ||K

√K(x, x)

(zal.)≤ ||f ||KCK .

(5.22)

Aby udowodnić, że drugie z założeń Twierdzenia 15 jest prawdziwe musimywprowadzić kolejne pojęcia.

Definicja 17 (Odległość Bregman’a [5]) Niech F będzie wypukłym i róż-niczkowalnym funkcjonałem z przestrzeni Hilberta funkcji f : X → R, wzbiór liczb rzeczywistych, tj. F : H → R. Odległością Bregman’a nazywamyfunkcjonał

dF(f2, f1) := F(f2)−F(f1)− 〈f2 − f1,∇F(f1)〉, gdzie f1, f2 ∈ H. (5.23)

Odległość Bregman’a możemy traktować jako uogólnienie normy w L2. Niechmianowicie F(·) = ||·||2L2 oraz u, v ∈ L2. Wtedy

44

Page 44: praca Jakuba Gierasimczyka z machine learning'u

dF(u, v) = ||u||2−||v||2−〈u− v,∇v||v||2〉= ||u||2−||v||2−2〈u− v, v〉= ||u||2−||v||2−2(〈u, v〉 − 〈v, v〉)= ||u||2−2〈u, v〉+ ||v||2

= ||u− v||2.

(5.24)

Będziemy korzystać z niektórych własności odległości Bregman’a:

Twierdzenie 18 (Własności odległości Bregman’a [5])

• ∀f1,f2∈H dF(f2, f1) ≥ 0

• Jeżeli f minimalizuje F , to

dF(f2, f1) = F(f2)−F(f1) (5.25)

• Jeżeli F = A+B, gdzie A,B - wypukłe i różniczkowalne, to

dF(f2, f1) = dA(f2, f1) + dB(f2, f1). (5.26)

Wprowadźmy jeszcze oznaczenia: N(f) = ||f ||2K , TS(f) = IS(f) + λN(f).Pokażemy teraz prawdziwość drugiego założenia z Twierdzenia 15.

Twierdzenie 19 Przy założeniach Twierdzenia 15 zachodzi

||fS − fSi,z ||2K≤L

λn||fS − fSi,z ||∞. (5.27)

Dowód. Dowód przeprowadzimy w dwóch krokach. Po pierwsze pokażemy,że

2||fS − fSi,z ||2K= dN(fSi,z , fS) + dN(fS, fSi,z) (5.28)

Rzeczywiście, ponieważ ∇N(f) = 2f , mamy:

dN(fSi,z , fS) = ||fSi,z ||2K−||fS||2K−〈fSi,z − fS,∇||fS||2K〉K= ||fSi,z − fS||2K ,

(5.29)

oraz

45

Page 45: praca Jakuba Gierasimczyka z machine learning'u

dN(fS, fSi,z) = ||fSi,z − fS||2K , (5.30)

zatem otrzymujemy równość (5.28). Drugi krok, to pokazanie, że

dN(fSi,z , fS) + dN(fS, fSi,z) ≤2L||fS − fSi,z ||∞

λn. (5.31)

Zachodzi

λ(dN(fSi,z , fS) + dN(fS, fSi,z))(1)≤ dTS(fSi,z , fS) + dTSi,z (fS, fSi,z)(2)= TS(fSi,z)− TS(fS) + TSi,z(fλS )− TSi,z(fSi,z)(3)= IS(fSi,z)− IS(fS) + ISi,z(fS)− ISi,z(fSi,z)(4)=1n(V (fSi,z , zi)− V (fS, zi) + V (fS, z)− V (fSi,z , z))

(L)≤ 2L||fS − fS

i,z ||∞n

.

(5.32)

Nierówność (1) wynika z faktu, że TS = IS + λN , gdzie IS ≥ 0. Aby pokazaćrówność (2), korzystamy z drugiej własności odległości Bregmana (bo fSoraz fSi,z minimalizują odpowiednio TS, TSi,z). Równość (3) wynika z faktu,że regularyzator N zależy tylko od funckji f , więc w czynnikach TS(fSi,z) iTSi,z(fSi,z) oraz TS(fS) i TSi,z(fS) regularyzatory skracają się. Równość (4)jest konsekwencją tego, że pary IS(fSi,z) i ISi,z(fSi,z) oraz IS(fS) i ISi,z(fS)różnią się tylko w pojedyńczych punktach.

Pokazaliśmy, że algorytm jest βn-stabilny ze stałą βn =L2C2Kλn

. Aby uzy-skać zdolność do uogólniania musimy jeszcze dodać założenie o ograniczeniufunkcji straty V , czyli

∀z∈Z V (fS, z) ≤M <∞. (5.33)

Załóżmy, że

∃C0∈R∀z∈Z V (0, z) ≤ C0 <∞ (5.34)

Wtedy

46

Page 46: praca Jakuba Gierasimczyka z machine learning'u

λ||fS||2K(1)≤ TS(fS)

(2)≤ TS(0) =

1n

n∑i=1

V (0, yi) ≤ C0. (5.35)

Nierówność (1) wynika z faktu, że TS = IS + λN , gdzie IS ≥ 0. Ponieważ fSminimalizuje TS, to mamy nierówność (2) .

Stąd mamy, że

||fS||2K≤C0λ, (5.36)

skąd

||fS||∞(5.21)≤ CK ||fS||K≤ CK

√C0λ. (5.37)

Z nierówności trójkąta mamy

∀(x,y)∈X×Y |V (fS(x), y) ≤ |V (fS(x), y)− V (0, y)|+|V (0, y)| (5.38)

Korzystając z założenia o tym, że funkcja straty V jest lipschitzowska zestałą L dostajemy

|V (fS(x), y)− V (0, y)|≤ L||fS||∞(5.37)≤ CKL

√C0λ

(5.39)

Ostatecznie

|V (fS(x), y) ≤ |V (fS(x), y)− V (0, y)|+|V (0, y)|≤M, (5.40)

gdzie M = CKL

√C0λ+ C0, co wynika z nierówności (5.34) i (5.39).

Możemy teraz oszacować błąd D(fS). Korzystając z (5.13), z prawdopodo-bieństwem 1− δ, mamy

D(fS) ≤L2C2Kλn+

2L2C2Kλ+ C0 + CKL

√C0λ

√2 ln(2/σ)n

. (5.41)

47

Page 47: praca Jakuba Gierasimczyka z machine learning'u

Rozdział 6

Podsumowanie

W pracy poruszone zostało zagadnienie regresji w uczeniu maszynowym. Wy-korzystaliśmy algorytm spadku gradientu (Batch Gradient Descent (BGD)aby w oparciu o zbiór uczący S znaleźć funkcję fS najlepiej aproksymującąprawdziwą zależność f : X → Y . Algorytm działał w przestrzeni Hilbertaz jądrem reprodukującym HK . Korzystając z Twierdzenia o reprezentacjiprzedstawiliśmy wygodną postać funkcji fS, pozwalającej na podanie równo-ważnej postaci algorytmu tak, aby można było go zaimplementować.

Przedstawiona została regularyzacja Tikhonova - jeden ze sposobów za-pobiegania zjawisku przetrenowania, które to zjawisko jest jednym z najpo-ważniejszych problemów związanych z uczeniem maszynowym.

W pracy używaliśmy jądra Gaussa. W podrozdziale 3.2.1 pokazaliśmyna przykładzie jak wyglądają funkcje fS generowane przez algorytm BGD.Przedstawiony został wpływ parametru jądra na kształt funkcji fS.Z kolei w 3.2.2 pokazaliśmy jak używając zbioru walidującego można wybraćparametr regularyzacji λ > 0.

Naturalna kontynuacja zagadnień poruszanych w pracy to przejście doproblemu klasyfikacji i rozpoznawania wzorców w uczeniu maszynowym. Dru-gim kierunkiem może być temat tzw. uczenia online. W tym przypadku wkażdej iteracji algorytmu używamy tylko jednej obserwacji z ∈ Z (zamiastn obserwacji jak w przypadku BGD). Mówimy wtedy o Online Gradien De-scent. Tę metodę można wykorzystać np. do aktualizacji funkcji fS wraz znowymi, napływającymi danymi (uczenie w czasie rzeczywistym). Wreszciemożna więcej miejsca poświęcić na krok algorytmu γ. W pracy miał on stałąwartość, ale można go aktualizować w każdej iteracji.

48

Page 48: praca Jakuba Gierasimczyka z machine learning'u

Dodatek A

Kody w R

# ----------------------------------------------------- #

# ------------- Algortym spadku gradientu ------------- #

# ----------------------------------------------------- #

# ----------------------------------------------------- #

# --------------- "Prawdziwa" funkcja f --------------- #

f_true <- function(x) {20 + -14*x + x^2 + 50*cos(x)

}

# ----------------------------------------------------- #

# ---------------- Dane początkowe -------------------- #

# "_nn" - oznaczenie dla danych nieznormalizowanych

domain_nn <- seq(-8, 8, 0.001)

# Wielkość zbioru uczącego i testowegolearn_set <- 150

Page 49: praca Jakuba Gierasimczyka z machine learning'u

cv_set <- 50

n <- learn_set + cv_set

# ----------------------------------------------------- #

# --------------- Generowanie danych ------------------ #

# Jeżeli generujemy dane# x_nn <- sample(domain_nn, n)# y_nn_without_noise <- f_true(x_nn)# y_nn <- f_true(x_nn) + runif(n, -40, 40)

# Jeżeli dane wczytujemyx_nn <- x[, 1]y_nn_without_noise <- f_true(x_nn)y_nn <- y[, 1]

# ----------------------------------------------------- #

# --------------- Normalizacja danych ----------------- #

normalization <- function(x) {mean <- mean(x)std <- sqrt(var(x))x_normalized <- (x - mean) / stdoutput <- list(x_normalized, mean, std)

return(output)}

denormalization <- function(x, list) {mean <- list[[2]]std <- list[[3]]x_denormalized <- x * std + mean

return(x_denormalized)}

Page 50: praca Jakuba Gierasimczyka z machine learning'u

x_normalized <- normalization(x_nn)x <- x_normalized[[1]]

y_normalized_without_noise <- normalization(y_nn_without_noise)y_without_noise <- y_normalized_without_noise[[1]]

y_normalized <- normalization(y_nn)y <- y_normalized[[1]]

domain_normalized <- normalization(domain_nn)domain <- domain_normalized[[1]]

# ----------------------------------------------------- #

# ------------------ Zbiór uczący --------------------- #

x_learn_nn <- x_nn[1:learn_set]y_learn_nn <- y_nn[1:learn_set]

x_learn <- x[1:learn_set]y_learn_without_noise <- y_without_noise[1:learn_set]y_learn <- y[1:learn_set]

# ----------------------------------------------------- #

# ----------------- Zbiór testowy --------------------- #

x_cv_nn <- x_nn[(learn_set + 1):length(x)]y_cv_nn <- y_nn[(learn_set + 1):length(x)]

x_cv <- x[(learn_set + 1):length(x)]y_cv_without_noise <- y_without_noise[(learn_set + 1):length(x)]y_cv <- y[(learn_set + 1):length(x)]

# ----------------------------------------------------- #

# --------------- Wykresy początkowe ------------------ #

Page 51: praca Jakuba Gierasimczyka z machine learning'u

plot_data_nn_without_noise <- as.data.frame(cbind(x_nn, y_nn_without_noise))plot_data_nn <- as.data.frame(cbind(x_nn, y_nn))plot_data_learn_nn <- as.data.frame(cbind(x_learn_nn, y_learn_nn))plot_data_cv_nn <- as.data.frame(cbind(x_cv_nn, y_cv_nn))plot_data <- as.data.frame(cbind(x, y))plot_data_learn <- as.data.frame(cbind(x_learn, y_learn))plot_data_cv <- as.data.frame((cbind(x_cv, y_cv)))

plot_background_nn <- ggplot(data = plot_data_nn_without_noise,aes(x = x_nn, y = y_nn_without_noise))

plot_f_true <- geom_line(data = plot_data_nn_without_noise,aes(x = x_nn, y = y_nn_without_noise),lwd = 1.4)

plot_points_nn <- geom_point(data = plot_data_nn,aes(x = x_nn, y = y_nn))

plot_background_nn + plot_f_true + plot_points_nn +xlab("x") + ylab("f(x)")

plot_background <- ggplot(data = plot_data,aes(x = x, y = y))

plot_points_learn <- geom_point(data = plot_data_learn,aes(x = x_learn, y = y_learn))

plot_cv <- geom_point(data = plot_data_cv,aes(x = x_cv, y = y_cv),col = "red")

plot_background + plot_points_learn + plot_cv +xlab("x") + ylab ("y")

# ----------------------------------------------------- #

# ------------ Przygotowanie algorytmu ---------------- #

# ----------------------------------------------------- #

# ------------------ Jądro Gaussa --------------------- #

sigma <- .2

Page 52: praca Jakuba Gierasimczyka z machine learning'u

k <- function(x1, x2, sigma) {exp((-(x1 - x2) ^ 2) / sigma ^ 2)

}

# ----------------------------------------------------- #

# ------------------ Macierz jądra -------------------- #

kernel_matrix <- matrix(0, learn_set, learn_set)

for (i in 1:learn_set) {for (j in 1:learn_set) {

kernel_matrix[i, j] <- k(x_learn[i], x_learn[j], sigma)}

}

# ----------------------------------------------------- #

# --------- Wartości na zbiorze walidującym ----------- #

kernel_cv <- matrix(0, learn_set, cv_set)

for (i in 1:learn_set) {for (j in 1:cv_set) {

kernel_cv [i, j] <- k(x_learn[i], x_cv[j], sigma)}

}

# ----------------------------------------------------- #

# ----------- Twierdzenie o reprezentacji ------------- #

f <- function(x, data, parameters) {sum(parameters * k(x, data, sigma))

}

Page 53: praca Jakuba Gierasimczyka z machine learning'u

# ----------------------------------------------------- #

# ------------- Regularyzacja Tikhonova --------------- #

empirical_loss <- function(parameters) {temp1 <- apply(parameters * kernel_matrix, 2, sum)loss <-

1 / learn_set * sum((temp1 - y_learn) ^ 2)

regularization <-lambda * (t(parameters) %*% kernel_matrix %*% parameters)

return(loss + regularization)}

# ----------------------------------------------------- #

# ------------- Błąd na zbiorze testowym -------------- #

empirical_loss_cv <- function(parameters){temp1 <- apply(parameters * kernel_cv, 2, sum)loss <-

1 / cv_set * sum((temp1 - y_cv) ^ 2)

return(loss)}

# ----------------------------------------------------- #

# --------------------- Algorytm ---------------------- #

t1 <- Sys.time()

N <- 5000 # maksymalna ilość iteracjiE <- .01 # osiągnięcie tego błędu zatrzymuje algorytm

gamma <- function(x) {2 / (1 + lambda)

Page 54: praca Jakuba Gierasimczyka z machine learning'u

}

lambda_set <- 10 # liczba lambd, które będziemy testować

lambda <- .0 # pierwsza wartość lambdaerror <- c() # błąd empiryczny z regularyzacjąerror_cv <- c() # błąd na zbiorze uczącymC <- rep(0, learn_set) # macierz współczynników c_new dla

# każdej lamby

for (l in 1:lambda_set) {c_old <- rep(0, learn_set)c_new <- rep(0, learn_set)

t <- 1

while (empirical_loss(c_new) > E && t <= N) {temp1 <- c_old * (1 - lambda * gamma(t))temp2 <- apply(c_old * kernel_matrix, 2, sum)temp3 <- gamma(t) / learn_set * (temp2 - y_learn)

c_new <- temp1 - temp3c_old <- c_new

t <- t + 1}

C <- cbind(C, c_new)columnName <- paste("lambda = ", lambda)colnames(C)[l + 1] <- columnName

error[l] <- empirical_loss(c_new)error_cv[l] <- empirical_loss_cv(c_new)

lambda <- 2 ^ (-2 * (10 - l))

if(l == lambda_set){C <- C[, -1]

}}

Page 55: praca Jakuba Gierasimczyka z machine learning'u

t2 <- Sys.time()t2 - t1

# ----------------------------------------------------- #

# --------- wykres błędów na zbiorze uczącym ---------- #

plot_error <- as.data.frame(cbind(1:8, error_cv[1:8]))plot_background_error <- ggplot(data = plot_error,

aes(x = V1, y = V2))plot_background_error + geom_point() +

xlab("lambda (indeks)") + ylab("błąd")

# ----------------------------------------------------- #

# ---------- wykres f_S dla wybranej lambdy ----------- #

which(error_cv == min(error_cv)) # dla tej lamby błąd jest najmniejszy

values <- c()for (i in 1:length(domain)) {

values[i] <- f(domain[i], x_learn, C[, 6])}

# "_alg" - wartości po działaniu algorytmuplot_domain_alg <- denormalization(domain, domain_normalized)plot_values_alg <- denormalization(values, y_normalized)plot_data_alg <- as.data.frame(cbind(plot_domain_alg, plot_values_alg))

plot_background_alg <- ggplot(data = plot_data_alg,aes(x = plot_domain_alg, y = plot_values_alg))

plot_f_S <- geom_line(lwd = 1.2, col = "blue")plot_points_learn_nn <- geom_point(data = plot_data_learn_nn,

aes(x = x_learn_nn, y = y_learn_nn))plot_points_cv_nn <- geom_point(data = plot_data_cv_nn,

aes(x = x_cv_nn, y = y_cv_nn), col = "red")

Page 56: praca Jakuba Gierasimczyka z machine learning'u

plot_background_alg + plot_f_S + plot_f_true +plot_points_learn_nn + plot_points_cv_nn +xlab("x") + ylab(expression(f[S]))

Page 57: praca Jakuba Gierasimczyka z machine learning'u

Kod z podrozdziału 3.2.1 jest zasadniczo taki sam jak kod przedstawionypowyżej (wykorzystany w sekcji 3.2.2). Jednak ponieważ chcemy wygene-rować inne wykresy oraz nie stosujemy normalizacji ani walidacji, to abyłatwiej było kod czytać, poniżej przedstawiono skróconą wersją wkorzystanąw 3.2.1. Komentarze w kodzie pominięto - wszystkie znajdują się w kodziepowyższym.

# ----------------------------------------------------- #

# ----------------- Dane początkowe ------------------- #

# ------------------- Przykład 1 ---------------------- #

domain <- seq(-15, 15, .01)

x <- c(-10, -5, 1, 5)y <- c(.2, -2, .5, 1.5)

learn_set <- 4

learn_set_data <- as.data.frame(cbind(x, y))

# ----------------------------------------------------- #

# ------------------ Jądro Gaussa --------------------- #

sigma <- 3

k <- function(x1, x2, sigma) {exp((-(x1 - x2) ^ 2) / sigma ^ 2)

}

kernel_matrix <- matrix(0, learn_set, learn_set)

for (i in 1:learn_set) {for (j in 1:learn_set) {

kernel_matrix[i, j] <- k(x[i], x[j], sigma)}

}

Page 58: praca Jakuba Gierasimczyka z machine learning'u

# ----------------------------------------------------- #

# ----------- Twierdzenie o reprezentacji ------------- #

f <- function(x, data, parameters) {sum(parameters * k(x, data, sigma))

}

# ----------------------------------------------------- #

# ------------- Regularyzacja Tikhonova --------------- #

empirical_loss <- function(parameters) {temp1 <- apply(parameters * kernel_matrix, 2, sum)loss <-

1 / learn_set * sum((temp1 - y) ^ 2)

regularization <-lambda * (t(parameters) %*% kernel_matrix %*% parameters)

return(loss + regularization)}

# ----------------------------------------------------- #

# ---------------------- Norma ------------------------ #

norm <- function(parameters){regularization <- (t(parameters) %*% kernel_matrix %*% parameters)

return(sqrt(regularization))}

# ----------------------------------------------------- #

# --------------------- Algorytm ---------------------- #

Page 59: praca Jakuba Gierasimczyka z machine learning'u

N <- 10 # maksymalna ilość iteracjiE <- .001 # granica błędu

c_old <- rep(0, learn_set)c_new <- rep(0, learn_set)

C <- rep(0, learn_set)

lambda <- .0

gamma <- function(x) {2 / (1 + lambda)

}

t <- 1

while (empirical_loss(c_new) > E && t <= N) {temp1 <- c_old * (1 - lambda * gamma(t))temp2 <- apply(c_old * kernel_matrix, 2, sum)temp3 <- gamma(t) / learn_set * (temp2 - y)

c_new <- temp1 - temp3

c_old <- c_new

t <- t + 1}

# ----------------------------------------------------- #

# --------------------- Wykresy ----------------------- #

values <- c()for (i in 1:length(domain)) {

values[i] <- f(domain[i], x, c_new)}

Page 60: praca Jakuba Gierasimczyka z machine learning'u

kernel_values_x1 <- c()for (i in 1:length(domain)) {

kernel_values_x1[i] <- f(domain[i], x[1], c_new[1])}

kernel_values_x2 <- c()for (i in 1:length(domain)) {

kernel_values_x2[i] <- f(domain[i], x[2], c_new[2])}

kernel_values_x3 <- c()for (i in 1:length(domain)) {

kernel_values_x3[i] <- f(domain[i], x[3], c_new[3])}

kernel_values_x4 <- c()for (i in 1:length(domain)) {

kernel_values_x4[i] <- f(domain[i], x[4], c_new[4])}

data_plot <- as.data.frame(cbind(domain, values))data_plot_x1 <- as.data.frame(cbind(domain, kernel_values_x1))data_plot_x2 <- as.data.frame(cbind(domain, kernel_values_x2))data_plot_x3 <- as.data.frame(cbind(domain, kernel_values_x3))data_plot_x4 <- as.data.frame(cbind(domain, kernel_values_x4))

plot_background <- ggplot(data = data_plot,aes(x = domain, y = values))

f_S <- geom_line(data = data_plot,aes(x = domain, y = values),col = "red")

learn_set_points <- geom_point(data = learn_set_data,aes(x = x, y = y))

plot_background + f_S + learn_set_points +ylim(-2.5, 2.5) + xlab("x") + ylab("f(x)")

kernel_x1 <- geom_line(data = data_plot_x1,aes(x = domain, y = kernel_values_x1))

kernel_x2 <- geom_line(data = data_plot_x2,

Page 61: praca Jakuba Gierasimczyka z machine learning'u

aes(x = domain, y = kernel_values_x2))kernel_x3 <- geom_line(data = data_plot_x3,

aes(x = domain, y = kernel_values_x3))kernel_x4 <- geom_line(data = data_plot_x4,

aes(x = domain, y = kernel_values_x4))kernels <- plot_background + learn_set_points +

kernel_x1 + kernel_x2 +kernel_x3 + kernel_x4

kernels + ylim(-2.5, 2.5) + xlab("x") + ylab(expression(K[x]))

kernels + f_S + ylim(-2.5, 2.5) + xlab("x") + ylab(expression(f[S]))

f_S_norm <- norm(c_new) # Norma

Page 62: praca Jakuba Gierasimczyka z machine learning'u

# ----------------------------------------------------- #

# ----------------- Kod - Rozdział 2 ------------------ #

# ----------------------------------------------------- #

# ----------------------------------------------------- #

# ------------- Wykres formy kwadratowej -------------- #

A <- matrix(c(3, 2, 2, 6), 2, 2)b <- c(2, -8)c <- 0

f <- function(x, y){3/2 * x^2 + 2*x*y + 3*y^2 - 2*x + 8*y

}

x <- seq(-4, 6, .1)y <- seq(-6, 4, .1)z <- outer(x, y, f)

persp3D(x, y, z, phi = 20, theta = 230,xlab = "x1", ylab = "x2", zlab = "f(x)",ticktype="detailed", axes = T, faces = T,shade = .1, bty = "g", colkey = F)

# ----------------------------------------------------- #

# ----------------- Wykres poziomic ------------------- #

grad_f <- function(x, y){c(3*x + 2*y - 2, 2*x + 6*y +8)

}

gamma <- 0.32

Page 63: praca Jakuba Gierasimczyka z machine learning'u

N <- 8 # ilosc iteracjiw <- matrix(NA, N + 1, 2) # kolejne punktyw[1, ] <- c(-2, 1) # punkt początkowy

for(i in 1: N){w[i + 1, ] <- w[i, ] - gamma * grad_f(w[i, 1], w[i, 2])

}

a <- rep(0, length(w[, 1]))b <- 1:(N+1) # etykiety kolejnych punktóww <- as.data.frame(cbind(w, a))

x1 <- rep(x, length(y))x2 <- rep(y, each = length(y))z1 <- as.vector(z)

data <- as.data.frame(cbind(x1, x2, z1))

plot_background <- ggplot(data, aes(x1, x2, z = z1))plot_contour <- geom_contour(bins = 30,

aes(colour = ..level..),size = .7)

plot_minimum <- geom_point(x = 2, y = -2,col = "black",pch = 15,lwd = 2.5)

plot_points <- geom_point(data = w,aes(V1, V2, z = a),col = "red")

plot_text <- geom_text(data = w,aes(V1, V2, z = a, label = b),col = "black",hjust = 2)

plot_background + plot_contour + plot_minimum + plot_points + plot_text

Page 64: praca Jakuba Gierasimczyka z machine learning'u

Spis rysunków

2.1 Forma kwadratowa f(x) =12xTAx− bTx+ c. . . . . . . . . . . . 14

2.2 Wykres poziomic dla formy kwadratowej f z kolejnymi wartościamixt. Krok γ = 0,2. . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3 Wykres poziomic dla formy kwadratowej f z kolejnymi wartościamixt. Krok γ = 0,02. . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.4 Wykres poziomic dla formy kwadratowej f z kolejnymi wartościamixt. Krok γ = 0,32. . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.1 W przestrzeni L2 funkcje f i g traktowane są jako ten sam obiekt. . 203.2 Jądra gaussowskie skoncentrowane w punktach x1, ..., x4. . . . . . 253.3 Kombinacja liniowa jąder gaussowskich z zaznaczonymi jądrami

składowymi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4 Wpływ parametru σ na kształt kombinacji liniowej jąder. . . . . . 263.5 Wpływ regularyzacji na kształt kombinacji liniowej jąder. . . . . . 273.6 Funkcja f(x) = 50 cos(x)+x2− 14x+20 z wygenerowanymi danymi. 283.7 Znormalizowane dane z podziałem na zbiory: uczący i testowy. . . 293.8 Błąd na zbiorze walidującym. . . . . . . . . . . . . . . . . . . . 293.9 Dopasowana funkcja fS z optymalnym parametrem λ = 2−8. . . . 303.10 Dopasowana funkcja fS bez regularyzacji (λ = 0). . . . . . . . . . 303.11 Dopasowana funkcja fS z parametrem λ = 2−2. . . . . . . . . . . 31

65

Page 65: praca Jakuba Gierasimczyka z machine learning'u

Bibliografia

[1] M. Beśka Wykład monograficzny, Dodatek

[2] O. Bousquet, Elisseff Stability and Generalization, Journal of MachineLearning Research 2 (2002) 499-526. Na dzień 28.10.2016 r. dostępnyna stronie: http://www.jmlr.org/papers/volume2/bousquet02a/bousquet02a.pdf

[3] F. Cuker, S. Smale, On the mathematical foundation of learning. Na dzień28.10.2016 r. dostępny na stronie autora: http://ttic.uchicago.edu/~smale/papers/math_foundation_of_learning.pdf

[4] Chih-Wei Hsu, Chih-Chung Chang, Chih-Jen Lin A Practical Gu-ide to Support Vector Classication. Na dzień 28.10.2016 r. dostępnyna stronie autora: https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

[5] T. Poggio, L.Rosasco i inni 9.520: Statistical Learning Theory and Ap-plications, Fall 2014. Na dzień 28.10.2016 r dostępne na stronie autorów:http://www.mit.edu/~9.520/fall14/

[6] D. Sejdonovic, A. Gretton What is an RKHS?. Na dzień 28.10.2016 r.dostępny na stronie autora: http://www.gatsby.ucl.ac.uk/~gretton/coursefiles/RKHS_Notes1.pdf

[7] J. R. Shewchuk An Introduction to the Conjugate Gradient Method Wi-thout the Agonizing Pain. Na dzień 28.10.2016 r. dostępny na stronie Car-negie Mellon University: http://www.cs.cmu.edu/~./quake-papers/painless-conjugate-gradient.pdf

[8] S. Smale, Y. Yao Online Learing Algorithms, Found. Comput. Math.145–170 (2006), Springer

66