In der folgenden TensorFlow-Funktion müssen wir die Aktivierung künstlicher Neuronen in der letzten Schicht füttern. Das verstehe ich. Aber ich verstehe nicht, warum es Logits heißt? Ist das nicht eine mathematische Funktion?
loss_function = tf.nn.softmax_cross_entropy_with_logits(
logits = last_layer,
labels = target_output
)
Antworten:
Logits ist ein überladener Begriff, der viele verschiedene Dinge bedeuten kann:
In Math ist Logit eine Funktion, die Wahrscheinlichkeiten (
[0, 1]
) auf R ((-inf, inf)
) abbildet.Eine Wahrscheinlichkeit von 0,5 entspricht einem Logit von 0. Negatives Logit entspricht Wahrscheinlichkeiten von weniger als 0,5, positiv von> 0,5.
In ML kann es sein
Logits beziehen sich manchmal auch auf die elementweise Umkehrung der Sigmoidfunktion.
quelle
softmax(logit) = exp(logit)/Z(logit)
dannlogit = h_NN(x)
? Logit ist also dasselbe wie "Score"?[1, 0.5, 0.5]
durch normalisierung werden[0.5, 0.25, 0.25]
und dann soft max werden[0,]
wenn man heiß ist[1, 0, 0]
? oder einfach nur[1, 0, 0]
ausgeben , weil die Ausgabe ein Vektor sein sollte?Nur diese Klarstellung hinzufügen, damit jeder, der so viel nach unten scrollt, es zumindest richtig machen kann, da es so viele falsche Antworten gibt, die positiv bewertet wurden.
Dianshengs Antwort und JakeJs Antwort machen es richtig.
Eine neue Antwort von Shital Shah ist eine noch bessere und vollständigere Antwort.
Ja,
logit
als mathematische Funktion in der Statistik, aber dielogit
im Zusammenhang mit neuronalen Netzen verwendete ist anders. Statistischlogit
macht hier nicht einmal Sinn.Ich konnte nirgendwo eine formale Definition finden,
logit
bedeutet aber im Grunde:Auch aus einem Tutorial auf der offiziellen Tensorflow-Website:
Wenn Sie immer noch verwirrt sind, ist die Situation wie folgt:
wo
predicted_class_index_by_raw
undpredicted_class_index_by_prob
wird gleich sein.Ein anderer Name für
raw_predictions
im obigen Code istlogit
.Was das Warum betrifftlogit
... Ich habe keine Ahnung. Es tut uns leid.[Bearbeiten: In dieser Antwort finden Sie die historischen Gründe für den Begriff.]
Wissenswertes
Wenn Sie möchten, können Sie jedoch statistische Daten
logit
aufprobabilities
diesoftmax
Funktion anwenden .Wenn die Wahrscheinlichkeit einer bestimmten Klasse ist
p
,dann ist die logarithmische Wahrscheinlichkeit dieser Klasse
L = logit(p)
.Außerdem kann die Wahrscheinlichkeit dieser Klasse
p = sigmoid(L)
mithilfe dersigmoid
Funktion wiederhergestellt werden .Nicht sehr nützlich, um Log-Quoten zu berechnen.
quelle
Logit ist eine Funktion , die Wahrscheinlichkeiten Karten
[0, 1]
zu[-inf, +inf]
.Softmax ist eine Funktion , die Karten
[-inf, +inf]
zu[0, 1]
als Sigmoid ähnlich. Softmax normalisiert aber auch die Summe der Werte (Ausgabevektor) auf 1.Tensorflow "mit Protokoll" : Dies bedeutet, dass Sie eine Softmax-Funktion anwenden, um Zahlen zu protokollieren, um sie zu normalisieren. Der input_vector / logit ist nicht normalisiert und kann von [-inf, inf] skaliert werden.
Diese Normalisierung wird für Klassifizierungsprobleme mit mehreren Klassen verwendet. Und für Multilabel-Klassifizierungsprobleme wird die Sigmoid-Normalisierung verwendet, d. H.
tf.nn.sigmoid_cross_entropy_with_logits
quelle
Logit
Funktion (Statistik) undlogits
Schicht (Tensorflow) explizit unterscheidetZusammenfassung
Im Kontext des tiefen Lernens bedeutet die Logit-Ebene die Ebene, die in Softmax (oder eine andere solche Normalisierung) eingespeist wird. Die Ausgabe des Softmax sind die Wahrscheinlichkeiten für die Klassifizierungsaufgabe und seine Eingabe ist die Protokollschicht. Die Protokollierungsschicht erzeugt normalerweise Werte von -infinity bis + unendlich, und die Softmax-Schicht wandelt sie in Werte von 0 bis 1 um.
Historischer Zusammenhang
Woher kommt dieser Begriff? In den 1930er und 40er Jahren versuchten mehrere Personen, die lineare Regression an das Problem der Vorhersage von Wahrscheinlichkeiten anzupassen. Die lineare Regression erzeugt jedoch eine Ausgabe von -infinity bis + unendlich, während für Wahrscheinlichkeiten unsere gewünschte Ausgabe 0 bis 1 ist. Eine Möglichkeit, dies zu tun, besteht darin, die Wahrscheinlichkeiten 0 bis 1 auf -infinity bis + unendlich abzubilden und dann wie gewohnt die lineare Regression zu verwenden. Eine solche Abbildung ist die kumulative Normalverteilung, die 1934 von Chester Ittner Bliss verwendet wurde, und er nannte dieses "Probit" -Modell, kurz für "Wahrscheinlichkeitseinheit". Diese Funktion ist jedoch rechenintensiv, obwohl einige der wünschenswerten Eigenschaften für die Klassifizierung mehrerer Klassen fehlen. 1944 nutzte Joseph Berkson die Funktion
log(p/(1-p))
um dieses Mapping durchzuführen und es logit zu nennen, kurz für "logistic unit". Daraus leitet sich auch der Begriff logistische Regression ab.Die Verwirrung
Leider wird der Begriff Logs beim Deep Learning missbraucht. Aus rein mathematischer Sicht ist Logit eine Funktion , die über dem Mapping ausgeführt wird. Beim Deep Learning wurde die Ebene "Logits-Ebene" genannt, die in die Logit-Funktion eingespeist wird. Dann begannen die Menschen den Ausgang Aufruf Werte dieser Schicht „Logit“ creating die Verwirrung mit Logit der Funktion .
TensorFlow-Code
Leider führt der TensorFlow-Code zu einer weiteren Verwirrung durch Namen wie
tf.nn.softmax_cross_entropy_with_logits
. Was bedeutet Logits hier? Es bedeutet nur, dass die Eingabe der Funktion die Ausgabe der letzten Neuronenschicht sein soll, wie oben beschrieben. Das_with_logits
Suffix ist redundant, verwirrend und sinnlos . Funktionen sollten ohne Rücksicht auf solche sehr spezifischen Kontexte benannt werden, da es sich lediglich um mathematische Operationen handelt, die mit Werten ausgeführt werden können, die aus vielen anderen Bereichen abgeleitet wurden. Tatsächlich hat TensorFlow eine andere ähnliche Funktion,sparse_softmax_cross_entropy
bei der sie glücklicherweise vergessen haben, ein_with_logits
Suffix hinzuzufügen, was zu Inkonsistenzen und Verwirrung führt. PyTorch hingegen benennt seine Funktion einfach ohne diese Art von Suffixen.Referenz
Die Logit / Probit-Vorlesungsfolien sind eine der besten Quellen, um Logit zu verstehen. Ich habe auch den Wikipedia-Artikel mit einigen der oben genannten Informationen aktualisiert .
quelle
Persönliches Verständnis In der TensorFlow-Domäne sind Protokolle die Werte, die als Eingabe für softmax verwendet werden sollen. Ich bin zu diesem Verständnis gekommen, basierend auf diesem Tensorflow-Tutorial.
https://www.tensorflow.org/tutorials/layers
Obwohl es wahr ist, dass Logit eine Funktion in der Mathematik ist (insbesondere in der Statistik), denke ich nicht, dass dies das gleiche 'Logit' ist, das Sie betrachten. In dem Buch Deep Learning von Ian Goodfellow erwähnte er:
In TensorFlow wird es häufig als Name der letzten Ebene angesehen. In Kapitel 10 des Buches Hands-on Machine Learning mit Scikit-learn und TensorFLow von Aurélien Géron bin ich auf diesen Absatz gestoßen , in dem die
logits
Ebene klar angegeben wurde.Das heißt, obwohl wir Softmax als Aktivierungsfunktion in der letzten Ebene unseres Designs verwenden, nehmen wir es zur Vereinfachung der Berechnung
logits
separat heraus. Dies liegt daran, dass es effizienter ist, gemeinsam zu berechnensoftmax
und zucross-entropy
verlieren. Denken Sie daran, dass diescross-entropy
eine Kostenfunktion ist, die bei der Vorwärtsausbreitung nicht verwendet wird.quelle
Hier ist eine kurze Antwort für zukünftige Leser.
Tensorflow
'slogit
ist definiert als die Ausgabe eines Neurons ohne Anwendung der Aktivierungsfunktion:x: Eingabe, w: Gewicht, b: Vorspannung. Das ist es.
Das Folgende ist für diese Frage irrelevant.
Lesen Sie für historische Vorträge andere Antworten. Hut ab vor der
Tensorflow
"kreativ" verwirrenden Namenskonvention. InPyTorch
gibt es nur einenCrossEntropyLoss
und er akzeptiert nicht aktivierte Ausgänge. Faltungen, Matrixmultiplikationen und Aktivierungen sind Operationen auf derselben Ebene. Das Design ist viel modularer und weniger verwirrend. Dies ist einer der Gründe, warum ich vonTensorflow
zu gewechselt binPyTorch
.quelle
( FOMO sapiens).
Wenn Sie die mathematische Logit-Funktion aktivieren, wird der reale Raum vom
[0,1]
Intervall in unendlich konvertiert[-inf, inf]
.Sigmoid und Softmax machen genau das Gegenteil. Sie werden den
[-inf, inf]
realen Raum in[0, 1]
realen Raum umwandeln .Aus diesem Grund können wir beim maschinellen Lernen logit vor der Sigmoid- und Softmax-Funktion verwenden (da sie übereinstimmen).
Und deshalb „wir nennen können“ alles in maschinellem Lernen , die vor geht sigmoid oder softmax die Funktion logit .
Hier ist ein Video von J. Hinton mit diesem Begriff.
PS. Ich empfehle nicht, das Video anzusehen, nur um den Begriff zu überprüfen.
quelle
Sie sind im Grunde das am besten erlernte Modell, das Sie aus dem Netzwerk erhalten können, bevor es auf die Anzahl der Klassen angewendet wird, an denen wir interessiert sind. Sehen Sie sich an, wie einige Forscher sie verwenden, um ein flaches neuronales Netz basierend auf der Tiefe zu trainieren Netzwerk hat gelernt: https://arxiv.org/pdf/1312.6184.pdf
Es ist so, als würden Sie beim Erlernen eines Fachs im Detail sehr viele kleinere Punkte lernen, aber wenn Sie einen Schüler unterrichten, werden Sie versuchen, es auf den einfachsten Fall zu komprimieren. Wenn der Schüler jetzt versuchen würde zu unterrichten, wäre es ziemlich schwierig, aber er könnte es gerade gut genug beschreiben, um die Sprache zu benutzen.
quelle
Siehe hier: https://en.wikipedia.org/wiki/Logit
quelle
logit
eine andere Bedeutung hat. Sehen Sie das , das , das .logits
Der Vektor von rohen (nicht normalisierten) Vorhersagen, die ein Klassifizierungsmodell generiert, der normalerweise an eine Normalisierungsfunktion übergeben wird. Wenn das Modell ein Klassifizierungsproblem für mehrere Klassen löst, werden Protokolle normalerweise zu einer Eingabe für die Softmax-Funktion. Die Softmax-Funktion erzeugt dann einen Vektor von (normalisierten) Wahrscheinlichkeiten mit einem Wert für jede mögliche Klasse.
Außerdem beziehen sich Protokolle manchmal auf die elementweise Umkehrung der Sigmoidfunktion. Weitere Informationen finden Sie unter tf.nn.sigmoid_cross_entropy_with_logits.
offizielle Tensorflow-Dokumentation
quelle
Logits sind häufig die Werte der Z-Funktion der Ausgabeschicht in Tensorflow.
quelle