W warstwie wyjściowej sieci neuronowej typowe jest użycie funkcji softmax do przybliżenia rozkładu prawdopodobieństwa:
Jest to kosztowne do obliczenia z powodu wykładników. Dlaczego po prostu nie wykonać transformacji Z, aby wszystkie wyniki były dodatnie, a następnie normalizować, dzieląc wszystkie wyniki przez sumę wszystkich wyników?
math
neural-network
softmax
Tomek
źródło
źródło
Odpowiedzi:
Jest jedna fajna cecha Softmax w porównaniu ze standardową normalizacją.
Reaguje na niską stymulację (pomyśl rozmyty obraz) twojej sieci neuronowej z dość równomiernym rozkładem i na wysoką stymulację (tj. Duże liczby, pomyśl ostry obraz) z prawdopodobieństwami bliskimi 0 i 1.
Podczas gdy standardowa normalizacja nie obchodzi, o ile proporcje są takie same.
Zobacz, co się dzieje, gdy soft max ma 10 razy większe wejście, tj. Twoja sieć neuronowa ma ostry obraz i wiele neuronów zostało aktywowanych
A następnie porównaj to ze standardową normalizacją
źródło
Mam to pytanie od miesięcy. Wygląda na to, że po prostu sprytnie odgadliśmy softmax jako funkcję wyjściową, a następnie interpretujemy dane wejściowe do softmax jako log-prawdopodobieństwa. Jak powiedziałeś, dlaczego po prostu nie znormalizować wszystkich wyników, dzieląc je przez ich sumę? Znalazłem odpowiedź w książce Deep Learning autorstwa Goodfellow, Bengio i Courville (2016) w sekcji 6.2.2.
Powiedzmy, że nasza ostatnia ukryta warstwa daje nam z jako aktywację. Następnie softmax definiuje się jako
Bardzo krótkie wyjaśnienie
Exp w funkcji softmax z grubsza anuluje logarytm utraty entropii krzyżowej, powodując, że strata jest mniej więcej liniowa w z_i. Prowadzi to do mniej więcej stałego gradientu, gdy model jest nieprawidłowy, co pozwala na szybką korektę. Zatem źle nasycony softmax nie powoduje zanikania gradientu.
Krótkie wyjaśnienie
Najpopularniejszą metodą uczenia sieci neuronowej jest oszacowanie maksymalnego prawdopodobieństwa. Szacujemy parametry theta w sposób maksymalizujący prawdopodobieństwo danych treningowych (o rozmiarze m). Ponieważ prawdopodobieństwo całego zbioru danych uczących jest iloczynem prawdopodobieństw każdej próbki, łatwiej jest zmaksymalizować prawdopodobieństwo logarytmiczne zbioru danych, a tym samym sumę prawdopodobieństwa logarytmicznego każdej próbki indeksowanej przez k:
Teraz skupiamy się tylko na softmax z już podanym z, więc możemy wymienić
gdzie i jest poprawną klasą k-tej próbki. Teraz widzimy, że kiedy weźmiemy logarytm z softmax, aby obliczyć logarytm prawdopodobieństwa próbki, otrzymamy:
, co przy dużych różnicach w z przybliża się do
Najpierw widzimy tutaj składową liniową z_i. Po drugie, możemy zbadać zachowanie max (z) w dwóch przypadkach:
Widzimy, że ogólne prawdopodobieństwo logarytmiczne będzie zdominowane przez próbki, w przypadku których model jest nieprawidłowy. Ponadto, nawet jeśli model jest naprawdę nieprawidłowy, co prowadzi do nasycenia softmaxu, funkcja straty nie ulega nasyceniu. Jest w przybliżeniu liniowy w z_j, co oznacza, że mamy mniej więcej stały gradient. Pozwala to modelowi na szybką korektę. Zauważ, że nie dotyczy to na przykład błędu średniokwadratowego.
Długie wyjaśnienie
Jeśli softmax nadal wydaje Ci się arbitralnym wyborem, możesz spojrzeć na uzasadnienie użycia sigmoidy w regresji logistycznej:
Dlaczego funkcja sigmoidalna zamiast czegokolwiek innego?
Softmax jest uogólnieniem esicy dla problemów wieloklasowych, uzasadnionych analogicznie.
źródło
Znalazłem tutaj bardzo dobre wyjaśnienie: CS231n: Konwolucyjne sieci neuronowe do rozpoznawania wizualnego.
Na pozór algorytm softmax wydaje się być prostą nieliniową normalizacją (rozkładamy dane wykładniczo). Jest jednak coś więcej.
W szczególności istnieje kilka różnych widoków (ten sam link co powyżej ):
Teoria informacji - z punktu widzenia teorii informacji funkcja softmax może być postrzegana jako próba zminimalizowania krzyżowej entropii między przewidywaniami a prawdą.
Widok probabilistyczny - z tej perspektywy w rzeczywistości patrzymy na logarytm prawdopodobieństw, więc kiedy wykonujemy potęgowanie, otrzymujemy surowe prawdopodobieństwa. W tym przypadku równanie softmax znajdź MLE (oszacowanie maksymalnego prawdopodobieństwa)
Podsumowując, chociaż równanie softmax wydaje się być arbitralne, to NIE jest. W rzeczywistości jest to raczej pryncypialny sposób normalizacji klasyfikacji w celu zminimalizowania krzyżowej entropii / negatywnego prawdopodobieństwa między przewidywaniami a prawdą.
źródło
Wartości q_i reprezentują logarytmiczne prawdopodobieństwo. Aby odzyskać wartości prawdopodobieństwa, musisz je potęgować.
Jednym z powodów, dla których algorytmy statystyczne często używają funkcji logarytmicznej straty prawdopodobieństwa, jest to, że są one bardziej stabilne numerycznie: iloczyn prawdopodobieństw może być reprezentowany jako bardzo mała liczba zmiennoprzecinkowa. Korzystając z funkcji straty logarytmicznej prawdopodobieństwa, iloczyn prawdopodobieństw staje się sumą.
Innym powodem jest to, że wiarygodności logarytmiczne występują naturalnie podczas wyprowadzania estymatorów dla zmiennych losowych, które zakłada się, że pochodzą z wielowymiarowych rozkładów Gaussa. Zobacz na przykład estymator maksymalnej wiarygodności (ML) i sposób, w jaki jest powiązany z najmniejszymi kwadratami.
Na marginesie, myślę, że to pytanie jest bardziej odpowiednie dla teorii CS lub wymiany stosów nauk obliczeniowych.
źródło
Rozpatrujemy problem klasyfikacji wieloklasowej. Oznacza to, że przewidywana zmienna
y
może przyjąć jedną zk
kategorii, gdziek > 2
. W teorii prawdopodobieństwa jest to zwykle modelowane przez rozkład wielomianowy. Rozkład wielomianowy należy do rozkładów rodzin wykładniczych. Prawdopodobieństwo można zrekonstruowaćP(k=?|x)
wykorzystując własności rozkładów wykładniczych rodzin, pokrywa się ono ze wzorem softmax.Jeśli uważasz, że problem można modelować za pomocą innego rozkładu, innego niż wielomian, możesz dojść do wniosku, który różni się od softmax.
Więcej informacji i formalne wyprowadzenie można znaleźć w notatkach do wykładów CS229 (9.3 Regresja Softmax) .
Dodatkowo przydatna sztuczka zwykle wykonywana dla softmax to: softmax (x) = softmax (x + c) , softmax jest niezmienna od stałych przesunięć na wejściu.
źródło
softmax
nie jest funkcją aktywacyjną. Funkcja aktywacji jest operacją elementarną - dając elementowi tensora mądrze wykonując nieliniową operację w celu wytworzenia kolejnego tensora. Alesoftmax
jest operacją wektorową, daje znormalizowany wektor, istnieją wewnętrzne zależności między każdym elementem.Myślę, że jednym z powodów może być zajęcie się liczbami ujemnymi i dzieleniem przez zero, ponieważ exp (x) zawsze będzie dodatnie i większe od zera.
Na przykład dla
a = [-2, -1, 1, 2]
sumy wyniesie 0, możemy użyć softmax, aby uniknąć dzielenia przez zero.źródło
[0, 1, 3, 4]
podział.Załóżmy, że zmienimy funkcję softmax, aby aktywacje wyjścia były podane przez
gdzie
c
jest dodatnia stała. Należy pamiętać, żec=1
odpowiada standardowej funkcji softmax. Ale jeśli użyjemy innej wartościc
, otrzymamy inną funkcję, która jednak jest jakościowo raczej podobna do softmax. W szczególności pokaż, że aktywacje wyjścia tworzą rozkład prawdopodobieństwa, tak jak w przypadku zwykłego softmax. Załóżmy, że pozwolimyc
stać się dużym, tjc→∞
. Jaka jest wartość graniczna dla aktywacji wyjśća^L_j
? Po rozwiązaniu tego problemu powinno być dla Ciebie jasne, dlaczego myślimy oc=1
funkcji jako o „złagodzonej” wersji funkcji maksymalnej. Stąd pochodzi określenie „softmax”. Możesz śledzić szczegóły z tego źródła (równanie 83).źródło
Dodając do odpowiedzi Piotra Czapli, im większe wartości wejściowe, tym większe prawdopodobieństwo uzyskania maksymalnej wartości wejściowej, dla tej samej proporcji iw porównaniu z innymi wejściami:
źródło
Z „ Badania alternatywnych rozwiązań Softmax należących do rodziny strat sferycznych ” https://arxiv.org/abs/1511.05042
Autorzy zbadali kilka innych funkcji, wśród których jest ekspansja Taylora
exp
oraz tzw. Sferyczny softmax i odkryli, że czasami mogą one działać lepiej niż zwyklesoftmax
.źródło