Machine Learning tydzień 1: Funkcja kosztowa, spadek gradientu i Univariate regresja liniowa

zacząłem robić popularny kurs uczenia maszynowego Andrew Ng na Coursera. Pierwszy tydzień obejmuje wiele, przynajmniej dla kogoś, kto nie dotknął wiele rachunku różniczkowego od kilku lat

  • funkcje kosztowe (średnia różnica do kwadratu)
  • spadek gradientu
  • regresja liniowa

te trzy tematy były bardzo ważne. Opowiem szczegółowo o każdym z nich i o tym, jak do siebie pasują, z odrobiną kodu Pythona do zademonstrowania.

Edytuj 4 maja: Opublikowałem kontynuację skupiającą się na tym, jak działa funkcja kosztów, w tym intuicję, jak obliczyć ją ręcznie i dwie różne implementacje Pythona. Mogę zrobić Spadanie gradientowe, a następnie połączyć je w regresję liniową.

Reprezentacja modelu

po pierwsze, celem większości algorytmów uczenia maszynowego jest skonstruowanie modelu: hipotezy, która może być wykorzystana do oszacowania Y na podstawie X. hipoteza lub model mapuje wejścia na wyjścia. Na przykład, powiedzmy, że trenuję model oparty na danych dotyczących mieszkania, które zawierają Rozmiar domu i cenę sprzedaży. Szkoląc model, mogę dać Ci oszacowanie, za ile możesz sprzedać swój dom w oparciu o jego rozmiar. Jest to przykład problemu regresji-biorąc pod uwagę pewne dane wejściowe, chcemy przewidzieć ciągłe dane wyjściowe.

hipoteza jest zwykle przedstawiana jako

hipoteza

wartości theta są parametrami.

kilka szybkich przykładów jak wizualizujemy hipotezę:

daje to h (x) = 1,5 + 0x. 0x oznacza brak nachylenia, a y zawsze będzie stałą 1.5. To wygląda jak:

h (x) = 1.5 + 0x

H(x) = 1 + 0.5 x

celem stworzenia modelu jest wybranie parametrów lub wartości theta, tak aby h(x) był bliski y dla danych treningowych, x i y. Więc dla tych danych

x = 
y =

postaram się znaleźć linię najlepiej dopasowaną za pomocą regresji liniowej. Zaczynajmy.

funkcja kosztowa

potrzebujemy funkcji, która zminimalizuje parametry nad naszym zestawem danych. Jedną z często używanych funkcji jest średni błąd kwadratowy, który mierzy różnicę między estymatorem (zestawem danych) a wartością szacunkową (prognozą). Wygląda to tak:

średni błąd Kwadratowy

okazuje się, że możemy trochę dostosować równanie, aby obliczenie w dół ścieżki było nieco prostsze. Kończymy z:

średni błąd Kwadratowy

zastosujmy tę funkcję const do następujących danych:

na razie obliczymy niektóre wartości theta i ręcznie wykreślimy funkcję kosztową. Ponieważ ta funkcja przechodzi przez (0, 0), patrzymy tylko na jedną wartość theta. Od tej chwili będę odnosił się do funkcji kosztowej jako j (Θ).

dla J(1) otrzymujemy 0. Nic dziwnego — wartość J(1) daje prostą, która idealnie pasuje do danych. A może J(0.5)?

J(0.5)

funkcja MSE daje nam wartość 0.58. Narysujmy obie nasze wartości do tej pory:

J(1) = 0

J (0.5) = 0.58

z J (1) I J(0.5)

przeliczę jeszcze kilka wartości j (Θ).

i jeśli ładnie połączymy kropki…

Wizualizacja funkcji kosztowej j(Θ)

możemy zobaczyć, że funkcja kosztowa jest na minimum, gdy theta = 1. To ma sens – nasze początkowe dane to linia prosta o nachyleniu 1 (pomarańczowa linia na rysunku powyżej).

spadek gradientu

minimalizowaliśmy j(Θ) metodą prób i błędów powyżej — po prostu próbowaliśmy wielu wartości i wizualnie sprawdzaliśmy uzyskany Wykres. Musi być lepszy sposób? Kolejka spadek gradientu. Gradient Descent jest ogólną funkcją minimalizującą funkcję, w tym przypadku średnią kwadratową funkcją kosztu błędu.

Gradient Descent po prostu robi to, co robiliśmy ręcznie — zmienia wartości theta lub parametry, krok po kroku, aż mamy nadzieję, że osiągniemy minimum.

zaczynamy od inicjalizacji theta0 i theta1 do dowolnych dwóch wartości, powiedzmy 0 dla obu i od tego przechodzimy. Formalnie algorytm wygląda następująco:

spadek gradientu

gdzie α, Alfa, to szybkość uczenia się, czyli jak szybko chcemy osiągnąć minimum. Jeśli jednak α jest zbyt duży, możemy go przekroczyć.

Wizualizacja Schyłku Gradientu. Kredyt: rasbt.github.io

łącząc to wszystko — regresja liniowa

szybko podsumowując:

mamy hipotezę:

hipoteza

która musi pasować do naszych danych treningowych. Możemy użyć funkcji kosztowej, takiej jak średni błąd Kwadratowy:

średni błąd Kwadratowy

, który możemy zminimalizować za pomocą spadku gradientu:

spadek gradientu

, który prowadzi nas do naszego pierwszego algorytmu uczenia maszynowego, regresji liniowej. Ostatnim elementem układanki, który musimy rozwiązać, aby mieć działający model regresji liniowej, jest częściowa pochodna funkcji kosztu:

częściowe wyprowadzenie funkcji kosztowej, którą musimy obliczyć

co okazuje się być:

obraz z kursu uczenia maszynowego Andrew Ng na Coursera.com

co daje nam regresję liniową!

regresja liniowa

z teorią na uboczu, przejdę do implementacji tej logiki w Pythonie w następnym poście.

Edycja 4 maja: opublikowałem kontynuację skupiającą się na tym, jak działa tutaj funkcja kosztów, w tym intuicja, jak obliczyć ją ręcznie i dwie różne implementacje Pythona. Mogę zrobić Spadanie gradientowe, a następnie połączyć je w regresję liniową.

You might also like

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.