Optymalizacja spadku gradientu

9

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.y^-yw1,w2)w1w2)w1w1w2)

Pb89
źródło

Odpowiedzi:

10

Zejście gradientowe aktualizuje wszystkie parametry na każdym kroku. Możesz to zobaczyć w regule aktualizacji:

w(t+1)=w(t)-ηfa(w(t)).

Ponieważ gradient funkcji straty jest wyceniony na wektor z dopasowaniem wymiarów do , wszystkie parametry są aktualizowane przy każdej iteracji.fa(w)w

Szybkość uczenia jest liczbą dodatnią, że re-skaluje gradient. Wykonanie zbyt dużego kroku może bez końca odbijać się od powierzchni straty bez poprawy funkcji utraty; zbyt mały krok może oznaczać żmudnie powolny postęp w kierunku wartości optymalnej.η

Chociaż można oszacować parametry regresji liniowej za pomocą spadku gradientu, nie jest to dobry pomysł.

Istnieją również lepsze sposoby oszacowania współczynników regresji logistycznej.

Sycorax mówi Przywróć Monikę
źródło
Czyli algorytm może wypróbować różne kombinacje, takie jak wzrost w1, spadek w w2zależ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?
Pb89,
i czy pochodna częściowa pomaga również wyjaśnić, do jakiego stopnia należy zwiększyć lub zmniejszyć, w1i w2czy dokonuje się tego na podstawie szybkości uczenia się / kurczenia, podczas gdy pochodna częściowa zapewnia jedynie kierunek opadania?
Pb89,
Gradient jest wektorem, więc podaje kierunek i wielkość. Wektor może być dowolnie przeskalowany przez dodatni skalar i będzie miał ten sam kierunek, ale przeskalowanie zmieni jego wielkość.
Sycorax mówi Przywróć Monikę
Jeśli wielkość jest również podana przez gradient, to jaka jest rola skurczu lub szybkości uczenia się?
Pb89,
Szybkość uczenia się przeskalowuje gradient. Załóżmy, że ma dużą normę (długość). Wykonanie dużego kroku przeniesie Cię do odległej części powierzchni strat (skacząc z jednej góry na drugą). Podstawowym uzasadnieniem spadku gradientu jest to, że jest to przybliżenie liniowe w pobliżu . To przybliżenie jest zawsze niedokładne, ale prawdopodobnie jest gorsze, im dalej się poruszasz - dlatego chcesz zrobić małe kroki, więc używasz małej , gdzie „małe” jest całkowicie specyficzne dla problemu. fa(x)w(t)η
Sycorax mówi Przywróć Monikę
7

Kiedy optymalizacja zachodzi poprzez pochodne cząstkowe, w każdym kroku zmienia zarówno w1, jak i w2, czy też jest kombinacją, jak w kilku iteracjach, zmienia się tylko w1, a gdy w1 nie zmniejsza błędu bardziej, pochodna zaczyna się od w2 - do osiągnąć lokalne minima?

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?

Haitao Du
źródło
1

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:

  1. inicjuj wagi losowo.
  2. oblicz funkcję kosztu i gradient za pomocą zainicjowanych wag.
  3. aktualizuj wagi: Może się zdarzyć, że dla niektórych wag gradientem jest O, w takim przypadku wagi nie pokazują żadnych zmian po aktualizacji. na przykład: Powiedzmy, że gradient wynosi [1,0], W2 pozostanie niezmienione.
  4. sprawdź funkcję kosztu za pomocą zaktualizowanych wag, jeśli zmniejszenie jest wystarczające, kontynuuj iteracje, w przeciwnym razie zakończ.

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).

Santosh Kumar
źródło
„jeśli zmniejszenie jest wystarczające, kontynuuj iteracje, w przeciwnym razie zakończ”, czy istnieje wartość domyślna stosowana w pakietach python ( sklearn) lub pakietach R, takich jak caret? Może być określony przez użytkownika tylko w ręcznie utworzonej funkcji spadku gradientu?
Pb89,
1

Gradient przyzwoity jest stosowany do obu w1i w2dla każdej iteracji. Podczas każdej iteracji parametry są aktualizowane zgodnie z gradientami. Prawdopodobnie mieliby inną pochodną częściową.

Sprawdź tutaj .

Witaj świecie
źródło