Techniki Optymalizacji: Stochastyczny spadek wzdłuż gradientu I Wojciech Kotłowski Instytut Informatyki Politechniki Poznańskiej email: imię.nazwisko@cs.put.poznan.pl pok. 2 (CW) tel. (61)665-2936 konsultacje: piątek 15:10-16:40 Slajdy dostępne pod adresem: http://www.cs.put.poznan.pl/wkotlowski/to/ 27.11.2018 1 / 37
Spis treści 1 Metoda stochastycznego spadku wzdłuż gradientu 2 Stochastyczny gradient dla regresji liniowej 3 Przykład zastosowania SGD 2 / 37
Spis treści 1 Metoda stochastycznego spadku wzdłuż gradientu 2 Stochastyczny gradient dla regresji liniowej 3 Przykład zastosowania SGD 3 / 37
Metoda spadku wzdłuż gradientu (Cauchy ego) Minimalizacja funkcji L(w): 1 Zaczynamy od wybranego rozwiązania startowego, np. w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności Wyznaczamy gradient w punkcie w k 1, L (w k 1 ). Robimy krok wzdłuż negatywnego gradientu: w k = w k 1 α k L (w k 1 ), gdzie α k jest długością kroku ustaloną np. przez przeszukiwanie liniowe. 4 / 37
Specyficzna postać funkcji celu W większości problemów uczenia maszynowego funkcja celu ma następującą postać: n L(w) = l i (w) i=1 5 / 37
Specyficzna postać funkcji celu W większości problemów uczenia maszynowego funkcja celu ma następującą postać: n L(w) = l i (w) i=1 L jest sumarycznym błędem na zbiorze uczącym. 5 / 37
Specyficzna postać funkcji celu W większości problemów uczenia maszynowego funkcja celu ma następującą postać: n L(w) = l i (w) i=1 L jest sumarycznym błędem na zbiorze uczącym. l i to błędy na poszczególnych obserwacjach. 5 / 37
Specyficzna postać funkcji celu przykłady 6 / 37
Specyficzna postać funkcji celu przykłady Regresja liniowa metoda najmniejszych kwadratów n L(w) = (y i w x i ) 2 }{{} i=1 l i (w) 6 / 37
Specyficzna postać funkcji celu przykłady Regresja liniowa metoda najmniejszych kwadratów n L(w) = (y i w x i ) 2 }{{} i=1 l i (w) Regresja liniowa min. wartości bezwzględnych błędów n L(w) = y i w x i }{{} i=1 l i (w) 6 / 37
Specyficzna postać funkcji celu przykłady Regresja liniowa metoda najmniejszych kwadratów n L(w) = (y i w x i ) 2 }{{} i=1 l i (w) Regresja liniowa min. wartości bezwzględnych błędów n L(w) = y i w x i }{{} i=1 l i (w) Klasyfikacja liniowa regresja logistyczna: n ( ) L(w) = log 1 + exp( y i w x i ) i=1 } {{ } l i (w) 6 / 37
Specyficzna postać funkcji celu przykłady Regresja liniowa metoda najmniejszych kwadratów n L(w) = (y i w x i ) 2 }{{} i=1 l i (w) Regresja liniowa min. wartości bezwzględnych błędów n L(w) = y i w x i }{{} i=1 l i (w) Klasyfikacja liniowa regresja logistyczna: n ( ) L(w) = log 1 + exp( y i w x i ) i=1 } {{ } l i (w) Klasyfikacja liniowa funkcja zawiasowa: n ) L(w) = (1 y i w x i + i=1 }{{} l i (w) 6 / 37
Metoda stochastycznego spadku wzdłuż gradientu Idea Zamiast obliczać gradient na całej funkcji L, w danym kroku oblicz gradient tylko na pojedynczym elemencie l i. 7 / 37
Metoda stochastycznego spadku wzdłuż gradientu Idea Zamiast obliczać gradient na całej funkcji L, w danym kroku oblicz gradient tylko na pojedynczym elemencie l i. Skąd nazwa stochastyczny? Ponieważ oryginalnie wybiera się element l i losowo... 7 / 37
Metoda stochastycznego spadku wzdłuż gradientu Idea Zamiast obliczać gradient na całej funkcji L, w danym kroku oblicz gradient tylko na pojedynczym elemencie l i. Skąd nazwa stochastyczny? Ponieważ oryginalnie wybiera się element l i losowo...... ale w praktyce zwykle przechodzi się po całym zbiorze danych w losowej kolejności. 7 / 37
Metoda stochastycznego spadku wzdłuż gradientu Minimalizacja funkcji L(w): 8 / 37
Metoda stochastycznego spadku wzdłuż gradientu Minimalizacja funkcji L(w): 1 Zaczynamy od wybranego rozwiązania startowego, np. w 0 = 0. 8 / 37
Metoda stochastycznego spadku wzdłuż gradientu Minimalizacja funkcji L(w): 1 Zaczynamy od wybranego rozwiązania startowego, np. w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności 8 / 37
Metoda stochastycznego spadku wzdłuż gradientu Minimalizacja funkcji L(w): 1 Zaczynamy od wybranego rozwiązania startowego, np. w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności Wylosuj i {1,..., n}. 8 / 37
Metoda stochastycznego spadku wzdłuż gradientu Minimalizacja funkcji L(w): 1 Zaczynamy od wybranego rozwiązania startowego, np. w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności Wylosuj i {1,..., n}. Wyznaczamy gradient funkcji l i w punkcie w k 1, li (w k 1 ). 8 / 37
Metoda stochastycznego spadku wzdłuż gradientu Minimalizacja funkcji L(w): 1 Zaczynamy od wybranego rozwiązania startowego, np. w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności Wylosuj i {1,..., n}. Wyznaczamy gradient funkcji l i w punkcie w k 1, li (w k 1 ). Robimy krok wzdłuż negatywnego gradientu: gdzie α k jest długością kroku. w k = w k 1 α k li (w k 1 ), 8 / 37
Zalety metody stochastycznego spadku wzdłuż gradientu 9 / 37
Zalety metody stochastycznego spadku wzdłuż gradientu Szybkość: obliczenie gradientu wymaga wzięcia tylko jednej obserwacji. 9 / 37
Zalety metody stochastycznego spadku wzdłuż gradientu Szybkość: obliczenie gradientu wymaga wzięcia tylko jednej obserwacji. Skalowalność: cały zbiór danych nie musi nawet znajdować się w pamięci operacyjnej. 9 / 37
Zalety metody stochastycznego spadku wzdłuż gradientu Szybkość: obliczenie gradientu wymaga wzięcia tylko jednej obserwacji. Skalowalność: cały zbiór danych nie musi nawet znajdować się w pamięci operacyjnej. Prostota: gradient funkcji l i daje bardzo prosty wzór na modyfikację wag. 9 / 37
Zalety metody stochastycznego spadku wzdłuż gradientu Szybkość: obliczenie gradientu wymaga wzięcia tylko jednej obserwacji. Skalowalność: cały zbiór danych nie musi nawet znajdować się w pamięci operacyjnej. Prostota: gradient funkcji l i daje bardzo prosty wzór na modyfikację wag. Stochastyczny gradient jest obecnie najbardziej popularną metodą stosowaną w uczeniu maszynowym! (stochastic gradient descent SGD). 9 / 37
Wady metody stochastycznego spadku wzdłuż gradientu 10 / 37
Wady metody stochastycznego spadku wzdłuż gradientu Wolna zbieżność: czasem gradient stochastyczny zbiega wolno i wymaga wielu iteracji po zbiorze uczącym. 10 / 37
Wady metody stochastycznego spadku wzdłuż gradientu Wolna zbieżność: czasem gradient stochastyczny zbiega wolno i wymaga wielu iteracji po zbiorze uczącym. Problem z ustaleniem długości kroku α k : wyznaczenie α k przez przeszukiwanie liniowe nie przynosi dobrych rezultatów, ponieważ optymalizujemy oryginalnej funkcji L tylko jej jeden składnik l i. 10 / 37
Wady metody stochastycznego spadku wzdłuż gradientu Wolna zbieżność: czasem gradient stochastyczny zbiega wolno i wymaga wielu iteracji po zbiorze uczącym. Problem z ustaleniem długości kroku α k : wyznaczenie α k przez przeszukiwanie liniowe nie przynosi dobrych rezultatów, ponieważ optymalizujemy oryginalnej funkcji L tylko jej jeden składnik l i. Zalety znacznie przewyższają wady! 10 / 37
Stochastyczny gradient w praktyce 11 / 37
Stochastyczny gradient w praktyce Zwykle nie losuje się obserwacji, ale przechodzi się po zbiorze danych w losowej kolejności. 11 / 37
Stochastyczny gradient w praktyce Zwykle nie losuje się obserwacji, ale przechodzi się po zbiorze danych w losowej kolejności. Zbieżność wymaga często przejścia parokrotnie po całym zbiorze danych (jednokrotne przejście nazywa się epoką). 11 / 37
Stochastyczny gradient w praktyce Zwykle nie losuje się obserwacji, ale przechodzi się po zbiorze danych w losowej kolejności. Zbieżność wymaga często przejścia parokrotnie po całym zbiorze danych (jednokrotne przejście nazywa się epoką). Metody ustalania współczynników długości kroku α k : 11 / 37
Stochastyczny gradient w praktyce Zwykle nie losuje się obserwacji, ale przechodzi się po zbiorze danych w losowej kolejności. Zbieżność wymaga często przejścia parokrotnie po całym zbiorze danych (jednokrotne przejście nazywa się epoką). Metody ustalania współczynników długości kroku α k : Ustalamy stałą wartość α k = α 11 / 37
Stochastyczny gradient w praktyce Zwykle nie losuje się obserwacji, ale przechodzi się po zbiorze danych w losowej kolejności. Zbieżność wymaga często przejścia parokrotnie po całym zbiorze danych (jednokrotne przejście nazywa się epoką). Metody ustalania współczynników długości kroku α k : Ustalamy stałą wartość α k = α = Zwykle tak się robi w praktyce, działa dobrze ale wymaga ustalenia α metodą prób i błędów 11 / 37
Stochastyczny gradient w praktyce Zwykle nie losuje się obserwacji, ale przechodzi się po zbiorze danych w losowej kolejności. Zbieżność wymaga często przejścia parokrotnie po całym zbiorze danych (jednokrotne przejście nazywa się epoką). Metody ustalania współczynników długości kroku α k : Ustalamy stałą wartość α k = α = Zwykle tak się robi w praktyce, działa dobrze ale wymaga ustalenia α metodą prób i błędów Bierzemy wartość kroku malejącą jak 1 k : α k = α/ k 11 / 37
Stochastyczny gradient w praktyce Zwykle nie losuje się obserwacji, ale przechodzi się po zbiorze danych w losowej kolejności. Zbieżność wymaga często przejścia parokrotnie po całym zbiorze danych (jednokrotne przejście nazywa się epoką). Metody ustalania współczynników długości kroku α k : Ustalamy stałą wartość α k = α = Zwykle tak się robi w praktyce, działa dobrze ale wymaga ustalenia α metodą prób i błędów Bierzemy wartość kroku malejącą jak 1 k : α k = α/ k = Zapewniona zbieżność, ale czasem może zbiegać zbyt wolno. 11 / 37
Spis treści 1 Metoda stochastycznego spadku wzdłuż gradientu 2 Stochastyczny gradient dla regresji liniowej 3 Przykład zastosowania SGD 12 / 37
Regresja liniowa metoda najmniejszych kwadratów (LS) 13 / 37
Regresja liniowa metoda najmniejszych kwadratów (LS) Funkcja celu: L(w) = n (y i w x i ) 2 }{{} l i (w) i=1 13 / 37
Regresja liniowa metoda najmniejszych kwadratów (LS) Funkcja celu: L(w) = n (y i w x i ) 2 }{{} l i (w) i=1 Pochodne funkcji l i (w): l i (w) = 2(y i w x i )x ij w j 13 / 37
Regresja liniowa metoda najmniejszych kwadratów (LS) Funkcja celu: L(w) = n (y i w x i ) 2 }{{} l i (w) i=1 Pochodne funkcji l i (w): l i (w) = 2(y i w x i )x ij w j Gradient funkcji l i (w): li (w) = 2(y i w x i )x i 13 / 37
SGD dla regresji liniowej LS 1 Zaczynamy od w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności Wylosuj i {1,..., n}. Wyznaczamy gradient l i w punkcie w k 1, 2(y i w k 1 x i)x i. Robimy krok wzdłuż negatywnego gradientu: w k = w k 1 + 2α k (y i w k 1x i )x i 14 / 37
SGD dla regresji liniowej LS 1 Zaczynamy od w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności Wylosuj i {1,..., n}. Wyznaczamy gradient l i w punkcie w k 1, 2(y i w k 1 x i)x i. Robimy krok wzdłuż negatywnego gradientu: w k = w k 1 + 2α k (y i w k 1x i )x i Krok w kierunku wektora x i, z długością kroku równą 2α k (y i w k 1 x i). 14 / 37
SGD dla regresji liniowej LS 1 Zaczynamy od w 0 = 0. 2 Dla k = 1, 2,... aż do zbieżności Wylosuj i {1,..., n}. Wyznaczamy gradient l i w punkcie w k 1, 2(y i w k 1 x i)x i. Robimy krok wzdłuż negatywnego gradientu: w k = w k 1 + 2α k (y i w k 1x i )x i Krok w kierunku wektora x i, z długością kroku równą 2α k (y i w k 1 x i). Długość kroku proporcjonalna do przeszacowania predykcji. 14 / 37
Spis treści 1 Metoda stochastycznego spadku wzdłuż gradientu 2 Stochastyczny gradient dla regresji liniowej 3 Przykład zastosowania SGD 15 / 37
Przykład: szacowanie czasu pracy programistów X Y Rozmiar programu Oszacowany czas 186 130 699 650 132 99 272 150 291 128 331 302 199 95 1890 945 788 368 1601 961 16 / 37
Przykład: szacowanie czasu pracy programistów X Y Rozmiar programu Oszacowany czas 186 130 699 650 132 99 272 150 291 128 331 302 199 95 1890 945 788 368 1601 961 czas [h] 200 400 600 800 500 1000 1500 rozmiar programu [linie kodu] 16 / 37
Przykład: szacowanie czasu pracy programistów X Y Rozmiar programu Oszacowany czas 186 130 699 650 132 99 272 150 291 128 331 302 199 95 1890 945 788 368 1601 961 czas [h] 200 400 600 800 500 1000 1500 rozmiar programu [linie kodu] w 0 = 45.93, w 1 = 0.5273 16 / 37
Szacowanie Czasu programistów Zaczynamy z rozwiązaniem w = (w 0, w 1 ) = 0. Krok: α k = 0.5/ k. Jednostki zostały zamienione na 1000min i 1000 lini kodu, aby uniknąć dużych liczb. (ujednolicenie skali jest istotne dla zbiezności metody!) 17 / 37
Szacowanie Czasu programistów iteracja 1 y 200 400 600 800 500 1000 1500 x 18 / 37
Szacowanie Czasu programistów iteracja 2 y 200 400 600 800 500 1000 1500 x 19 / 37
Szacowanie Czasu programistów iteracja 3 y 200 400 600 800 500 1000 1500 x 20 / 37
Szacowanie Czasu programistów iteracja 4 y 200 400 600 800 500 1000 1500 x 21 / 37
Szacowanie Czasu programistów iteracja 5 y 200 400 600 800 500 1000 1500 x 22 / 37
Szacowanie Czasu programistów iteracja 10 y 200 400 600 800 500 1000 1500 x 23 / 37
Szacowanie Czasu programistów iteracja 15 y 200 400 600 800 500 1000 1500 x 24 / 37
Szacowanie Czasu programistów iteracja 20 y 200 400 600 800 500 1000 1500 x 25 / 37
Szacowanie Czasu programistów iteracja 25 y 200 400 600 800 500 1000 1500 x 26 / 37
Szacowanie Czasu programistów iteracja 30 y 200 400 600 800 500 1000 1500 x 27 / 37
Szacowanie Czasu programistów iteracja 35 y 200 400 600 800 500 1000 1500 x 28 / 37
Szacowanie Czasu programistów iteracja 40 y 200 400 600 800 500 1000 1500 x 29 / 37
Szacowanie Czasu programistów iteracja 45 y 200 400 600 800 500 1000 1500 x 30 / 37
Szacowanie Czasu programistów iteracja 50 y 200 400 600 800 500 1000 1500 x 31 / 37
Szacowanie Czasu programistów iteracja 60 y 200 400 600 800 500 1000 1500 x 32 / 37
Szacowanie Czasu programistów iteracja 70 y 200 400 600 800 500 1000 1500 x 33 / 37
Szacowanie Czasu programistów iteracja 80 y 200 400 600 800 500 1000 1500 x 34 / 37
Szacowanie Czasu programistów iteracja 90 y 200 400 600 800 500 1000 1500 x 35 / 37
Szacowanie Czasu programistów iteracja 100 y 200 400 600 800 500 1000 1500 x 36 / 37
Koniec na dzisiaj :) 37 / 37