Próbuję zrozumieć optymalizację spadku gradientu w algorytmach ML (uczenie maszynowe). Rozumiem, że jest to funkcja, gdzie koszt celem jest minimalizacja błędu . W scenariuszu, w którym wagi są optymalizowane w celu uzyskania minimalnego błędu i stosowane są pochodne częściowe, czy zmienia on zarówno jak i na każdym etapie, czy też jest kombinacją (np. W kilku iteracjach zmienia się tylko i kiedy nie zmniejsza już błędu, pochodna zaczyna się od )? Aplikacja może być modelem regresji liniowej, modelem regresji logistycznej lub algorytmami wzmacniającymi.
9
w1
, spadek ww2
zależności od kierunku od pochodnej częściowej do osiągnięcia minimów lokalnych i tylko po to, aby potwierdzić, że algorytm niekoniecznie da globalne minima zawsze?w1
iw2
czy dokonuje się tego na podstawie szybkości uczenia się / kurczenia, podczas gdy pochodna częściowa zapewnia jedynie kierunek opadania?W każdej iteracji algorytm zmieni wszystkie wagi jednocześnie w oparciu o wektor gradientu. W rzeczywistości gradient jest wektorem. Długość gradientu jest taka sama jak liczba wag w modelu.
Z drugiej strony, zmiana jednego parametru na raz istniała i nazywa się to algorytmem współrzędnych przyzwoitym , który jest rodzajem algorytmu optymalizacji bez gradientu . W praktyce może nie działać tak dobrze jak algorytm oparty na gradiencie.
Oto interesująca odpowiedź na temat algorytmu bez gradientu
Czy można trenować sieć neuronową bez propagacji wstecznej?
źródło
Celem opadania gradientu jest zminimalizowanie funkcji kosztów. Ta minimalizacja jest osiągana poprzez dostosowanie wag dla twojego przypadku w1 i w2. Generalnie może być n takich obciążników.
Zejście gradientu odbywa się w następujący sposób:
podczas aktualizacji wag, których waga (W1 lub W2) ulega zmianie, całkowicie decyduje gradient. Wszystkie wagi są aktualizowane (niektóre wagi mogą się nie zmieniać w zależności od gradientu).
źródło
sklearn
) lub pakietach R, takich jakcaret
? Może być określony przez użytkownika tylko w ręcznie utworzonej funkcji spadku gradientu?Gradient przyzwoity jest stosowany do obu
w1
iw2
dla każdej iteracji. Podczas każdej iteracji parametry są aktualizowane zgodnie z gradientami. Prawdopodobnie mieliby inną pochodną częściową.Sprawdź tutaj .
źródło