Jakie jest znaczenie słowa logits w TensorFlow?


250

W poniższej funkcji TensorFlow musimy zasilać aktywację sztucznych neuronów w końcowej warstwie. Że rozumiem Ale nie rozumiem, dlaczego nazywa się to logitami? Czy to nie jest funkcja matematyczna?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)

Odpowiedzi:


215

Logity to przeciążony termin, który może oznaczać wiele różnych rzeczy:


Matematyczne , logit to funkcja prawdopodobieństw (mapuje [0, 1]) do R ( (-inf, inf))

enter image description here

Prawdopodobieństwo 0,5 odpowiada logitowi 0. Logit ujemny odpowiada prawdopodobieństwom mniejszym niż 0,5, dodatnim> 0,5.

W ML , to może być

wektor surowych (nienormalizowanych) prognoz generowanych przez model klasyfikacyjny, który zwykle jest następnie przekazywany do funkcji normalizacyjnej. Jeśli model rozwiązuje problem klasyfikacji wielu klas, dzienniki zwykle stają się danymi wejściowymi do funkcji softmax. Funkcja softmax następnie generuje wektor (znormalizowanych) prawdopodobieństw z jedną wartością dla każdej możliwej klasy.

Logity czasami odnoszą się również do odwrotności elementowej funkcji sigmoidalnej.


127
Dla Tensorflow: Uważa się, że jest to nazwa, która sugeruje, że ten Tensor jest wielkością mapowaną na prawdopodobieństwa przez Softmax.
Thertweck

1
czy to jest to samo co rzecz, która zostaje potęgowana przed softmax? czyli softmax(logit) = exp(logit)/Z(logit)wtedy logit = h_NN(x)? więc logit jest taki sam jak „wynik”?
Charlie Parker

4
Osobiste zrozumienie, w domenie TensorFlow, logity są wartościami, które mają być użyte jako dane wejściowe do softmax. Doszedłem do tego zrozumienia w oparciu o samouczek dotyczący tensorflow.
Diansheng

2
Nie jestem pewien, czy to odpowiada na pytanie. Może dlatego nigdy nie został zaakceptowany. Rozumiem, czym jest funkcja logit, ale zastanawia mnie również, dlaczego Tensorflow nazywa te argumenty logami. Jest to również to samo oznaczenie kilku parametrów w funkcjach
Tensorflow

1
Greate! Czy możesz podać prosty przykład? Czy to jest poprawne? [1, 0.5, 0.5]poprzez normalizację stają się, [0.5, 0.25, 0.25]a następnie miękkie maksimum stają się [0,]jednym gorącym [1, 0, 0]? lub po prostu umieścić, [1, 0, 0]ponieważ wynik powinien być wektorem?
Tina Liu,

91

Po prostu dodając to wyjaśnienie, aby każdy, kto przewinie tak dużo w dół, może przynajmniej dobrze to zrobić, ponieważ jest tak wiele błędnych odpowiedzi w głosowaniu.

Diansheng's odpowiedź i JakeJ za odpowiedź zrobić to dobrze.
Nowa odpowiedź opublikowana przez Shital Shah jest jeszcze lepszą i bardziej kompletną odpowiedzią.


Tak, logit jako matematyka funkcja w statystyce, ale logitstosowana w kontekście sieci neuronowych jest inna. Statystyka logitnie ma tu nawet żadnego sensu.


Nigdzie nie mogłem znaleźć formalnej definicji, ale w logitzasadzie oznacza:

Surowe prognozy, które wychodzą z ostatniej warstwy sieci neuronowej.
1. Jest to tensor, na który nakładaszargmax funkcję, aby uzyskać przewidywaną klasę.
2. Jest to tensor, który wprowadzasz do softmaxfunkcji, aby uzyskać prawdopodobieństwa dla przewidywanych klas.


Ponadto z samouczka na oficjalnej stronie tensorflow:

Warstwa logów

Ostatnią warstwą w naszej sieci neuronowej jest warstwa logów, która zwróci surowe wartości dla naszych prognoz. Tworzymy gęstą warstwę z 10 neuronami (po jednym dla każdej klasy docelowej 0–9), z aktywacją liniową (domyślnie):

logits = tf.layers.dense(inputs=dropout, units=10)

Jeśli nadal jesteś zdezorientowany, sytuacja wygląda następująco:

raw_predictions = neural_net(input_layer)
predicted_class_index_by_raw = argmax(raw_predictions)
probabilities = softmax(raw_predictions)
predicted_class_index_by_prob = argmax(probabilities)

gdzie predicted_class_index_by_rawi predicted_class_index_by_probbędą równe.

Inną nazwą raw_predictionsw powyższym kodzie jestlogit .


Co do dlaczego logit ... nie mam pojęcia. Przepraszam.
[Edycja: patrz tę odpowiedź, aby poznać historyczne motywy tego terminu.]


Drobnostki

Chociaż, jeśli chcesz, możesz zastosować statystyki logitdoprobabilities które wyjdzie z softmaxfunkcji.

Jeśli prawdopodobieństwo pewnej klasy jest p,
to log-odds dla tej klasy jest L = logit(p).

Prawdopodobieństwo tej klasy można również odzyskać za p = sigmoid(L)pomocąsigmoid funkcji.

Jednak niezbyt przydatne do obliczania logarytmicznych szans.


80

Logit jest funkcją, która odwzorowuje prawdopodobieństwa [0, 1]do [-inf, +inf].

Softmax to funkcja, która odwzorowuje [-inf, +inf]na [0, 1]podobną do Sigmoid. Ale Softmax normalizuje również sumę wartości (wektor wyjściowy) na 1.

Tensorflow „z logitem” : Oznacza to, że stosuje się funkcję softmax do rejestrowania liczb w celu jej znormalizowania. Wektor_wejściowy / logit nie jest znormalizowany i może być skalowany od [-inf, inf].

Ta normalizacja jest stosowana w przypadku problemów z klasyfikacją wieloklasową. W przypadku problemów z klasyfikacją wielopłaszczyznową stosuje się normalizację sigmoidalną, tjtf.nn.sigmoid_cross_entropy_with_logits


10
więc logit jest taki sam jak „wynik”
Charlie Parker

1
Sugeruję dodanie do odpowiedzi linii wyraźnego różnicowania Logitfunkcji (statystyki) i logitswarstwy (tensorflow)
AneesAhmed777

62

Podsumowanie

W kontekście głębokiego uczenia się warstwa logów oznacza warstwę, która zasila softmax (lub inną taką normalizację). Dane wyjściowe softmax są prawdopodobieństwami dla zadania klasyfikacji, a jego dane wejściowe to warstwa logów. Warstwa logitów zwykle wytwarza wartości od-nieskończoności do + nieskończoności, a warstwa softmax przekształca ją w wartości od 0 do 1.

Kontekst historyczny

Skąd pochodzi ten termin? W latach 30. i 40. kilka osób próbowało dostosować regresję liniową do problemu przewidywania prawdopodobieństw. Jednak regresja liniowa generuje dane wyjściowe od-nieskończoności do + nieskończoności, podczas gdy dla prawdopodobieństw pożądana wartość wyjściowa wynosi od 0 do 1. Jednym ze sposobów jest jakoś odwzorowanie prawdopodobieństwa od 0 do 1 do nieskończoności do + nieskończoności, a następnie jak zwykle zastosować regresję liniową. Jednym z takich mapowań jest skumulowany rozkład normalny, który został użyty przez Chestera Ittnera Blissa w 1934 roku i nazwał ten model „probit”, skrótem od „jednostki prawdopodobieństwa”. Jednak ta funkcja jest kosztowna obliczeniowo, a jednocześnie nie posiada niektórych pożądanych właściwości do klasyfikacji wielu klas. W 1944 r. Joseph Berkson skorzystał z tej funkcjilog(p/(1-p))aby wykonać to mapowanie i nazwać to logit, skrót od „jednostka logistyczna”. Z tego również wywodzi się termin regresja logistyczna.

Zamieszanie

Niestety, termin logity jest nadużywany w głębokim uczeniu się. Z czysto matematycznego punktu widzenia logit jest funkcją, która wykonuje powyżej mapowania. Podczas głębokiego uczenia się ludzie zaczęli nazywać warstwę „warstwą logów”, która zasila funkcję logit. Następnie ludzie zaczęli nazywać wartości wyjściowe tej warstwy „logit”, co powoduje zamieszanie w funkcji logit .

Kod TensorFlow

Niestety kod TensorFlow dodatkowo wprowadza zamieszanie w nazwach takich jak tf.nn.softmax_cross_entropy_with_logits. Co oznaczają tutaj logi? Oznacza to po prostu, że wejście funkcji ma być wyjściem ostatniej warstwy neuronu, jak opisano powyżej. _with_logitsPrzyrostek jest zbędne, kłopotliwe i sensu . Funkcje powinny być nazywane bez względu na bardzo specyficzne konteksty, ponieważ są to po prostu operacje matematyczne, które można wykonać na wartościach pochodzących z wielu innych domen. W rzeczywistości TensorFlow ma inną podobną funkcję, sparse_softmax_cross_entropygdzie na szczęście zapomniało dodać _with_logitsprzyrostek, tworząc niespójność i wprowadzając zamieszanie. Z drugiej strony PyTorch po prostu określa swoją funkcję bez tego rodzaju przyrostków.

Odniesienie

Te slajdy wykładowe Logit / probitowe jest jednym z najlepszym źródłem do zrozumienia logit. Zaktualizowałem również artykuł w Wikipedii, podając niektóre z powyższych informacji.


31

Osobiste zrozumienie, w domenie TensorFlow, logity są wartościami, które należy wykorzystać jako dane wejściowe do softmax. Doszedłem do tego zrozumienia w oparciu o samouczek dotyczący tensorflow.

https://www.tensorflow.org/tutorials/layers


Chociaż prawdą jest, że logit jest funkcją w matematyce (szczególnie w statystyce), nie sądzę, że to ten sam „logit”, na który patrzysz. W książce Deep Learning autorstwa Iana Goodfellowa wspomniał:

Funkcja σ −1 (x) nazywa się logit w statystykach, ale ten termin jest rzadziej używany w uczeniu maszynowym. σ −1 (x) oznacza odwrotną funkcję logistycznej funkcji sigmoidalnej.

W TensorFlow jest często postrzegany jako nazwa ostatniej warstwy. W rozdziale 10 książki Hands-on Machine Learning with Scikit-learn i TensorFLow autorstwa Aurélien Géron natknąłem się na ten akapit, który logitswyraźnie określał warstwę.

zauważ, że logitsjest to wyjście sieci neuronowej przed przejściem przez funkcję aktywacji softmax: ze względów optymalizacyjnych zajmiemy się obliczeniami softmax później.

Oznacza to, że chociaż używamy softmax jako funkcji aktywacji w ostatniej warstwie w naszym projekcie, dla ułatwienia obliczeń wyjmujemy logitsosobno. Wynika to z faktu, że bardziej efektywne jest wspólne obliczanie softmaxi cross-entropystrata. Pamiętaj, że cross-entropyjest to funkcja kosztu, nie używana w propagacji do przodu.


12

Oto zwięzła odpowiedź dla przyszłych czytelników. Tensorflow„y logitjest określony jako wyjście neuronu bez stosowania funkcji aktywacji:

logit = w*x + b,

x: wejście, w: waga, b: błąd. Otóż ​​to.


Poniższe pytanie nie ma znaczenia dla tego pytania.

W przypadku wykładów historycznych przeczytaj inne odpowiedzi. Czapki z głów przed Tensorflow„kreatywną” mylącą konwencją nazewnictwa. W PyTorchjest tylko jedno CrossEntropyLossi akceptuje wyjścia nieaktywowane. Zwoje, mnożenia macierzy i aktywacje są operacjami tego samego poziomu. Projekt jest znacznie bardziej modułowy i mniej skomplikowany. Jest to jeden z powodów, dlaczego przeszedłem od Tensorflowcelu PyTorch.


8

( FOMO sapiens).

Jeśli zaznaczysz funkcję Logit matematyki, konwertuje ona rzeczywistą przestrzeń z [0,1]przedziału na nieskończoność [-inf, inf].

Sigmoid i softmax zrobią dokładnie odwrotnie. Przekształcą [-inf, inf]rzeczywistą przestrzeń w [0, 1]rzeczywistą przestrzeń.

Dlatego w uczeniu maszynowym możemy używać logit przed funkcją sigmoid i softmax (ponieważ są one zgodne).

I dlatego „możemy nazwać” czymkolwiek w uczeniu maszynowym, które poprzedza sigmoid lub softmax, funkcję logit .

Oto wideo J. Hintona używające tego terminu.

PS. Nie polecam oglądać wideo, aby sprawdzić termin.


5

Są one w zasadzie najpełniejszym wyuczonym modelem, jaki można uzyskać z sieci, zanim została ona ograniczona do zastosowania tylko do liczby klas, którymi jesteśmy zainteresowani. Sprawdź, jak niektórzy badacze wykorzystują je do trenowania płytkiej sieci neuronowej w oparciu o głębokość sieć nauczyła się: https://arxiv.org/pdf/1312.6184.pdf

To trochę tak, jakby podczas szczegółowego uczenia się przedmiotu nauczyłeś się wielu drobnych punktów, ale potem, ucząc ucznia, spróbujesz skompresować go do najprostszego przypadku. Gdyby uczeń próbował teraz uczyć, byłoby to dość trudne, ale byłby w stanie opisać to na tyle dobrze, aby używać języka.


1

Funkcja logit (/ ˈloʊdʒɪt / LOH-jit) jest odwrotnością sigmoidalnej funkcji „logistycznej” lub transformacji logistycznej stosowanej w matematyce, zwłaszcza w statystyce. Gdy zmienna funkcji reprezentuje prawdopodobieństwo p, funkcja logit podaje iloraz szansy lub logarytm szansy p / (1 - p).

Zobacz tutaj: https://en.wikipedia.org/wiki/Logit


4
To jest w statystykach / matematyce. Mówimy tutaj o uczeniu maszynowym, gdzie logitma inne znaczenie. Zobacz to , to , to .
AneesAhmed777

1

logity

Wektor surowych (nienormalizowanych) prognoz generowanych przez model klasyfikacyjny, który zwykle jest następnie przekazywany do funkcji normalizacyjnej. Jeśli model rozwiązuje problem klasyfikacji wielu klas, dzienniki zwykle stają się danymi wejściowymi do funkcji softmax. Funkcja softmax następnie generuje wektor (znormalizowanych) prawdopodobieństw z jedną wartością dla każdej możliwej klasy.

Ponadto, logity czasami odnoszą się do odwrotności elementowej funkcji sigmoidalnej. Aby uzyskać więcej informacji, zobacz tf.nn.sigmoid_cross_entropy_with_logits.

oficjalna dokumentacja tensorflow


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.