W większości zadań uczenia maszynowego, w których można sformułować pewne prawdopodobieństwo które należy zmaksymalizować, faktycznie zoptymalizowalibyśmy prawdopodobieństwo zamiast prawdopodobieństwa dla niektórych parametrów . Np. W treningu z maksymalnym prawdopodobieństwem jest to zwykle logarytm prawdopodobieństwa. W przypadku tej metody gradientowej wiąże się to z czynnikiem:
Zobacz tutaj lub tutaj kilka przykładów.
Oczywiście optymalizacja jest równoważna, ale gradient będzie inny, więc każda metoda oparta na gradientach będzie zachowywać się inaczej (zwłaszcza metody gradientów stochastycznych). Czy jest jakieś uzasadnienie, że gradient działa lepiej niż gradient ?
Odpowiedzi:
Metody gradientowe zwykle działają lepiej, optymalizując niż ponieważ gradient jest ogólnie lepiej skalowany . Oznacza to, że ma rozmiar, który konsekwentnie i pomocnie odzwierciedla geometrię funkcji celu, co ułatwia wybranie odpowiedniego rozmiaru kroku i osiągnięcie optymalnej w mniejszej liczbie kroków.p ( x ) log p ( x )logp(x) p(x) logp(x)
Aby sprawdzić, co znaczy, porównaj proces optymalizacji Gradient i . W dowolnym punkcie gradient wynosiJeśli pomnożymy to przez , otrzymamy dokładny rozmiar kroku potrzebny do osiągnięcia globalnego optimum przy początku, bez względu naf ( x ) = log p ( x ) = - x 2 xp(x)=exp(−x2) f(x)=logp(x)=−x2 x f(x)
Natomiast gradient ma bardzo słabe globalne właściwości do optymalizacji. MamyMnoży to idealnie ładny, dobrze zachowujący się gradient przez współczynnik który zanika (szybciej niż) wykładniczo wraz ze wzrostem . Przy mamy już , więc krok wzdłuż wektora gradientu jest około razy za mały. Aby uzyskać rozsądny rozmiar kroku w kierunku optymalnego, musielibyśmy przeskalować gradient przez odwrotność tego, ogromną stałąp(x)
Zasadniczo nie ma gwarancji, że będzie miał tak świetne właściwości skalowania gradientu, jak ten przykład zabawki, szczególnie gdy mamy więcej niż jedną zmienną. Jednak w przypadku niemal nietrywialnych problemów będzie znacznie lepszy niż . Wynika to z faktu, że prawdopodobieństwo jest dużym produktem z wieloma warunkami, a dziennik zamienia ten produkt w sumę, jak zauważono w kilku innych odpowiedziach. Pod warunkiem, że terminy z prawdopodobieństwem są dobrze zachowane z punktu widzenia optymalizacji, ich log jest ogólnie dobrze zachowany, a suma dobrze zachowanych funkcji jest dobrze zachowana. Przez dobrze wychowany mam na myślilogp(x) logp(x) p(x) f′′(x) nie zmienia się zbyt szybko ani zbyt szybko, co prowadzi do niemal kwadratowej funkcji, którą można łatwo zoptymalizować metodami gradientowymi. Suma pochodnego jest pochodną sumy, bez względu na kolejność pochodnych, co pomaga zapewnić, że ten duży stos sum sum ma bardzo rozsądną drugą pochodną!
źródło
Niedomiar
Komputer używa ograniczonej cyfrowej reprezentacji zmiennoprzecinkowej ułamków, dlatego pomnożenie tak wielu prawdopodobieństw jest gwarantowane bardzo blisko zera.
W przypadku nie mamy tego problemu.log
źródło
Logarytm prawdopodobieństwa wielu wspólnych prawdopodobieństw upraszcza sumę logarytmów poszczególnych prawdopodobieństw (a reguła sumy jest łatwiejsza niż reguła iloczynu dla różnicowania)
Logarytm członka rodziny rozkładów prawdopodobieństwa wykładniczego (który obejmuje wszechobecną normalną) jest wielomianem parametrów (tzn. Maksymalne prawdopodobieństwo zmniejsza się do najmniejszych kwadratów dla rozkładów normalnych)
Ta druga forma jest zarówno bardziej stabilna numerycznie, jak i symbolicznie łatwiejsza do odróżnienia od pierwszej.
Wreszcie, logarytm jest transformacją monotoniczną, która zachowuje lokalizację ekstremów (w szczególności szacowane parametry o maksymalnym prawdopodobieństwie są identyczne dla formuły oryginalnej i transformowanej logarytmicznie)
źródło
O wiele łatwiej jest pobrać pochodną sumy logarytmów niż pochodną produktu, która zawiera, powiedzmy, 100 mnożników.
źródło
Zasadniczo najbardziej podstawowym i łatwym problemem optymalizacji jest optymalizacja funkcji kwadratowej. Możesz łatwo znaleźć optymalną funkcję, bez względu na to, od czego zaczynasz. To, jak to się manifestuje, zależy od konkretnej metody, ale im bliżej funkcji kwadratowej, tym lepiej.
Jak zauważono w TemplateRex, przy wielu różnych problemach prawdopodobieństwa, które biorą udział w obliczaniu funkcji prawdopodobieństwa, pochodzą z rozkładu normalnego lub są przez niego przybliżone. Więc jeśli pracujesz na logu, otrzymujesz ładną funkcję kwadratową. Natomiast jeśli pracujesz nad prawdopodobieństwami, masz funkcję, która
Którą funkcję wolisz zoptymalizować, tę czy inną ?
(To było w rzeczywistości łatwe; w praktycznych zastosowaniach wyszukiwanie może rozpocząć się tak daleko od optymalnego, że wartości funkcji i gradienty, nawet jeśli byłyby w stanie je obliczyć numerycznie, będą nie do odróżnienia od 0 i bezużyteczne dla celów optymalizacji algorytm. Ale przekształcenie w funkcję kwadratową sprawia, że jest to bułka z masłem.)
Zauważ, że jest to całkowicie zgodne z już wspomnianymi problemami ze stabilnością liczbową. Powodem, dla którego skala dziennika jest wymagana do pracy z tą funkcją, jest dokładnie ten sam powód, dla którego prawdopodobieństwo dziennika jest znacznie lepiej zachowane (dla optymalizacji i innych celów) niż oryginał.
Możesz również podejść do tego w inny sposób. Nawet jeśli nie ma przewagi w logu (który jest) - i tak użyjemy skali logu do pochodnych i obliczeń, więc jaki jest powód, aby zastosować transformację exp tylko do obliczenia gradientu? Równie dobrze możemy pozostać spójni z logem.
źródło
Używając , zwiększamy zakres dynamiczny algorytmu optymalizacji. w zastosowaniach jest zwykle produktem funkcji. Na przykład w oszacowaniu maksymalnego prawdopodobieństwa jest to iloczyn postaci , gdzie Jest funkcją gęstości, którą można większa lub mniejsza niż 1, btw.lnp p L(x|θ)=Πni=1f(xi|θ) f(.)
Tak więc, gdy jest bardzo duża, tj dużą próbkę, czynność prawdopodobieństwo jest zazwyczaj daleko od 1: to albo bardzo małe lub bardzo duże, ponieważ jest to funkcja zasilania .n L(.) L∼f(.)n
Rejestrując dziennik, po prostu poprawiamy zakres dynamiczny dowolnego algorytmu optymalizacyjnego, umożliwiając mu pracę z bardzo dużymi lub małymi wartościami w ten sam sposób.
źródło
Podano już kilka fajnych odpowiedzi. Ale ostatnio spotkałem nowy:
Często otrzymujesz olbrzymi zestaw danych treningowych i definiujesz jakiś model probabilistyczny i chcesz zmaksymalizować prawdopodobieństwo . Zakłada się, że są niezależne, tzn. Masz Teraz często ćwiczysz stochastyczne (mini-wsadowe) szkolenie gradientowe, tj. Na każdym etapie, dla swojej straty , optymalizujesz dla , tj.X p(x|θ) x∈X p(X|θ)=∏x∈Xp(x|θ). L L(X′|θ) X′⊂X θ′:=θ−∂∑x∈X′L(x|θ)∂θ.
Teraz te stochastyczne kroki są kumulowane addytywnie. Z tego powodu chcesz właściwości, która ogólnie
Tak jest w przypadku
L(X|θ)=∑x∈XL(x|θ). L(x|θ)=−logp(x|θ).
źródło