W klasyfikatorze softmax, po co używać funkcji exp do normalizacji?


30

Dlaczego warto używać softmax zamiast standardowej normalizacji? W obszarze komentarza górnej odpowiedzi na to pytanie @Kilian Batzner podniósł 2 pytania, które również bardzo mnie dezorientują. Wydaje się, że nikt nie wyjaśnia tego, oprócz korzyści liczbowych.

Dostaję powody, dla których korzystam z Cross-Entropy Loss, ale jak to się ma do softmax? Powiedziałeś „funkcja softmax może być postrzegana jako próba zminimalizowania entropii krzyżowej między przewidywaniami a prawdą”. Załóżmy, że użyłbym normalizacji standardowej / liniowej, ale nadal korzystałbym ze strat strat krzyżowych. Potem też spróbuję zminimalizować Cross-Entropy. Więc w jaki sposób softmax jest powiązany z Cross-Entropy, z wyjątkiem korzyści numerycznych?

Co do poglądu probabilistycznego: jaka jest motywacja do przyjrzenia się prawdopodobieństwom dziennika? Rozumowanie wydaje się być trochę takie jak: „Używamy e ^ x w softmax, ponieważ interpretujemy x jako log-prawdopodobieństwa”. Z tym samym rozumowaniem, co moglibyśmy powiedzieć, używamy e ^ e ^ e ^ x w softmax, ponieważ interpretujemy x jako log-log-log-prawdopodobieństwa (przesadzając tutaj, oczywiście). Dostaję numeryczne zalety softmax, ale jaka jest teoretyczna motywacja do korzystania z niego?


Jest różniczkowalny, prowadzi do nieujemnych wyników (takich, które byłyby konieczne dla prawdopodobieństwa, aby można było obliczyć entropię krzyżową) i zachowuje się jak funkcja maksimum, co jest odpowiednie w ustawieniu klasyfikacji. Witamy na stronie!
Emre

@ Emre Thanks! Ale co oznacza „zachowuje się jak funkcja maksimum”? Poza tym, jeśli mam inną funkcję, która jest również zróżnicowana, monotoniczny i prowadzi do nieujemnych wyników, czy mogę go użyć do zastąpienia funkcji exp we wzorze?
Hans

Kiedy normalizujesz używając , największy argument zostaje zmapowany na 1, podczas gdy reszta zostaje zmapowana na zero, ze względu na wzrost funkcji wykładniczej. max
Emre

Odpowiedzi:


37

To coś więcej niż tylko liczba. Szybkie przypomnienie softmax:

P(y=j|x)=exjk=1Kexk

Gdzie jest wektorem wejściowym o długości równej liczbie klas KxK . Funkcja softmax ma 3 bardzo miłe właściwości: 1. normalizuje dane (generuje właściwy rozkład prawdopodobieństwa), 2. jest różniczkowalna i 3. wykorzystuje wspomniany exp. Kilka ważnych punktów:

  1. Funkcja strat nie jest bezpośrednio związana z softmax. Możesz użyć standardowej normalizacji i nadal używać entropii krzyżowej.

  2. Funkcji „hardmax” (tj. Argmax) nie można rozróżnić. Softmax daje co najmniej minimalne prawdopodobieństwo wszystkim elementom w wektorze wyjściowym, a zatem jest ładnie różnicowalny, stąd termin „miękki” w softmax.

  3. Teraz przechodzę do twojego pytania. w Softmax jest naturalną funkcją wykładniczą. Przed normalizacją przekształcamy x jak na wykresie e x :exex

natural exponential function

Jeśli wynosi 0, to y = 1 , jeśli x to 1, to y = 2,7 , a jeśli x to 2, teraz y = 7 ! Ogromny krok! Jest to tak zwana nieliniowa transformacja naszych nienormalizowanych wyników dziennika. Interesującą właściwością funkcji wykładniczej w połączeniu z normalizacją w softmax jest to, że wysokie wyniki w x stają się znacznie bardziej prawdopodobne niż niskie.xy=1xy=2.7xy=7x

Przykładem . Powiedz , a wynik logarytmu x to wektor [ 2 , 4 , 2 , 1 ]K=4x[2,4,2,1] . Wyjście prostej funkcji argmax:

[0,1,0,0]

Argmax jest celem, ale nie można go rozróżnić i nie możemy z nim trenować naszego modelu :( Prosta normalizacja, którą można rozróżnić, generuje następujące prawdopodobieństwa:

[0.2222,0.4444,0.2222,0.1111]

To naprawdę dalekie od argmax! :( Podczas gdy softmax wyprowadza:

[0.1025,0.7573,0.1025,0.0377]

To znacznie bliżej argmax! Ponieważ używamy naturalnego wykładnika, znacznie zwiększamy prawdopodobieństwo największego wyniku i zmniejszamy prawdopodobieństwo niższych wyników w porównaniu ze standardową normalizacją. Stąd „max” w softmax.


3
Świetna informacja. Jednak zamiast używać e, co powiesz na ciągłe powiedzmy 3 lub 4? Czy wynik będzie taki sam?
Cheok Yan Cheng

7
@CheokYanCheng, tak. Ale ema ładniejszą pochodną;)
vega

Widziałem, że wynik softmax jest zwykle używany jako prawdopodobieństwo przynależności do każdej klasy. Jeśli wybór „e” zamiast innej stałej jest arbitralny, nie ma sensu patrzeć na to pod względem prawdopodobieństwa, prawda?
javierdvalle

@vega Przepraszam, ale wciąż nie rozumiem, jak to odpowiada na pytanie: dlaczego nie użyć e ^ e ^ e ^ e ^ e ^ x z tych samych powodów? Proszę wyjaśnić
Gulzar,

@jvalle to nie esprawia, że ​​można go interpretować jako prawdopodobieństwo, to fakt, że każdy element wyniku softmax jest ograniczony w [0,1], a całość sumuje się do 1.
vega

2

Oprócz wyjaśnień Vegi

zdefiniujmy ogólny softmax:

P(y=j|x)=ψxjk=1Kψxk
gdzieψjest stałą> = 1

jeśli ψ=1 , to jesteś bardzo daleki od argmax, jak wspomniano @vega.

Załóżmy teraz, że ψ=100 , teraz jesteś bardzo blisko argmax, ale masz też naprawdę małe liczby dla wartości ujemnych i duże liczby dla dodatnich. Liczby te łatwo przekraczają limit arytmetyczny liczby zmiennoprzecinkowej (na przykład maksymalny limit numpy float64 wynosi 10308 ). Ponadto, nawet jeśli wybór wynosi ψ=e który jest znacznie mniejszy niż 100 , frameworki powinny implementować bardziej stabilną wersję softmax (mnożąc zarówno licznik, jak i mianownik ze stałą C ), ponieważ wyniki stają się zbyt małe, aby móc wyrazić za pomocą taka precyzja.

Więc chcesz wybrać stałą wystarczająco dużą, aby dobrze przybliżać argmax, a także wystarczająco małą, aby wyrazić te duże i małe liczby w obliczeniach.

I oczywiście, e ma również całkiem miły pochodną.


2

To pytanie jest bardzo interesujące. Nie znam dokładnego powodu, ale myślę, że można by wyjaśnić użycie funkcji wykładniczej za pomocą następującego powodu. Ten post jest inspirowany mechaniką statystyczną i zasadą maksymalnej entropii.

Będzie to wyjaśnić za pomocą przykładu z N obrazów, które są utworzone z n1 obrazów z grupy C1 , n2 obrazów z klasy C2 , ..., a nK obrazy z klasy CK . Następnie zakładamy, że nasza sieć neuronowa była w stanie zastosować nieliniowa przekształcić na zdjęcia, dzięki czemu możemy przypisać poziom energii „” Ek do wszystkich klas. Zakładamy, że energia ta ma skalę nieliniową, co pozwala nam na liniowe rozdzielenie obrazów.

Średnia energia E¯ jest powiązana z innymi energiami Ek przez następujący związek

NE¯=k=1KnkEk.()

Jednocześnie widzimy, że całkowitą liczbę obrazów można obliczyć jako następującą sumę

N=k=1Knk.()

Główną ideą zasady maksymalnej entropii jest to, że liczba obrazów w odpowiednich klasach jest rozdzielona w taki sposób, że liczba możliwych kombinacji dla danej dystrybucji energii jest zmaksymalizowana. Mówiąc prościej, system prawdopodobnie nie przejdzie do stanu, w którym mamy tylko klasę n1 nie przejdzie też do stanu, w którym mamy taką samą liczbę obrazów w każdej klasie. Ale dlaczego tak jest? Gdyby wszystkie obrazy były w jednej klasie, system miałby bardzo niską entropię. Drugi przypadek byłby również bardzo nienaturalną sytuacją. Bardziej prawdopodobne jest, że będziemy mieli więcej zdjęć o umiarkowanej energii i mniej zdjęć o bardzo wysokiej i bardzo niskiej energii.

Entropia wzrasta wraz z liczbą kombinacji, w których możemy podzielić N obrazów na klasy obrazów n1 , n2 , ..., nK o odpowiedniej energii. Tę liczbę kombinacji podaje współczynnik wielomianowy

(N!n1!,n2!,,nK!)=N!k=1Knk!.

Spróbujemy zmaksymalizować tę liczbę, zakładając, że mamy nieskończenie wiele obrazów N . Ale jego maksymalizacja ma również ograniczenia równości () i () . Ten typ optymalizacji nazywany jest optymalizacją ograniczoną. Możemy rozwiązać ten problem analitycznie, stosując metodę mnożników Lagrange'a. Wprowadzamy mnożniki Lagrange'a β i α dla ograniczeń równości i wprowadzamy Lagrange Funktion L(n1,n2,,nk;α,β) .

L(n1,n2,,nk;α,β)=N!k=1Knk!+β[k=1KnkEkNE¯]+α[Nk=1Knk]

Nnk

lnn!=nlnnn+O(lnn).

lnn!n

nk~

Lnk~=lnnk~1α+βEk~.

Jeśli ustawimy tę pochodną cząstkową na zero, możemy ją znaleźć

nk~=exp(βEk~)exp(1+α).()

()

exp(1+α)=1Nk=1Kexp(βEk).

()

nk~=exp(βEk~)1Nk=1Kexp(βEk).

Jeśli zdefiniujemy nk~/N. jako prawdopodobieństwo klasy dok~ przez pk~ otrzymamy coś, co jest naprawdę podobne do funkcji softmax

pk~=exp(βmik~)k=1K.exp(βmik).

To pokazuje nam, że funkcja softmax jest funkcją maksymalizującą entropię w rozkładzie obrazów. Od tego momentu sensowne jest wykorzystywanie tego jako dystrybucji obrazów. Jeśli ustawimyβmik~=wkT.x dokładnie otrzymujemy definicję funkcji softmax dla kth wydajność.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.