Biorę kursy uczenia maszynowego online i dowiedziałem się o spadku gradientu do obliczania optymalnych wartości w hipotezie.
h(x) = B0 + B1X
dlaczego musimy używać zejścia gradientu, jeśli możemy łatwo znaleźć wartości za pomocą poniższej formuły? To też wygląda na proste i łatwe. ale GD potrzebuje wielu iteracji, aby uzyskać wartość.
B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)
B0 = Mean(Y) – B1 * Mean(X)
UWAGA: Wykonano jak w https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial
Sprawdziłem poniższe pytania i dla mnie nie było to jasne do zrozumienia.
Dlaczego wymagane jest zejście gradientowe?
Powyższe odpowiedzi porównują GD z wykorzystaniem instrumentów pochodnych.
Odpowiedzi:
Głównym powodem stosowania spadku gradientu do regresji liniowej jest złożoność obliczeniowa: w niektórych przypadkach znalezienie rozwiązania wykorzystującego spadek gradientu jest tańsze (szybciej).
Formuła, którą napisałeś, wygląda na bardzo prostą, nawet obliczeniową, ponieważ działa tylko w przypadku wielkości pojedynczej, tj. Gdy masz tylko jedną zmienną. W przypadku wielu zmiennych, gdy masz wiele zmiennych, formuły są nieco bardziej skomplikowane na papierze i wymagają znacznie więcej obliczeń, gdy implementujesz je w oprogramowaniu: Tutaj trzeba obliczyć macierz a następnie odwrócić ją (patrz uwaga poniżej). To kosztowna kalkulacja. Dla odniesienia, macierz (projektowa) X ma K + 1 kolumn, gdzie K jest liczbą predyktorów i N rzędów obserwacji. W algorytmie uczenia maszynowego można uzyskać K> 1000 i N> 1 000 000. matryca sama zajmuje trochę czasu, aby obliczyć, to trzeba odwrócićX ′ X X ′ X K × K
Spadek gradientu pozwala więc zaoszczędzić dużo czasu na obliczeniach. Co więcej, sposób, w jaki to się robi, pozwala na trywialną równoległość, tj. Rozłożenie obliczeń na wiele procesorów lub maszyn. Rozwiązanie algebry liniowej można również zrównoleglać, ale jest ono bardziej skomplikowane i wciąż drogie.
Ponadto istnieją wersje gradientu zejścia, gdy przechowujesz tylko część danych w pamięci, co obniża wymagania dotyczące pamięci komputera. Ogólnie rzecz biorąc, w przypadku bardzo dużych problemów jest bardziej wydajne niż rozwiązanie algebry liniowej.
Staje się to jeszcze ważniejsze, gdy wzrasta wymiarowość, gdy masz tysiące zmiennych, takich jak uczenie maszynowe.
Uwaga . Byłem zaskoczony, jak wiele uwagi poświęcono gradientowi opadającemu w wykładach Ng. Mówi o tym nietrywialnie, może 20% całego kursu. Dla mnie to tylko szczegół implementacji, to jak dokładnie znaleźć optymalne. Kluczem jest sformułowanie problemu optymalizacji, a to, jak dokładnie go znajdziesz, nie jest konieczne. Nie martwiłbym się tym zbytnio. Pozostaw to informatykom i skoncentruj się na tym, co jest dla Ciebie ważne jako statystyk.
Mimo to muszę zakwalifikować się mówiąc, że to jest rzeczywiście ważne, aby zrozumieć o złożoności obliczeniowej i stabilności numerycznej algorytmów rozwiązania. Nadal nie sądzę, że musisz znać szczegóły implementacji i kod algorytmów. Zwykle nie jest to najlepsze wykorzystanie twojego czasu jako statystyki.
Uwaga 1 . Napisałem, że musisz odwrócić macierz dla celów dydaktycznych i nie tak zazwyczaj rozwiązujesz równanie. W praktyce problemy z algebrą liniową są rozwiązywane przez zastosowanie pewnego rodzaju faktoryzacji, takiej jak QR, gdzie nie odwracasz bezpośrednio macierzy, ale wykonujesz inne matematycznie równoważne manipulacje, aby uzyskać odpowiedź. Robisz to, ponieważ inwersja macierzy jest w wielu przypadkach kosztowną i niestabilną numerycznie operacją.
Daje to kolejną małą zaletę algorytmu spadku gradientu jako efekt uboczny: działa nawet wtedy, gdy macierz projektowa ma problemy z kolinearnością. Zwykła ścieżka algebry liniowej wybuchłaby, a opadanie gradientu trwałoby nawet w przypadku predyktorów współliniowych.
źródło
Po pierwsze, zdecydowanie zalecam przeczytanie następujących dwóch postów (jeśli nie duplikowanie)
Sprawdź odpowiedź JM w
Jaki algorytm stosuje się w regresji liniowej?
Proszę sprawdzić odpowiedź Marka (z liczbowego punktu widzenia stabilności) w
Czy potrzebujemy spadku gradientu, aby znaleźć współczynniki modelu regresji liniowej?
Krótko mówiąc, załóżmy, że chcemy rozwiązać problem regresji liniowej z utratą do kwadratu Możemy ustawić pochodną na , i to rozwiązuje układ liniowyminimize ∥Ax−b∥2 2AT(Ax−b) 0 ATAx=ATb
Na wysokim poziomie istnieją dwa sposoby rozwiązania układu liniowego. Metoda bezpośrednia i metoda iteracyjna. Zauważ, że metoda bezpośrednia rozwiązuje , a opadanie gradientu (jedna przykładowa metoda iteracyjna) bezpośrednio rozwiązuje .ATAx=ATb minimize ∥Ax−b∥2
Porównywanie do metod bezpośrednich (powiedz rozkład QR / LU ). Metody iteracyjne mają pewne zalety, gdy mamy dużą ilość danych lub dane są bardzo rzadkie.
Załóżmy, że nasza macierz danych jest ogromna i nie można zmieścić się w pamięci, można zastosować stochastyczne pochylenie gradientu. Mam odpowiedź, aby wyjaśnić, w jaki sposób stochastyczne obniżanie gradientu pozwala zaoszczędzić czas w porównaniu ze standardowym spadkiem gradientu?A
W przypadku rzadkich danych zapoznaj się z wielką książką Metody iteracyjne dla rzadkich układów liniowych
Z drugiej strony uważam, że jednym z powodów, dla których podkreśla Andrew Ng, jest to, że jest to metoda ogólna (najczęściej stosowana metoda uczenia maszynowego) i może być stosowana w innych modelach, takich jak regresja logistyczna lub sieć neuronowa.
źródło
Sycorax ma rację, że nie potrzebujesz spadku gradientu podczas szacowania regresji liniowej. Twój kurs może być na prostym przykładzie, aby nauczyć cię zejścia gradientowego do wstępu do bardziej skomplikowanych wersji.
Jedną fajną rzeczą Chcę dodać jednak to, że nie ma obecnie niewielka nisza badania dotyczące zakończenia metoda gradientu prostego wcześnie , aby uniknąć nadmiernego dopasowania modelu.
źródło
Jeśli się nie mylę, myślę, że wskazujesz na MOOC oferowany przez prof. Andrew Ng. Aby znaleźć optymalne współczynniki regresji, dostępne są rażąco dwie metody. Jednym z nich jest użycie równań normalnych, tj. Po prostu odkrycie a drugim przez zminimalizowanie najmniejszej kryterium kwadratów, które wywodzi się z cytowanej hipotezy. Nawiasem mówiąc, pierwsza metoda, tj. Równania normalne, jest iloczynem drugiej metody, tj. Metody optymalizacji.(XTX)−1XTy
Wspomniana metoda, tj. Wykorzystująca korelację, ma zastosowanie tylko do jednego predyktora i jednej wielkości przechwytywania. Po prostu zauważ formularz. Tak więc, kiedy liczba predyktorów jest większa niż jeden, to jakie jest wyjście? Następnie należy zastosować inne metody, tj. Równanie normalne lub optymalizację.
Po co więc optymalizacja (tutaj Gradient Descent), chociaż dostępne jest bezpośrednie równanie normalne. Zauważ, że w równaniu normalnym należy odwrócić macierz. Teraz odwrócenie macierzy kosztuje do obliczeń, gdzie jest liczbą wierszy w macierzy , tj. Obserwacjami. Ponadto, jeśli jest źle warunkowany, spowoduje to błędy obliczeniowe w oszacowaniu. Tak więc algorytm optymalizacji rodzaju zejścia gradientu może uchronić nas przed tego rodzaju problemem. Kolejnym problemem jest niedopasowanie i niedostateczne oszacowanie współczynników regresji.O(N3) N X X
Moja propozycja dla ciebie nie polega na rozwiązywaniu problemu. Spróbuj zrozumieć teorię. Prof Ng jest jednym z najlepszych profesorów na świecie, który uprzejmie uczy uczenia maszynowego w MOOC. Tak więc, kiedy instruuje on w ten sposób, musi to mieć pewne ukryte intencje. Mam nadzieję, że nie będą ci przeszkadzać moje słowa.
Wszystkiego najlepszego.
źródło
Po pierwsze tak, prawdziwym powodem jest ten podany przez Tima Atreidesa; jest to ćwiczenie pedagogiczne.
Jest jednak możliwe, choć mało prawdopodobne, aby wykonać regresję liniową na powiedzmy kilka trylionów punktów danych przesyłanych strumieniowo z gniazda sieciowego. W tym przypadku naiwna ocena roztworu analitycznego byłaby niemożliwa, podczas gdy niektóre warianty stochastycznego / adaptacyjnego spadku gradientu byłyby zbieżne z prawidłowym rozwiązaniem przy minimalnym obciążeniu pamięci.
(dla regresji liniowej można przeformułować rozwiązanie analityczne jako system rekurencyjny, ale nie jest to technika ogólna).
źródło
Innym powodem jest to, że opadanie gradientu jest bardziej ogólną metodą. W przypadku wielu problemów związanych z uczeniem maszynowym funkcja kosztów nie jest wypukła (np. Rozkład macierzy, sieci neuronowe), więc nie można użyć rozwiązania w formie zamkniętej. W takich przypadkach zejście gradientowe służy do znalezienia dobrych lokalnych optymalnych punktów. Lub jeśli chcesz zaimplementować wersję online, musisz użyć algorytmu opartego na spadku gradientu.
źródło