Softmax vs funkcja Sigmoid w klasyfikatorze logistycznym?


62

Co decyduje o wyborze funkcji (Softmax vs Sigmoid) w klasyfikatorze logistycznym?

Załóżmy, że istnieją 4 klasy wyjściowe. Każda z powyższych funkcji podaje prawdopodobieństwo, że każda klasa będzie poprawnym wyjściem. Który wziąć do klasyfikatora?


16
Funkcja softmax to nic innego jak uogólnienie sigmoidu, więc nie jest do końca jasne, co rozumiesz przez „softmax vs. sigmoid”.
dsaxton,

2
Tak jest w przypadku sigmoidu. Kiedy używamy sigmoid, jedna klasa ma prawdopodobieństwo a druga ma prawdopodobieństwo . exp(βTx)/(exp(βTx)+1)1/(exp(βTx)+1)
dsaxton,

3
Plakat reddit wprowadza rozróżnienie, które moim zdaniem jest błędne lub przynajmniej nieistotne. To, czy jedna z klas ma wagę, jest tylko kwestią przesunięcia wyników, co nie ma wpływu na prawdopodobieństwo.
dsaxton,


3
„nie jest do końca jasne, co rozumiesz przez„ softmax vs. sigmoid ”.” Tuż pod tytułem znajduje się treść pytania - bardzo łatwo go przeoczyć, wiem. Plus, to dobry tytuł, aby kierować zapytania Google, aby przybyć tutaj, aby odpowiedzieć dokładnie na to, o co pytano.
michael

Odpowiedzi:


77

Funkcja sigmoidalna jest używana do regresji logistycznej dwuklasowej, podczas gdy funkcja softmax jest używana do regresji logistycznej wieloklasowej (aka MaxEnt, wielomianowa regresja logistyczna, regresja softmax, maksymalny klasyfikator Entropii).


W dwuklasowej regresji logistycznej przewidywane prawdopodobieństwa są następujące przy użyciu funkcji sigmoidalnej:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

W wieloklasowej regresji logistycznej z klasami przewidywane prawdopodobieństwa są następujące, przy użyciu funkcji softmax:K

Pr(Yi=k)=eβkXi 0cKeβcXi

Można zauważyć, że funkcja softmax jest rozszerzeniem funkcji sigmoidalnej na przypadek wieloklasowy, jak wyjaśniono poniżej. Spójrzmy na wieloklasową regresję logistyczną z klasami :K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

z . Widzimy, że uzyskujemy takie same prawdopodobieństwa jak w dwuklasowej regresji logistycznej za pomocą funkcji sigmoidalnej. Wikipedia rozwija się nieco bardziej.β=(β0β1)


1
Jestem naiwny w tym, ale widzę to przez długi czas β = - (β0 − β1) Co może być możliwym wytłumaczeniem? O ile wiem w Sigmoidach β byłoby wektorem. I zwykle są one jednym dla danego przebiegu. Dlaczego więc na zdjęciu widać β0 i β1?
Ishan Bhatt

1
@IshanBhatt ten komentarz może pomóc.
Tom Hale

o dziwo, nadal mogę się regresować do wieloklasowych za pomocą sigmoid :)
datdinhquoc

15

W rzeczywistości są one równoważne w tym sensie, że jedno można przekształcić w drugie.

Załóżmy, że twoje dane są reprezentowane przez wektor o dowolnym wymiarze i zbudowałeś dla niego binarny klasyfikator, używając transformacji afinicznej, po której następuje softmax:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

Przekształćmy go w równoważny binarny klasyfikator, który używa sigmoidu zamiast softmax. Przede wszystkim musimy zdecydować, jakie jest prawdopodobieństwo, że sigmoid (co może dotyczyć klasy lub ). Ten wybór jest absolutnie dowolny, dlatego wybieram klasę . Następnie mój klasyfikator będzie miał postać:C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

Klasyfikatory są równoważne, jeśli prawdopodobieństwa są takie same, dlatego musimy narzucić:

σ(z)=softmax(z0)

Wymiana , oraz ich wyrażenia w kategoriach i i robi niektóre proste algebraicznych manipulacji, można sprawdzić, czy równość powyżej posiada tylko wtedy, gdy i są przez:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@ null Ok, jeśli o to poprosisz, to nie zrozumiałeś mojego wyjaśnienia. Pozwól, że zajmę się twoim konkretnym problemem: jeśli powiesz mi, że podajesz swoje dane sigmoidowi, to musi to być liczba jednowymiarowa, . Gdy podajesz go sigmoidowi, otrzymujesz prawdopodobieństwo, że będzie w jednej z twoich dwóch klas, na przykład : . Zatem prawdopodobieństwo jest w wynosi: . Teraz zamieńmy sigmoid na softmax. (Ciąg dalszy nastąpi). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(Kontynuacja). Aby zastosować softmax do problemu klasyfikacji z dwiema klasami, potrzebujesz przekształcić swoje jednowymiarowe dane w dwuwymiarowy wektor. Dlatego musimy zdefiniować nasze i . Wybierzmy . Ponieważ musi spełniać , mamy , więc . Teraz mamy i . Za pomocą tego możesz natychmiast sprawdzić, czy . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

Ponadto każda kombinacja i która spełnia (to znaczy ), prowadziłaby do dokładnie tego samego wyniku. To pokazuje, że softmax ma jeden parametr redundantny. Chociaż może się to wydawać głupie, jest to w rzeczywistości interesująca właściwość, ponieważ pozwala na normalizację parametrów , co sprzyja stabilności numerycznej algorytmu uczenia się i wnioskowania. Ale to tylko dodatkowy komentarz, nie jest ważne, aby odpowiedzieć na twoje pytanie :)w0w1w=w0w11=w1w0wi
D ...

Wielkie dzięki. Mam to. W pierwszym komentarzu prawdopodobieństwo powinno prawdopodobnie wynosić . Teraz rozumiem, jaki jest zamysł transformacji. P(C1|x)1σ(x)
zero

Cieszę się, że to zrozumiałeś;) Tak, to literówka, oczywiście powinna to być . Dzięki za wskazanie tego! P(C1|x)=1σ(x)
D ...

8

Zauważyłem, że ludzie często kierują się na to pytanie, szukając, czy użyć sigmoid vs softmax w sieciach neuronowych. Jeśli jesteś jedną z osób budujących klasyfikator sieci neuronowej, oto jak zdecydować, czy zastosować sigmoid czy softmax do surowych wartości wyjściowych z twojej sieci:

  • Jeśli masz problem z klasyfikacją wielu etykiet = istnieje więcej niż jedna „prawidłowa odpowiedź” = dane wyjściowe NIE wykluczają się wzajemnie, następnie użyj funkcji sigmoid na każdym surowym wyjściu niezależnie. Sigmoid pozwoli ci mieć wysokie prawdopodobieństwo dla wszystkich twoich klas, niektórych z nich lub żadnej z nich. Przykład: klasyfikowanie chorób na zdjęciu rentgenowskim klatki piersiowej. Obraz może zawierać zapalenie płuc, rozedmę płuc i / lub raka, lub żaden z tych wyników.
  • Jeśli masz problem z klasyfikacją wielu klas = istnieje tylko jedna „prawidłowa odpowiedź” = dane wyjściowe wykluczają się wzajemnie, a następnie użyj funkcji softmax. Softmax wymusi, że suma prawdopodobieństwa twoich klas wyjściowych jest równa jednej, więc aby zwiększyć prawdopodobieństwo określonej klasy, twój model musi odpowiednio zmniejszyć prawdopodobieństwo co najmniej jednej z pozostałych klas. Przykład: klasyfikowanie obrazów z zestawu danych MNIST odręcznych cyfr. Pojedynczy obraz cyfry ma tylko jedną prawdziwą tożsamość - obraz nie może być jednocześnie 7 i 8.

Odniesienie: aby uzyskać bardziej szczegółowe wyjaśnienie, kiedy należy zastosować sigmoid kontra softmax w projektowaniu sieci neuronowej, w tym przykładowe obliczenia, zobacz ten artykuł: „Klasyfikacja: Sigmoid vs. Softmax”.


-1

Dodając do wszystkich poprzednich odpowiedzi - chciałbym wspomnieć o tym, że każdy problem z klasyfikacją wielu klas można sprowadzić do wielu problemów z klasyfikacją binarną za pomocą metody „jeden na wszystkich”, tj. Posiadania sigmoidów C (gdy C jest liczbą klas) i interpretowanie każdej sigmoidy jako prawdopodobieństwa bycia w tej konkretnej klasie lub nie, i przyjmowanie maksymalnego prawdopodobieństwa.

Na przykład w przykładzie cyfr MNIST można użyć softmax lub dziesięciu sigmoidów. W rzeczywistości to właśnie robi Andrew Ng w swoim kursie Coursera ML. Możesz sprawdzić tutaj, jak Andrew Ng użył 10 sigmoidów do klasyfikacji wieloklasowej (dostosowanej przeze mnie z Matlaba do Pythona), a oto moja adaptacja softmax w pythonie.

Warto również zauważyć, że chociaż funkcje są równoważne (dla celów klasyfikacji wieloklasowej) różnią się nieco pod względem implementacji (szczególnie w odniesieniu do ich pochodnych i sposobu reprezentowania y).

Dużą zaletą korzystania z wielu klasyfikacji binarnych (tj. Sigmoidów) w porównaniu z pojedynczą klasyfikacją wieloklasową (tj. Softmax) - jest to, że jeśli softmax jest zbyt duży (np. Jeśli używasz osadzenia jednego słowa na gorąco o rozmiarze słownika 10 K lub większym ) - szkolenie go może być nieefektywne. Zamiast tego możesz wziąć niewielką część zestawu treningowego i użyć go do treningu tylko niewielkiej części sigmoidów. Jest to główna idea negatywnego próbkowania .


Funkcje nie są równoważne, ponieważ sieć softmax jest ograniczona do generowania rozkładu prawdopodobieństwa między klasami jako wyjściami: wektor jest nieujemny i sumuje się do 1. Jednostki sigmoidalne są nieujemne, ale mogą sumować się do dowolnej liczby między 0 a ; nie jest to prawidłowy rozkład prawdopodobieństwa. To rozróżnienie ma kluczowe znaczenie dla scharakteryzowania różnic między tymi dwiema funkcjami. CC
Przywróć Monikę

Jaka jest twoja definicja ekwiwalentu? Mój jest: możesz użyć albo do klasyfikacji wieloklasowej bez żadnego problemu. Ponadto - każda klasyfikacja wieloklasowa, która używa softmax, może zostać przekształcona w klasyfikację binarną jeden na wszystkich używającą sigmoidów. Dlaczego powinienem przejmować się rozkładem wyników sumujących się na 1?
David Refaeli

Twój argument dotyczący klasyfikacji wielu etykiet pokazuje, dlaczego sigmoid i softmax nie są równoważne. Przy zastosowaniu softmax, zwiększenie prawdopodobieństwa jednej klasy zmniejsza całkowite prawdopodobieństwo wszystkich pozostałych klas (z powodu sumy do 1). Przy użyciu sigmoidu zwiększenie prawdopodobieństwa jednej klasy nie zmienia całkowitego prawdopodobieństwa innych klas. Ta obserwacja jest przyczyną , dla której sigmoid jest prawdopodobny do klasyfikacji wieloznakowej: pojedynczy przykład może należeć do klasSuma-do-1 jest również przyczyną, dla której softmax nie nadaje się do klasyfikacji wieloznakowej. 0,1,2,,C
Przywróć Monikę

Straciłem cię. Dla wszystkich praktycznych celów, które znam, wiele sigmoidów = 1 softmax. Dodałem nawet przypadek negatywnego próbkowania, w którym wiele sigmoidów faktycznie ma przewagę nad softmax.
David Refaeli
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.