wake-up-neo.com

Welche Bedeutung haben die Word-Protokolle in TensorFlow?

In der folgenden TensorFlow-Funktion müssen wir die Aktivierung künstlicher Neuronen in der letzten Schicht einspeisen. 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
)
171
Milad P.

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 )

enter image description here

Eine Wahrscheinlichkeit von 0,5 entspricht einem logit von 0. Ein negatives logit entspricht Wahrscheinlichkeiten von weniger als 0,5, ein positives von> 0,5.

In ML ist es kann sein

der Vektor der rohen (nicht normalisierten) Vorhersagen, die ein Klassifizierungsmodell generiert, und der normalerweise an eine Normalisierungsfunktion übergeben wird. Wenn das Modell ein Klassifizierungsproblem mit mehreren Klassen löst, werden Protokolle in der Regel 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.

Logs beziehen sich auch manchmal auf die elementweise Inverse der Sigmoidfunktion.

156
Salvador Dali

Logit ist eine Funktion, die Wahrscheinlichkeiten [0, 1] auf [-inf, +inf] abbildet.

Softmax ist eine Funktion, die [-inf, +inf] auf [0, 1] abbildet, ähnlich wie Sigmoid. Softmax normiert aber auch die Summe der Werte (Ausgabevektor) auf 1.

Tensorflow "with logit": Dies bedeutet, dass Sie eine Softmax-Funktion anwenden, um Zahlen zu loggen, um sie zu normalisieren. Der Eingabevektor/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 Sigmoid-Normalisierung verwendet, d. H. tf.nn.sigmoid_cross_entropy_with_logits

59
Trideep Rath

Fügen Sie einfach diese Klarstellung hinzu, damit jeder, der so viel nach unten scrollt, es zumindest richtig macht, da so viele falsche Antworten hochgestuft werden.

Dianshengs Antwort und Jakes Antwort machen es richtig.
Eine neue Antwort geschrieben von Shital Shah ist eine noch bessere und vollständigere Antwort.


Ja, logit als mathematisches Funktion in der Statistik, , aber der logit, der im Kontext neuronaler Netze verwendet wird, ist anders. Statistisches logit nicht macht hier nicht mal Sinn.


Ich konnte nirgendwo eine formale Definition finden, aber logit bedeutet im Grunde:

Die rohen Vorhersagen, die aus der letzten Schicht des neuronalen Netzwerks stammen.
1. Dies ist der Tensor, auf den Sie die Funktion argmax anwenden, um die vorhergesagte Klasse abzurufen.
2. Dies ist der Tensor, den Sie in die Funktion softmax eingeben, um die Wahrscheinlichkeiten für die vorhergesagten Klassen abzurufen.


Aus einem Tutorial auf der offiziellen Tensorflow-Website:

Logits Layer

Die letzte Ebene in unserem neuronalen Netzwerk ist die Logit-Ebene, die die Rohwerte für unsere Vorhersagen zurückgibt. Wir erstellen eine dichte Schicht mit 10 Neuronen (eine für jede Zielklasse 0–9) mit linearer Aktivierung (Standardeinstellung):

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

Wenn Sie immer noch verwirrt sind, sieht die Situation folgendermaßen aus:

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)

dabei sind predicted_class_index_by_raw und predicted_class_index_by_prob gleich.

Ein anderer Name für raw_predictions im obigen Code ist logit.


Was den warum logit... betrifft, ich habe keine Ahnung. Es tut uns leid.
[Bearbeiten: Siehe diese Antwort für die historischen Beweggründe hinter dem Begriff.]


Trivia

Wenn Sie möchten, können Sie statistische logit auf probabilities anwenden, die aus der Funktion softmax stammen.

Wenn die Wahrscheinlichkeit einer bestimmten Klasse p ist,
Dann ist die log-Quote dieser Klasse L = logit(p).

Die Wahrscheinlichkeit dieser Klasse kann auch mit der Funktion sigmoid als p = sigmoid(L) wiederhergestellt werden.

Nicht sehr nützlich, um Log-Odds zu berechnen.

42
AneesAhmed777

Zusammenfassung

Im Kontext von Deep Learning bedeutet logits layer die Ebene, die in Softmax (oder eine andere solche Normalisierung) eingeht. Die Ausgabe des Softmax sind die Wahrscheinlichkeiten für die Klassifizierungsaufgabe und die Eingabe ist der Logit-Layer. Der logits-Layer erzeugt normalerweise Werte von -infinity bis + infinity und der softmax-Layer wandelt ihn in Werte von 0 bis 1 um.

Historischer Kontext

Woher kommt dieser Begriff? In den 1930er und 40er Jahren versuchten mehrere Menschen, die lineare Regression an das Problem der Vorhersage von Wahrscheinlichkeiten anzupassen. Die lineare Regression erzeugt jedoch eine Ausgabe von -Infinity bis + Infinity, während für Wahrscheinlichkeiten die gewünschte Ausgabe 0 bis 1 ist. Eine Möglichkeit, dies zu tun, besteht darin, die Wahrscheinlichkeiten 0 bis 1 auf -Infinity bis + Infinity abzubilden und dann die lineare Regression wie üblich zu verwenden. Eine solche Abbildung ist die kumulative Normalverteilung, die von Chester Ittner Bliss im Jahr 1934 verwendet wurde, und er nannte dieses "Probit" -Modell, kurz für "Wahrscheinlichkeitseinheit". Diese Funktion ist jedoch rechenintensiv, während einige der wünschenswerten Eigenschaften für die Klassifizierung mehrerer Klassen fehlen. Joseph Berkson benutzte 1944 die Funktion log(p/(1-p)), um dieses Mapping durchzuführen und nannte es logit, kurz für "logistic unit". Daraus leitet sich auch der Begriff logistische Regression ab.

The Confusion

Leider wird der Begriff Logits beim Deep Learning missbraucht. Aus rein mathematischer Sicht ist logit eine Funktion , die über der Abbildung ausgeführt wird. Beim Deep Learning wurde der Layer "Logits Layer" genannt, der in die Logit-Funktion eingespeist wird. Dann riefen die Leute die Ausgabewerte dieser Ebene "logit" auf, was die Verwirrung mit logit der Funktion verursachte.

TensorFlow-Code

Leider sorgt TensorFlow-Code durch Namen wie tf.nn.softmax_cross_entropy_with_logits für zusätzliche Verwirrung. Was bedeuten Logs hier? Es bedeutet nur, dass die Eingabe der Funktion die Ausgabe der letzten Neuronenschicht sein soll, wie oben beschrieben. Das Suffix _with_logits 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 stammen. In der Tat hat TensorFlow eine andere ähnliche Funktion sparse_softmax_cross_entropy, bei der sie glücklicherweise vergessen haben, das Suffix _with_logits hinzuzufügen, wodurch Inkonsistenzen entstehen und Verwirrung gestiftet wird. PyTorch hingegen nennt seine Funktion einfach ohne diese Art von Suffixen.

Referenz

Die Logit/Probit-Vorlesungsfolien ist eine der besten Ressourcen, um logit zu verstehen. Ich habe auch Wikipedia-Artikel mit einigen der oben genannten Informationen aktualisiert.

28
Shital Shah

Persönliches Verständnis In der TensorFlow-Domäne sind Protokolle die Werte, die als Eingabe für softmax verwendet werden. Ich bin aufgrund dieses Tensorflow-Tutorials zu diesem Verständnis gekommen.

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


Obwohl logit eine mathematische Funktion ist (insbesondere in der Statistik), glaube ich nicht, dass Sie sich das gleiche logit anschauen. In dem Buch Deep Learning von Ian Goodfellow erwähnte er:

Die Funktion σ−1(x) wird in der Statistik als Logit bezeichnet, aber dieser Begriff wird beim maschinellen Lernen seltener verwendet. σ−1(x) steht für die Umkehrfunktion der logistischen Sigmoidfunktion.

In TensorFlow wird es häufig als Name der letzten Schicht angesehen. In Kapitel 10 des Buches Maschinelles Lernen zum Anfassen mit Scikit-learn und TensorFLow von Aurélien Géron bin ich auf diesen Absatz gestoßen, in dem logits Schicht klar.

beachten Sie, dass logits die Ausgabe des neuronalen Netzwerks ist , bevor die Softmax-Aktivierungsfunktion durchlaufen wird. Aus Optimierungsgründen werden wir die Softmax-Berechnung durchführen später.

Das heißt, obwohl wir Softmax als Aktivierungsfunktion in der letzten Ebene unseres Entwurfs verwenden, nehmen wir zur Erleichterung der Berechnung logits separat heraus. Dies liegt daran, dass es effizienter ist, softmax und cross-entropy Verluste zusammen zu berechnen. Denken Sie daran, dass cross-entropy eine Kostenfunktion ist, die bei der Weitergabe in Vorwärtsrichtung nicht verwendet wird.

25
Diansheng

Hier ist eine kurze Antwort für zukünftige Leser. Tensorflow 's logit ist definiert als die Ausgabe eines Neurons ohne Anwendung der Aktivierungsfunktion:

logit = w*x + b,

x: Eingabe, w: Gewicht, b: Vorspannung. Das ist es.


Folgendes ist für diese Frage irrelevant.

Lesen Sie für historische Vorträge andere Antworten. Hut ab vor der "kreativ" verwirrenden Namenskonvention von Tensorflow. In PyTorch gibt es nur ein CrossEntropyLoss und es werden nicht aktivierte Ausgänge akzeptiert. Faltungen, Matrixmultiplikationen und Aktivierungen sind Operationen gleicher Ebene. Das Design ist viel modularer und weniger verwirrend. Dies ist einer der Gründe, warum ich von Tensorflow zu PyTorch gewechselt bin.

10
Jonathan Lee

Sie sind im Grunde das am besten erlernte Modell, das Sie aus dem Netzwerk erhalten können, bevor es zusammengedrückt wurde, um nur die Anzahl der Klassen zu berücksichtigen, an denen wir interessiert sind. Sehen Sie, wie einige Forscher sie verwenden, um ein flaches neuronales Netz auf der Grundlage einer 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 viele kleine Punkte lernen, aber wenn Sie einen Schüler unterrichten, versuchen Sie, 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 sprechen.

4
JakeJ

Die Funktion logit (/ ˈloˈdʊt/LOH-jit) ist die Umkehrung der in der Mathematik, insbesondere in der Statistik, verwendeten sigmoidalen "logistischen" Funktion oder logistischen Transformation. Wenn die Variable der Funktion eine Wahrscheinlichkeit p darstellt, gibt die Logit-Funktion die Log-Odds oder den Logarithmus der Odds p/(1 - p) an.

Siehe hier: https://en.wikipedia.org/wiki/Logit

3
Jagger Yu

( FOMO sapiens).

Wenn Sie die mathematische Logit-Funktion aktivieren, wird der Realraum vom Intervall [0,1] in das Intervall unendlich [-inf, inf] konvertiert.

Sigmoid und Softmax machen genau das Gegenteil. Sie konvertieren den realen Raum [-inf, inf] in den realen Raum [0, 1].

Aus diesem Grund ist es beim maschinellen Lernen sinnvoll, dass wir logit vor der Sigmoid- und der Softmax-Funktion verwenden (da sie übereinstimmen).

Und deshalb "dürfen wir" irgendetwas beim maschinellen Lernen nennen, das vor der Sigmoid- oder Softmax-Funktion der Logit geht.

Hier ist J. Hinton Video diesen Begriff verwenden.

PS. Ich empfehle Ihnen nicht, sich das Video anzuschauen, um den Begriff zu überprüfen.

1
prosti