Funkcja Softmax - Softmax function

Funkcja softmax, znana również jako softargmax lub znormalizowana funkcja wykładnicza , jest uogólnieniem funkcji logistycznej na wiele wymiarów. Jest on stosowany w wielomianu regresji logistycznej i jest często używany jako ostatni funkcji aktywacji z sieci neuronowej do normalizacji wyjście sieci do rozkładu prawdopodobieństwa nad przewidywanymi klasach mocy, w oparciu o wybór aksjomatu Luce .

Funkcja SoftMax której wejścia wprowadzany jest wektor Z z K rzeczywistych numerów i normalizuje się do rozkładu prawdopodobieństwa obejmującej K prawdopodobieństw proporcjonalny do wykładniczych tych liczb. Oznacza to, że przed zastosowaniem softmaxa niektóre składowe wektora mogą być ujemne lub większe niż jeden; i może nie sumować się do 1; ale po zastosowaniu softmax każdy składnik znajdzie się w przedziale , a składniki zsumują się do 1, aby można je było zinterpretować jako prawdopodobieństwa. Co więcej, większe komponenty wejściowe będą odpowiadały większym prawdopodobieństwu.

Standardowa (jednostkowa) funkcja softmax jest określona wzorem

W prostych słowach, stosuje standardową funkcję wykładniczą do każdego elementu wektora wejściowego i normalizuje te wartości, dzieląc przez sumę wszystkich tych wykładników; ta normalizacja zapewnia, że ​​suma składowych wektora wyjściowego wynosi 1.

Zamiast e można zastosować inną podstawę b > 0 . Jeśli 0 < b < 1 , mniejsze komponenty wejściowe spowodują większe prawdopodobieństwa wyjściowe, a zmniejszenie wartości b stworzy rozkłady prawdopodobieństwa, które są bardziej skoncentrowane wokół pozycji o najmniejszych wartościach wejściowych. I odwrotnie, jeśli b > 1 , większe komponenty wejściowe spowodują większe prawdopodobieństwa wyjściowe, a zwiększenie wartości b stworzy rozkłady prawdopodobieństwa, które są bardziej skoncentrowane wokół pozycji o największych wartościach wejściowych. Zapisując lub (dla rzeczywistego β ) otrzymujemy wyrażenia:

W niektórych dziedzinach podstawa jest stała, odpowiadająca ustalonej skali, podczas gdy w innych parametr β jest zmienny.

Interpretacje

Gładki arg max

Nazwa „softmax” jest myląca; funkcja nie jest gładkim maksimum ( gładkim przybliżeniem do maksimum funkcji), ale raczej gładkim przybliżeniem funkcji arg max : funkcji, której wartość jest tym, który indeks ma maksimum. W rzeczywistości termin „softmax” jest również używany dla ściśle powiązanej funkcji LogSumExp , która jest płynnym maksimum. Z tego powodu niektórzy wolą dokładniejszy termin „softargmax”, ale termin „softmax” jest konwencjonalny w uczeniu maszynowym. Ta sekcja używa terminu „softargmax”, aby podkreślić tę interpretację.

Formalnie, zamiast brać pod uwagę arg max jako funkcję z kategorycznym wyjściem (odpowiadającym indeksowi), rozważ funkcję arg max z jednorazową reprezentacją wyjścia (zakładając, że istnieje unikalny maksymalny arg):

gdzie współrzędna wyjściowa wtedy i tylko wtedy, gdy jest arg max of , co oznacza unikalną wartość maksymalną . Na przykład w tym kodowaniu, ponieważ trzeci argument to maksimum.

Można to uogólnić na wiele wartości arg max (wiele równych jest maksimum), dzieląc 1 między wszystkie max args; formalnie 1/ k, gdzie k jest liczbą argumentów przy założeniu maksimum. Na przykład, ponieważ drugi i trzeci argument to maksimum. W przypadku, gdy wszystkie argumenty są równe, jest to po prostu Punkty z z wieloma wartościami arg max są punktami osobliwymi (lub osobliwościami i tworzą zbiór osobliwy) – są to punkty, w których arg max jest nieciągły (ze skokową nieciągłością ) – podczas gdy punkty z pojedynczy arg max są znane jako punkty nieosobliwe lub regularne.

Z ostatnim wyrażeniem podanym we wstępie, softargmax jest teraz gładkim przybliżeniem arg max: as , softargmax zbiega się do arg max. Istnieją różne pojęcia zbieżności funkcji; softargmax zbiega się punktowo do arg max , co oznacza dla każdego ustalonego wejścia z jako , Jednak softargmax nie zbiega się jednostajnie do arg max, co oznacza intuicyjnie, że różne punkty zbiegają się z różnymi szybkościami i mogą zbiegać się dowolnie powoli. W rzeczywistości softargmax jest ciągły, ale arg max nie jest ciągły w zbiorze osobliwym, gdzie dwie współrzędne są równe, podczas gdy jednolita granica funkcji ciągłych jest ciągła. Powodem, dla którego nie udaje się uzyskać jednorodnej zbieżności, jest to, że dla danych wejściowych, w których dwie współrzędne są prawie równe (a jedna jest maksymalną), arg max jest indeksem jednego lub drugiego, więc mała zmiana danych wejściowych powoduje dużą zmianę danych wyjściowych. Na przykład, ale i dla wszystkich danych wejściowych: im bliżej punkty są do zbioru osobliwego , tym wolniej się zbiegają. Jednak softargmax zbiega się kompaktowo w zbiorze nieosobliwym.

Odwrotnie, jak , softargmax zbiega się do arg min w ten sam sposób, gdzie tutaj osobliwy zbiór to punkty z dwiema wartościami arg min . W języku analizy tropikalnej softmax to deformacja lub „kwantyzacja” arg max i arg min, odpowiadająca użyciu log semiring zamiast max-plus semiring (odpowiednio min-plus semiring ) i odzyskaniu arg max lub arg min przyjmując limit nazywa się „tropikalizacją” lub „dekwantyzacją”.

Jest to również przypadek, że dla dowolnego ustalonego β , jeśli jedno wejście jest znacznie większe niż inne w stosunku do temperatury, , wyjście jest w przybliżeniu arg max. Na przykład różnica 10 jest duża w stosunku do temperatury 1:

Jeśli jednak różnica jest niewielka w stosunku do temperatury, to wartość nie jest zbliżona do arg max. Na przykład różnica 10 jest niewielka w stosunku do temperatury 100:

Ponieważ , temperatura dochodzi do zera, więc ostatecznie wszystkie różnice stają się duże (w stosunku do malejącej temperatury), co daje inną interpretację zachowania granicznego.

Teoria prawdopodobieństwa

W teorii prawdopodobieństwa dane wyjściowe funkcji softargmax można wykorzystać do przedstawienia rozkładu jakościowego – to znaczy rozkładu prawdopodobieństwa na K różnych możliwych wyników.

Mechanika statystyczna

W mechanice statystycznej funkcja softargmax jest znana jako rozkład Boltzmanna (lub rozkład Gibbsa ): zbiór indeksów to mikrostany systemu; wejścia są energiami tego stanu; mianownik jest znany jako funkcja podziału , często oznaczana przez Z ; a czynnik β nazywa się chłodem (lub termodynamiczną beta lub odwrotną temperaturą ).

Aplikacje

Funkcja softmax jest wykorzystywana w różnych wieloklasowych metodach klasyfikacji , takich jak wielomianowa regresja logistyczna (znana również jako regresja softmax) [1] , wieloklasowa liniowa analiza dyskryminacyjna , naiwne klasyfikatory Bayesa oraz sztuczne sieci neuronowe . W szczególności, w wielomianowej regresji logistycznej i liniowej analizie dyskryminacyjnej dane wejściowe funkcji są wynikiem K różnych funkcji liniowych , a przewidywane prawdopodobieństwo dla j -tej klasy przy danym wektorze próbki x i wektorze ważenia w wynosi:

Może to być postrzegane jako kompozycja o K liniowej funkcji i funkcji SOFTmax (gdzie oznacza wewnętrzny produkt i ). Operacja ta jest równoważna zastosowaniu operatora liniowego zdefiniowanego przez to vectors , co powoduje przekształcenie oryginalnego, prawdopodobnie wielowymiarowego, danych wejściowych do wektorów w przestrzeni K- wymiarowej .

Sieci neuronowe

Funkcja softmax jest często używana w ostatniej warstwie klasyfikatora opartego na sieci neuronowej. Takie sieci są zwykle trenowane w reżimie utraty logarytmów (lub entropii krzyżowej ), co daje nieliniowy wariant wielomianowej regresji logistycznej.

Ponieważ funkcja odwzorowuje wektor i określony indeks na wartość rzeczywistą, pochodna musi uwzględniać indeks:

Wyrażenie to jest symetryczne w indeksach i dlatego może być również wyrażone jako

Tutaj dla uproszczenia użyto delty Kroneckera (por. pochodna funkcji sigmoidalnej wyrażona przez samą funkcję).

Jeśli funkcja jest skalowana za pomocą parametru , wyrażenia te należy pomnożyć przez .

Zobacz Logit wielomianowy, aby zapoznać się z modelem prawdopodobieństwa, który wykorzystuje funkcję aktywacji softmax.

Nauka wzmacniania

W dziedzinie uczenia się przez wzmacnianie można użyć funkcji softmax do konwersji wartości na prawdopodobieństwa działania. Powszechnie używana funkcja to:

gdzie wartość akcji odpowiada oczekiwanej nagrodzie za następującą akcję a i nazywamy parametrem temperatury (w nawiązaniu do mechaniki statystycznej ). W przypadku wysokich temperatur ( ) wszystkie działania mają prawie takie samo prawdopodobieństwo, a im niższa temperatura, tym więcej oczekiwanych nagród wpływa na prawdopodobieństwo. W przypadku niskiej temperatury ( ) prawdopodobieństwo akcji z najwyższą oczekiwaną nagrodą wynosi 1.

Nieruchomości

Geometrycznie funkcja SoftMax odwzorowuje przestrzeń wektorową do granicy z normą -simplex , cięcie wymiar o jeden (zasięg jest wymiarowa simplex w -wymiarowej przestrzeni), ze względu na ograniczenia liniowego że wszystko suma wyjściowa do 1, co oznacza, że leży na hiperpłaszczyźnie .

Wzdłuż głównej przekątnej softmax jest tylko równomiernym rozkładem na wyjściach : równe wyniki dają równe prawdopodobieństwa.

Mówiąc bardziej ogólnie, softmax jest niezmienny w tłumaczeniu o tę samą wartość w każdej współrzędnej: dodanie do danych wejściowych daje , ponieważ mnoży każdy wykładnik przez ten sam współczynnik (ponieważ ), więc stosunki się nie zmieniają:

Z geometrycznego punktu widzenia softmax jest stały na przekątnych: jest to wymiar, który jest eliminowany i odpowiada temu, że wynik softmaxu jest niezależny od translacji wyników wejściowych (do wyboru 0 punktów). Można znormalizować wyniki wejściowe, zakładając, że suma wynosi zero (odjąć średnią: gdzie ), a następnie softmax przenosi hiperpłaszczyznę punktów, które sumują się do zera , do otwartego simpleksu wartości dodatnich, które sumują się do 1 , analogicznie do jak wykładnik przyjmuje wartość od 0 do 1 i jest dodatni.

Natomiast softmax nie jest niezmienny przy skalowaniu. Na przykład, ale

Standardowych funkcji logistycznej jest szczególnym przypadku osi 1 w przestrzeni trójwymiarowej 2-wymiarowe, powiedzmy x -osiowy w (x, y) płaszczyźnie. Jedna zmienna jest ustalona na 0 (powiedzmy ), więc , a druga zmienna może się różnić, oznacza to , czyli standardową funkcję logistyczną i jej uzupełnienie (co oznacza, że ​​sumują się do 1). Jednowymiarowe dane wejściowe można alternatywnie wyrazić jako linię , z wyjściami i

Funkcja softmax jest również gradientem funkcji LogSumExp , płynnym maksimum :

gdzie funkcja LogSumExp jest zdefiniowana jako .

Historia

Funkcja softmax została wykorzystana w mechanice statystycznej jako rozkład Boltzmanna w fundamentalnej pracy Boltzmann (1868) , sformalizowanej i spopularyzowanej we wpływowym podręczniku Gibbs (1902) .

Użycie softmaxu w teorii decyzji przypisuje się Luce (1959) , która wykorzystała aksjomat niezależności nieistotnych alternatyw w teorii racjonalnego wyboru, aby wydedukować softmax z aksjomatu wyboru Luce dla preferencji względnych.

W uczenia maszynowego, termin „SoftMax” przypisuje się John S. wędzidłem w dwóch 1989 referatów konferencyjnych, Ogłowie (1990a) : a Ogłowie (1990b) :

Zajmujemy się nieliniowymi sieciami typu feed-forward (wielowarstwowymi perceptronami lub MLP) z wieloma wyjściami. Chcemy traktować wyjścia sieci jako prawdopodobieństwa alternatyw ( np. klasy wzorców), uwarunkowane wejściami. Poszukujemy odpowiednich nieliniowości wyjściowych oraz odpowiednich kryteriów dostosowania parametrów sieci ( np. wag). Wyjaśniamy dwie modyfikacje: scoring prawdopodobieństwa, który jest alternatywą dla minimalizacji błędu kwadratowego, oraz znormalizowane wykładnicze ( softmax ) wielowejściowe uogólnienie nieliniowości logistycznej.

Dla każdego wejścia wszystkie wyjścia muszą być dodatnie i muszą sumować się do jedności. ...

Mając zestaw nieograniczonych wartości, możemy zapewnić oba warunki za pomocą znormalizowanego przekształcenia wykładniczego:

Przekształcenie to można uznać za wielowejściowe uogólnienie logistyki, działające na całej warstwie wyjściowej. Zachowuje porządek rang swoich wartości wejściowych i jest różniczkowalnym uogólnieniem operacji „zwycięzca bierze wszystko” polegającej na wybraniu wartości maksymalnej. Z tego powodu lubimy go nazywać softmax .

Przykład

Jeśli weźmiemy dane wejściowe [1, 2, 3, 4, 1, 2, 3], softmax tego wynosi [0,024, 0,064, 0,175, 0,475, 0,024, 0,064, 0,175]. Wyjście ma większość swojej wagi tam, gdzie cyfra „4” znajdowała się na pierwotnym wejściu. Do tego zwykle służy ta funkcja: do podświetlania największych wartości i tłumienia wartości, które są znacznie poniżej wartości maksymalnej. Ale uwaga: softmax nie jest niezmiennikiem skali, więc jeśli dane wejściowe byłyby [0,1, 0,2, 0,3, 0,4, 0,1, 0,2, 0,3] (co daje 1,6), softmax byłby [0,125, 0,138, 0,153, 0,169, 0,125, 0,138, 0,153]. Pokazuje to, że dla wartości pomiędzy 0 a 1 softmax w rzeczywistości nie podkreśla wartości maksymalnej (zauważ, że 0,169 to nie tylko mniej niż 0,475, ale także mniej niż początkowa proporcja 0,4/1,6=0,25).

Obliczenie tego przykładu przy użyciu kodu Pythona :

>>> import numpy as np
>>> a = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
>>> np.exp(a) / np.sum(np.exp(a)) 
array([0.02364054, 0.06426166, 0.1746813, 0.474833, 0.02364054,
       0.06426166, 0.1746813])

Oto przykład kodu Julii :

julia> A = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0];  # semicolon to suppress interactive output

julia> exp.(A) ./ sum(exp.(A))
7-element Array{Float64,1}:
 0.0236405
 0.0642617
 0.174681
 0.474833
 0.0236405
 0.0642617
 0.174681

Oto przykład kodu R :

> z <- c(1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0)
> softmax <- exp(z)/sum(exp(z))
> softmax
[1] 0.02364054 0.06426166 0.17468130 0.47483300 0.02364054 0.06426166 0.17468130

Oto przykład kodu Elixir :

iex> t = Nx.tensor([[1, 2], [3, 4]])
iex> Nx.divide(Nx.exp(t), Nx.sum(Nx.exp(t)))

#Nx.Tensor<
  f64[2][2]
  [
    [0.03205860328008499, 0.08714431874203257],
    [0.23688281808991013, 0.6439142598879722]
  ]
>

Zobacz też

Uwagi

Bibliografia