Różnica w stosowaniu znormalizowanego gradientu i gradientu

15

W ogólnym ustawieniu algorytmu spadku gradientu mamy gdzie jest bieżącym punktem, jest rozmiarem kroku, a jest gradientem oceniono na . xn+1=xn-ηsolrzarejamintxnxnηsolrzarejamintxnxn

Widziałem w niektórych algorytmach, ludzie używają znormalizowanego gradientu zamiast gradientu . Chciałem wiedzieć, jaka jest różnica w stosowaniu znormalizowanego gradientu i po prostu gradientu .

Uczeń
źródło
1
Czy mogę zadać pytanie? jak obliczyć znormalizowany gradient, jeśli już uzyskałem wektor gradientu? Jeśli wektor gradientu jest duży numerycznie, muszę znormalizować gradient. Czy możesz podać kilka intuicyjnych przykładów normalizacji gradientu? Dziękuję Ci!

Odpowiedzi:

12

W algorytmie opadania gradientu algorytm kontynuuje wyszukiwanie kierunku, w którym można znaleźć optymalne rozwiązanie. Optymalnym kierunkiem okazuje się gradient. Ponieważ jednak interesuje nas tylko kierunek, a niekoniecznie to, jak daleko posuwamy się w tym kierunku, zwykle nie jesteśmy zainteresowani wielkością gradientu. W ten sposób znormalizowany gradient jest wystarczający do naszych celów i pozwalamy ηdyktuj, jak daleko chcemy się poruszać w obliczonym kierunku. Jeśli jednak użyjesz nienormalizowanego zejścia gradientu, to w dowolnym punkcie odległość, którą poruszasz się w optymalnym kierunku, jest podyktowana wielkością gradientu (w istocie podyktowana powierzchnią funkcji celu, tj. Punkt na stromej powierzchni będzie miał duża jasność, podczas gdy punkt na dość płaskiej powierzchni będzie miał małą jasność).

Z powyższego mógłbyś zdać sobie sprawę, że normalizacja gradientu to dodatkowa moc kontrolna, którą otrzymujesz (czy jest to przydatne, czy nie, zależy od twojej konkretnej aplikacji). Mam na myśli powyższe:
1] Jeśli chcesz się upewnić, że algorytm porusza się w ustalonych rozmiarach kroków w każdej iteracji, możesz użyć znormalizowanego spadku gradientu ze stałym . 2] Jeśli chcesz mieć pewność, że Twój algorytm porusza się w krokach podyktowanych przez ciebie dokładnie, to znowu możesz użyć znormalizowanego zejścia gradientu z określoną funkcją dla rozmiaru kroku zakodowanego w η .η
η
3] Jeśli chcesz, aby wielkość gradientu decydowała o wielkości kroku, użyjesz nietypowego spadku gradientu. Istnieje kilka innych wariantów, na przykład wielkość gradientu decyduje o wielkości kroku, ale nakładasz na niego limit i tak dalej.

Teraz wielkość kroku wyraźnie wpływa na szybkość konwergencji i stabilności. To, który z powyższych rozmiarów kroków najlepiej działa, zależy wyłącznie od zastosowania (tj. Funkcji celu). W niektórych przypadkach można przeanalizować związek między prędkością konwergencji, stabilnością a rozmiarem kroku. Ta relacja może następnie dać wskazówkę, czy chcesz przejść ze znormalizowanym czy nienormalizowanym spadkiem gradientu.

Podsumowując, nie ma różnicy między znormalizowanym a nienormalizowanym spadkiem gradientu (o ile idzie teoria algorytmu). Ma to jednak praktyczny wpływ na szybkość konwergencji i stabilności. Wybór jednej z drugiej zależy wyłącznie od danego zastosowania / celu.

TenaliRaman
źródło
Możesz zastosować podejście pośrednie, w którym normalizujesz na przykład na podstawie pierwszego gradientu. To nadal sprawiłoby, że względny rozmiar gradientu miałby znaczenie pod względem wielkości kroku.
dashnick
2

ηη

Brian Borchers
źródło
2

fa(x)=xT.xy(t)=x0/||x0||mi-t. Tak więc norma gradientu maleje wykładniczo szybko, gdy zbliżasz się do punktu krytycznego. W takich przypadkach często lepiej jest kilka razy podskakiwać w przód i w tył, niż zbliżać się bardzo powoli. Ogólnie jednak wiadomo, że metody pierwszego rzędu mają bardzo powolną zbieżność wokół punktów krytycznych, więc nie powinieneś ich używać, jeśli naprawdę zależy Ci na dokładności. Jeśli nie możesz analitycznie obliczyć Hesji swojego celu, nadal możesz go przybliżyć (BFGS).

fairidox
źródło