Wat is de betekenis van het woord logits in TensorFlow?

In de volgende TensorFlow-functie moeten we de activering van kunstmatige neuronen in de laatste laag voeden. Dat begrijp ik. Maar ik begrijp niet waarom het logits wordt genoemd? Is dat geen wiskundige functie?

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

Antwoord 1, autoriteit 100%

Logits is een overbelaste term die veel verschillende dingen kan betekenen:


In wiskundeis Logiteen functie die kansen in kaart brengt ( [0, 1]) tot R ((-inf, inf))

Kans van 0,5 komt overeen met een logit van 0. Negatieve logit komt overeen met kansen kleiner dan 0,5, positief met > 0,5.

In MLkan het zijn

de vector van ruwe (niet-genormaliseerde) voorspellingen die een classificatie
model genereert, dat gewoonlijk vervolgens wordt doorgegeven aan een normalisatie
functie. Als het model een classificatie met meerdere klassen oplost
probleem, logits worden meestal een invoer voor de softmax-functie. De
softmax-functie genereert dan een vector van (genormaliseerde) kansen
met één waarde voor elke mogelijke klasse.

Logitssomsverwijzen ook naar de elementgewijze inverse van de sigmoid-functie.


Antwoord 2, autoriteit 50%

Gewoon deze verduidelijking toevoegen, zodat iedereen die zo veel naar beneden scrolt, het in ieder geval goed kan krijgen, aangezien er zoveel verkeerde antwoorden worden gestemd.

Diansheng’s antwoorden JakeJ’s antwoordbegrijp het goed.
Een nieuw antwoordgeplaatst door Shital Shah is een nog beter en completer antwoord.


Ja, logitals een wiskundige functiein statistieken, maar de logitdie wordt gebruikt in de context van neurale netwerken is anders.Statistische logitslaat hier zelfs nergens op.


Ik kon nergens een formele definitie vinden, maar logitbetekent in feite:

De ruwe voorspellingen die uit de laatste laag van het neurale netwerk komen.
1. Dit is de tensor waarop u de functie argmaxtoepast om de voorspelde les te krijgen.
2. Dit is de tensor die je invoert in de functie softmaxom de kansen voor de voorspelde klassen te krijgen.


Ook uit een zelfstudieop de officiële tensorflow-website:

Logits-laag

De laatste laag in ons neurale netwerk is de logits-laag, die de onbewerkte waarden voor onze voorspellingen retourneert. We creëren een dichte laag met 10 neuronen (één voor elke doelklasse 0-9), met lineaire activering (de standaard):

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

Als je nog steeds in de war bent, is de situatie als volgt:

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)

waar, predicted_class_index_by_rawen predicted_class_index_by_probgelijk zijn.

Een andere naam voor raw_predictionsin de bovenstaande code is logit.


Wat betreft het waaromlogit… ik heb geen idee. Sorry.
[Bewerken: zie dit antwoordvoor de historische motivaties achter de term.]


Trivia

Hoewel je, als je wilt, statistische logitkunt toepassen op probabilitiesdie uit de functie softmaxkomen.

Als de kans op een bepaalde klasse pis,
Dan is de log-oddsvan die klasse L = logit(p).

Ook kan de waarschijnlijkheid van die klasse worden hersteld als p = sigmoid(L), met behulp van de sigmoidfunctie.

Niet erg handig om log-odds te berekenen.


Antwoord 3, autoriteit 32%

Samenvatting

In de context van diepgaand leren betekent de logits-laagde laag die naar softmax (of een andere dergelijke normalisatie). De uitvoer van de softmax zijn de kansen voor de classificatietaak en de invoer is de logitslaag. De logits-laag produceert doorgaans waarden van -oneindig tot +oneindig en de softmax-laag transformeert deze naar waarden van 0 tot 1.

Historische context

Waar komt deze term vandaan? In de jaren dertig en veertig probeerden verschillende mensen lineaire regressie aan te passen aan het probleem van het voorspellen van kansen. Lineaire regressie produceert echter uitvoer van -oneindig tot +oneindig, terwijl voor kansen onze gewenste uitvoer 0 tot 1 is. Een manier om dit te doen is door op de een of andere manier de kansen van 0 tot 1 tot -oneindig tot +oneindig in kaart te brengen en vervolgens lineaire regressie te gebruiken zoals gewoonlijk. Een voorbeeld van zo’n afbeelding is de cumulatieve normale verdeling die werd gebruikt door Chester Ittner Bliss in 1934 en hij noemde dit “probit”-model, een afkorting voor “probability unit”. Deze functie is echter rekenkundig duur, terwijl enkele van de gewenste eigenschappen voor classificatie met meerdere klassen ontbreken. In 1944 gebruikte Joseph Berkson de functie log(p/(1-p))om deze mapping uit te voeren en noemde het logit, een afkorting van “logistic unit”. De term logistische regressie is hier ook van afgeleid.

De verwarring

Helaas wordt de term logits misbruikt bij deep learning. Vanuit puur wiskundig perspectief is logit een functiedie boven mapping presteert. Bij deep learning begonnen mensen de laag “logits-laag” te noemen die de logit-functie voedt. Toen begonnen mensen de output waardenvan deze laag “logit” te noemen, waardoor er verwarring ontstond met logit de functie.

TensorFlow-code

Helaas TensorFlow code verder bijdraagt ​​in om verwarring met namen als tf.nn.softmax_cross_entropy_with_logits. Wat betekent logits hier bedoel? Het betekent alleen de invoer van de functie wordt geacht de uitgang van de laatste neuron laag zoals hierboven beschreven. De _with_logitsachtervoegsel overbodig, verwarrend en zinloos . Functies moeten worden genoemd, zonder betrekking tot dergelijke zeer specifieke contexten, omdat ze zijn gewoon wiskundige bewerkingen die kunnen worden uitgevoerd op de waarden die zijn afgeleid van vele andere domeinen. In feite heeft TensorFlow een andere soortgelijke functie sparse_softmax_cross_entropy, waar ze gelukkig vergat toe te voegen _with_logitssuffix creëren van inconsistentie en het toevoegen van in verwarring. PyTorch aan de andere kant alleen maar namen zijn functie zonder dit soort achtervoegsels.

Referentie

De Logit / Probit slides is een van de beste bron aan begrijpen logit. Ik heb ook bijgewerkt Wikipedia artikel met een aantal van bovenstaande informatie.


Antwoord 4, Autoriteit 28%

Logit is een functie die kansen in kaart [0, 1]naar [-inf, +inf].

Softmax is een functie die kaarten [-inf, +inf]naar [0, 1]hetzelfde als Sigmoid. Maar Softmax normaliseert eveneens de som van de waarden (uitgangsvector) zijn 1.

Tensorflow “met logit” : Het betekent dat je solliciteert een Softmax functie om logit nummers te normaliseren. De input_vector / logit niet genormaliseerd en schaalbaar van [-inf, inf].

Deze normalisatie wordt gebruikt voor classificatieproblemen met meerdere klassen. En voor classificatieproblemen met meerdere labels wordt sigmoid-normalisatie gebruikt, d.w.z. tf.nn.sigmoid_cross_entropy_with_logits


Antwoord 5, autoriteit 12%

Persoonlijk begrip, in het TensorFlow-domein zijn logits de waarden die moeten worden gebruikt als invoer voor softmax. Ik kwam tot dit inzicht op basis van deze zelfstudie over tensorflow.

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


Hoewel het waar is dat logit een functie is in wiskunde (vooral in statistiek), denk ik niet dat dit dezelfde ‘logit’ is waar je naar kijkt. In het boek Deep Learningvan Ian Goodfellow noemde hij:

De functie σ−1(x) wordt de logit genoemd in statistieken, maar deze term
wordt minder vaak gebruikt bij machine learning. σ−1(x) staat voor de
inverse functie van logistische sigmoïde functie.

In TensorFlow wordt het vaak gezien als de naam van de laatste laag. In hoofdstuk 10 van het boek Hands-on Machine Learning with Scikit-learn and TensorFLowvan Aurélien Géron kwam ik deze paragraaf tegen, waarin de logits-laag duidelijk werd vermeld.

merk op dat logitsde output is van het neurale netwerk voor
via de softmax-activeringsfunctie: om optimalisatieredenen
zal de softmax-berekening later afhandelen.

Dat wil zeggen, hoewel we softmax gebruiken als de activeringsfunctie in de laatste laag in ons ontwerp, nemen we voor het gemak van de berekening logitsapart. Dit komt omdat het efficiënter is om softmaxen cross-entropyverlies samen te berekenen. Onthoud dat cross-entropyeen kostenfunctie is, die niet wordt gebruikt bij voorwaartse propagatie.


Antwoord 6, autoriteit 7%

(FOMOsapiens).

Als je de wiskundige Logit-functie aanvinkt, converteert deze de reële ruimte van het [0,1]-interval naar oneindig [-inf, inf].

Sigmoid en softmax doen precies het tegenovergestelde. Ze zullen de [-inf, inf]echte ruimte converteren naar [0, 1]echte ruimte.

Dit is de reden waarom we bij machine learning de functie logit before sigmoid en softmax kunnen gebruiken (omdat ze overeenkomen).

En dit is waarom “we may call” allesin machine learning dat voor sigmoidof softmaxfunctie de functie logit.

Hier is de videovan J. Hinton die deze term gebruikt.


Antwoord 7, autoriteit 7%

Hier is een beknopt antwoord voor toekomstige lezers. Tensorflow‘s logitwordt gedefinieerd als de output van een neuron zonder activeringsfunctie toe te passen:

logit = w*x + b,

x: invoer, w: gewicht, b: bias. Dat is het.


Het volgende is niet relevant voor deze vraag.

Lees andere antwoorden voor historische lezingen. Petje af voor Tensorflow‘s “creatief” verwarrende naamgevingsconventie. In PyTorchis er slechts één CrossEntropyLossen deze accepteert niet-geactiveerde uitvoer. Convoluties, matrixvermenigvuldigingen en activeringen zijn bewerkingen op hetzelfde niveau. Het ontwerp is veel meer modulair en minder verwarrend. Dit is een van de redenen waarom ik ben overgestapt van Tensorflownaar PyTorch.


Antwoord 8, autoriteit 3%

logits

De vector van onbewerkte (niet-genormaliseerde) voorspellingen die een classificatiemodel genereert, die gewoonlijk wordt doorgegeven aan een normalisatiefunctie. Als het model een classificatieprobleem met meerdere klassen oplost, worden logits doorgaans een invoer voor de softmax-functie. De softmax-functie genereert dan een vector van (genormaliseerde) kansen met één waarde voor elke mogelijke klasse.

Bovendien verwijzen logits soms naar de element-gewijze inverse van de sigmoid-functie. Zie tf.nn.sigmoid_cross_entropy_with_logits voor meer informatie.

officiële tensorflow-documentatie


Antwoord 9, autoriteit 2%

Ze zijn in feite het meest volledige geleerde model dat je van het netwerk kunt krijgen, voordat het is geplet om alleen van toepassing te zijn op het aantal klassen waarin we geïnteresseerd zijn. Bekijk hoe sommige onderzoekers ze gebruiken om een ondiep neuraal netwerk te trainen op basis van wat een diepgaand netwerk heeft geleerd: https://arxiv.org/pdf/1312.6184.pdf

Het is een beetje zoals hoe wanneer bij het leren van een onderwerp in detail, je een groot aantal kleine punten leert, maar toen bij het onderwijzen van een student, probeer je het in het eenvoudigste geval te comprimeren. Als de student nu probeerde te leren, zou het behoorlijk moeilijk zijn, maar zou het in staat zijn om het gewoon goed genoeg te beschrijven om de taal te gebruiken.


Antwoord 10

De functie Logit (/ Loʊdʒɪt / LOH-JIT) is de inverse van de sigmoïdale “logistieke” functie of logistieke transformatie die wordt gebruikt in de wiskunde, vooral in statistieken. Wanneer de variabele van de functie een kans weergeeft P, geeft de Logit-functie de log-kansen of het logaritme van de kansen P / (1 – P).

Zie hier: https://en.wikipedia.org/wiki/logit


Antwoord 11

Logingen zijn vaak de waarden van Z-functie van de uitgangslaag in Tensorflow.

Other episodes