Dlaczego warto używać softmax w przeciwieństwie do standardowej normalizacji?

159

W warstwie wyjściowej sieci neuronowej typowe jest użycie funkcji softmax do przybliżenia rozkładu prawdopodobieństwa:

wprowadź opis obrazu tutaj

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?

Tomek
źródło
8
Ta funkcja nie jest droga do obliczenia z powodu wykładników, ale dlatego, że musisz obliczyć każde qj. Potęgowanie jest tanie w porównaniu z całkowitą ilością potrzebnych obliczeń.
Seppo Enarvi
O jakiej transformacji Z mówisz? Znaczenie terminu przetwarzania sygnału nie pasuje tutaj, a zastąpienie wartości ich wynikiem z daje ujemny wynik, jeśli wejście jest poniżej średniej.
David Cian
Zobacz też: Stats.SE
Martin Thoma

Odpowiedzi:

166

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

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

A następnie porównaj to ze standardową normalizacją

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
Piotr Czapla
źródło
16
Ta odpowiedź najlepiej ilustruje wpływ stosowania potęgowania, a nie skupiania się na podstawach teoretycznych. (który jest świetny). Powinien być umieszczony na początku najwyższej odpowiedzi. Po sprawdzeniu, w jaki sposób iw jakim stopniu potęgowanie rozkłada wartości, górna odpowiedź pomaga wyjaśnić, dlaczego tego chcesz.
Ian Danforth
@IanDanforth Zgadzam się z tobą. powinien być na początku.
Hitesh
11
Nie jestem pewien, dlaczego ta odpowiedź jest najczęściej głosowana. Dlaczego [1, 2] odpowiada rozmytemu obrazowi, a [10,20] odpowiada ostrzejszemu obrazowi? Jest to po prostu kwestia skalowania i oba przypadki są zasadniczo takie same. Jeśli już, to powinno wydawać się wspierać standardową normalizację, która prawidłowo uznaje oba przypadki za równoważne.
user118967
Kiedy już gwarantuje się, że wartości mieszczą się w przedziale [0, 1], czy nadal istnieje jakakolwiek korzyść z przyjmowania wartości softmax zamiast zwykłego dzielenia przez sumę?
Martin Thoma
58

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:

  1. Jeśli model jest poprawny, to max (z) będzie wynosić z_i. Zatem asymptoty logarytmiczno-prawdopodobieństwa zero (tj. Prawdopodobieństwo 1) z rosnącą różnicą między z_i a innymi wpisami w z.
  2. Jeśli model jest niepoprawny, to max (z) będzie jakimś innym z_j> z_i. Tak więc dodanie z_i nie znosi w pełni out -z_j, a log-prawdopodobieństwo jest z grubsza (z_i - z_j). To jasno mówi modelowi, co zrobić, aby zwiększyć logarytmiczne prawdopodobieństwo: zwiększyć z_i i zmniejszyć z_j.

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.

Kilian Batzner
źródło
Cześć, czy możesz wyjaśnić to stwierdzenie i jak byłeś w stanie oszacować? „, co przy dużych różnicach w z przybliża się do”
London guy
45

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

  1. 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ą.

  2. 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ą.

Brett
źródło
2
Aby dodać do poprzednich komentarzy, pochodną funkcji softmax jest po prostu softmax (1-softmax)
Rouzbeh
11
Mam powody, dla których używam Cross-Entropy Loss, ale jak to się ma do softmax? Powiedziałeś, że "funkcja softmax może być postrzegana jako próba zminimalizowania krzyżowej entropii między przewidywaniami a prawdą". Załóżmy, że użyłbym normalizacji standardowej / liniowej, ale nadal używam straty krzyżowej entropii. Wtedy też spróbuję zminimalizować Cross-Entropię. Więc w jaki sposób softmax jest powiązany z cross-entropią oprócz korzyści liczbowych?
Kilian Batzner
18
Jeśli chodzi o perspektywę probabilistyczną: jaka jest motywacja do patrzenia na prawdopodobieństwa logów? Rozumowanie wydaje się być trochę podobne do „Używamy e ^ x w softmax, ponieważ interpretujemy x jako log-prawdopodobieństwa”. Z tego samego rozumowania, co moglibyśmy powiedzieć, używamy e ^ e ^ e ^ x w softmax, ponieważ interpretujemy x jako log-log-log-prawdopodobieństwa (oczywiście przesadzając). Mam liczbowe korzyści płynące z softmax, ale jaka jest teoretyczna motywacja do jej stosowania?
Kilian Batzner
5
@KilianBatzner Jeśli wyjście neuronu jest logarytmicznym prawdopodobieństwem, to sumowanie wyników wielu neuronów jest pomnożeniem ich prawdopodobieństw. Jest to bardziej przydatne niż suma prawdopodobieństw.
alltom
1
@KilianBatzner Jeśli twoje cechy pochodzą z różnych klastrów Gaussa (na klastrze na klasę), możesz uzyskać doskonały klasyfikator (regresja logistyczna). Istnieją dodatkowe warunki, ale zasadniczo możesz uzasadnić / wyprowadzić softmax i logity, zakładając, że chcesz oddzielić klastry gaussowskie.
maksymalnie
16

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.

Victor May
źródło
12
q_i nie reprezentuje niejawnie prawdopodobieństw logów. tylko wtedy, gdy używamy softmax, wyraźnie zakładamy, że tak.
Tom
6

Rozpatrujemy problem klasyfikacji wieloklasowej. Oznacza to, że przewidywana zmienna ymoże przyjąć jedną z kkategorii, gdzie k > 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.

wprowadź jej opis obrazu

GabrielChu
źródło
Jak to działa jako funkcja aktywująca, skoro zwraca tę samą wartość dla „x” i „x + c”?
Suresh Pokharel
1
Ściśle mówiąc, softmaxnie jest funkcją aktywacyjną. Funkcja aktywacji jest operacją elementarną - dając elementowi tensora mądrze wykonując nieliniową operację w celu wytworzenia kolejnego tensora. Ale softmaxjest operacją wektorową, daje znormalizowany wektor, istnieją wewnętrzne zależności między każdym elementem.
GabrielChu
5

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.

torayeff
źródło
3
Normalnie odejmiesz minimum, a następnie podzielisz przez maksimum / sumę. W twoim przypadku to spowodowałoby [0, 1, 3, 4]podział.
ubershmekel
1
@ubershmekel W ten sposób pojawia się problem polegający na tym, że klasie z najmniejszym wynikiem zawsze zostanie przypisane prawdopodobieństwo równe 0.
Alessandro Power
4

Załóżmy, że zmienimy funkcję softmax, aby aktywacje wyjścia były podane przez wprowadź opis obrazu tutaj

gdzie cjest dodatnia stała. Należy pamiętać, że c=1odpowiada standardowej funkcji softmax. Ale jeśli użyjemy innej wartości c, 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 pozwolimy cstać się dużym, tj c→∞. Jaka jest wartość graniczna dla aktywacji wyjść a^L_j? Po rozwiązaniu tego problemu powinno być dla Ciebie jasne, dlaczego myślimy o c=1funkcji 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).

O mój Boże
źródło
Dla mnie idea „zmiękczonej” wersji funkcji maksymalnej jest najlepszym prostym sposobem na uzasadnienie stosowania softmaxu.
tashuhka
3

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:

wprowadź opis obrazu tutaj

negas
źródło
2

Wybór funkcji softmax wydaje się w pewien sposób arbitralny, ponieważ istnieje wiele innych możliwych funkcji normalizujących. Nie jest zatem jasne, dlaczego strata log-softmax miałaby być skuteczniejsza niż inne alternatywy strat.

Z „ Badania alternatywnych rozwiązań Softmax należących do rodziny strat sferycznychhttps://arxiv.org/abs/1511.05042

Autorzy zbadali kilka innych funkcji, wśród których jest ekspansja Taylora exporaz tzw. Sferyczny softmax i odkryli, że czasami mogą one działać lepiej niż zwykle softmax.

Roman Kh
źródło