Qual è il significato della parola logit in TensorFlow?


250

Nella seguente funzione TensorFlow, dobbiamo alimentare l'attivazione dei neuroni artificiali nello strato finale. Che ho capito. Ma non capisco perché si chiama logits? Non è una funzione matematica?

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

Risposte:


215

Logits è un termine sovraccarico che può significare molte cose diverse:


In matematica , Logit è una funzione che mappa le probabilità ( [0, 1]) a R ( (-inf, inf))

inserisci qui la descrizione dell'immagine

La probabilità di 0,5 corrisponde a un logit di 0. Il logit negativo corrisponde a probabilità inferiori a 0,5, positive a> 0,5.

In ML , può essere

il vettore di previsioni grezze (non normalizzate) generate da un modello di classificazione, che viene normalmente passato a una funzione di normalizzazione. Se il modello risolve un problema di classificazione multi-classe, i log in genere diventano un input per la funzione softmax. La funzione softmax quindi genera un vettore di probabilità (normalizzate) con un valore per ogni possibile classe.

Logit anche talvolta riferimento all'inverso elemento-saggio della funzione sigmoidale.


127
Per Tensorflow: è un nome che si presume implichi che questo Tensore è la quantità che viene mappata alle probabilità da Softmax.
thertweck

1
è esattamente la stessa cosa che viene esponenziale prima della softmax? cioè softmax(logit) = exp(logit)/Z(logit)allora logit = h_NN(x)? quindi logit è lo stesso di "score"?
Charlie Parker,

4
La comprensione personale, nel dominio TensorFlow, i logit sono i valori da utilizzare come input per softmax. Sono arrivato a questa comprensione basata su questo tutorial di Tensorflow.
Diansheng,

2
Non sono sicuro che questo risponda alla domanda. Forse è per questo che non è mai stato accettato. Capisco qual è la funzione logit, ma mi confonde anche il motivo per cui Tensorflow chiama questi argomenti logit. È anche la stessa designazione per molti dei parametri nelle funzioni di
Tensorflow

1
Greate! Puoi fare un semplice esempio? È giusto? [1, 0.5, 0.5]attraverso la normalizzazione diventa [0.5, 0.25, 0.25]e poi soft max diventa [0,]se uno caldo [1, 0, 0]? o semplicemente messo [1, 0, 0]perché l'output dovrebbe essere un vettore?
Tina Liu,

92

Basta aggiungere questo chiarimento in modo tale che chiunque scorra così tanto in basso possa almeno farlo bene, dato che ci sono così tante risposte sbagliate votate.

La risposta di Diansheng e la risposta di JakeJ hanno ragione.
Una nuova risposta pubblicata da Shital Shah è una risposta ancora migliore e più completa.


Sì, logit come funzione matematica nelle statistiche, ma quella logitutilizzata nel contesto delle reti neurali è diversa. Le statistiche logitnon hanno nemmeno senso qui.


Non sono riuscito a trovare una definizione formale da nessuna parte, ma logitsostanzialmente significa:

Le previsioni grezze che escono dall'ultimo strato della rete neurale.
1. Questo è il tensore sul quale si applica la argmaxfunzione per ottenere la classe prevista.
2. Questo è il tensore che si inserisce nella softmaxfunzione per ottenere le probabilità per le classi previste.


Inoltre, da un tutorial sul sito Web ufficiale di tensorflow:

Logit Layer

Il livello finale nella nostra rete neurale è il livello logits, che restituirà i valori grezzi per le nostre previsioni. Creiamo uno strato denso con 10 neuroni (uno per ogni classe target 0-9), con attivazione lineare (impostazione predefinita):

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

Se sei ancora confuso, la situazione è così:

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)

dove predicted_class_index_by_rawe predicted_class_index_by_probsarà uguale.

Un altro nome per raw_predictionsnel codice sopra èlogit .


Per quanto riguarda il perché logit ... Non ne ho idea. Scusate.
[Modifica: vedi questa risposta per le motivazioni storiche alla base del termine.]


banalità

Anche se, se vuoi, puoi applicare statistiche logita quelle probabilitiesche escono dalla softmaxfunzione.

Se la probabilità di una determinata classe è p,
allora la probabilità di log di quella classe è L = logit(p).

Inoltre, la probabilità di quella classe può essere recuperata come p = sigmoid(L), usando la sigmoidfunzione.

Tuttavia, non molto utile per calcolare le probabilità del registro.


80

Logit è una funzione che mappa le probabilità [0, 1]a [-inf, +inf].

SoftMax è una funzione che mappa [-inf, +inf]di [0, 1]simile a sigma. Ma Softmax normalizza anche la somma dei valori (vettore di output) pari a 1.

Tensorflow "con logit" : significa che stai applicando una funzione softmax per registrare i numeri per normalizzarla. Input_vector / logit non è normalizzato e può ridimensionare da [-inf, inf].

Questa normalizzazione viene utilizzata per problemi di classificazione multiclasse. E per problemi di classificazione multilabel si usa la normalizzazione sigmoideatf.nn.sigmoid_cross_entropy_with_logits


10
quindi logit è lo stesso del "punteggio"
Charlie Parker,

1
Suggerisco di aggiungere una riga nella risposta differenziando esplicitamente la Logitfunzione (statistica) e il logitslivello (tensorflow)
AneesAhmed777,

62

Sommario

Nel contesto dell'apprendimento approfondito, il livello logits indica il livello che si nutre di softmax (o altra tale normalizzazione). L'output del softmax sono le probabilità per l'attività di classificazione e il suo input è il livello logits. Il livello logits in genere produce valori da -infinito a + infinito e il livello softmax lo trasforma in valori da 0 a 1.

Contesto storico

Da dove viene questo termine? Negli anni '30 e '40, diverse persone stavano cercando di adattare la regressione lineare al problema della previsione delle probabilità. Tuttavia la regressione lineare produce un output da -infinito a + infinito mentre per le probabilità il nostro output desiderato è da 0 a 1. Un modo per farlo è mappare in qualche modo le probabilità da 0 a 1 a -infinito a + infinito e quindi utilizzare la regressione lineare come al solito. Una di queste mappature è la distribuzione normale cumulativa che fu usata da Chester Ittner Bliss nel 1934 e chiamò questo modello "probit", abbreviazione di "unità di probabilità". Tuttavia, questa funzione è costosa dal punto di vista computazionale, mentre manca di alcune delle proprietà desiderabili per la classificazione multi-classe. Nel 1944 Joseph Berkson usò la funzionelog(p/(1-p))per eseguire questa mappatura e chiamarla logit, abbreviazione di "unità logistica". Anche da questo deriva il termine regressione logistica.

La confusione

Sfortunatamente il termine logits è abusato nell'apprendimento profondo. Dal puro punto di vista matematico il logit è una funzione che esegue sopra la mappatura. Nell'apprendimento profondo le persone hanno iniziato a chiamare il livello "livello logit" che si inserisce nella funzione logit. Quindi le persone hanno iniziato a chiamare i valori di output di questo livello "logit" creando la confusione con logit la funzione .

Codice TensorFlow

Sfortunatamente il codice TensorFlow aumenta ulteriormente la confusione con nomi come tf.nn.softmax_cross_entropy_with_logits. Cosa significano i logit qui? Significa solo che l'input della funzione dovrebbe essere l'output dell'ultimo strato di neurone come descritto sopra. Il _with_logitssuffisso è ridondante, confuso e inutile . Le funzioni dovrebbero essere nominate indipendentemente da contesti così specifici perché sono semplicemente operazioni matematiche che possono essere eseguite su valori derivati ​​da molti altri domini. In effetti TensorFlow ha un'altra funzione simile in sparse_softmax_cross_entropycui fortunatamente si sono dimenticati di aggiungere il _with_logitssuffisso creando incoerenza e aggiungendo confusione. PyTorch d'altra parte semplicemente nomina la sua funzione senza questo tipo di suffissi.

Riferimento

Le diapositive della lezione Logit / Probit sono una delle migliori risorse per comprendere il logit. Ho anche aggiornato l' articolo di Wikipedia con alcune delle informazioni di cui sopra.


31

La comprensione personale, nel dominio TensorFlow, i logit sono i valori da utilizzare come input per softmax. Sono arrivato a questa comprensione basata su questo tutorial di Tensorflow.

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


Anche se è vero che il logit è una funzione in matematica (specialmente nelle statistiche), non penso che sia lo stesso "logit" che stai osservando. Nel libro Deep Learning di Ian Goodfellow, ha menzionato,

La funzione σ −1 (x) è chiamata logit nelle statistiche, ma questo termine è usato più raramente nell'apprendimento automatico. σ −1 (x) sta per la funzione inversa della funzione sigmoidea logistica.

In TensorFlow, viene spesso visto come il nome dell'ultimo livello. Nel capitolo 10 del libro Hands-on Machine Learning con Scikit-learn e TensorFLow di Aurélien Géron, mi sono imbattuto in questo paragrafo, che indicava logitschiaramente lo strato.

si noti che logitsè l'output della rete neurale prima di passare attraverso la funzione di attivazione di softmax: per motivi di ottimizzazione, gestiremo il calcolo di softmax in seguito.

Vale a dire, sebbene utilizziamo softmax come funzione di attivazione nell'ultimo livello del nostro progetto, per facilità di calcolo, eliminiamo logitsseparatamente. Questo perché è più efficiente calcolare softmaxe cross-entropyperdere insieme. Ricorda che cross-entropyè una funzione di costo, non utilizzata nella propagazione diretta.


12

Ecco una risposta concisa per i futuri lettori. Tensorflow's logitè definito come l'uscita di un neurone senza applicare funzione di attivazione:

logit = w*x + b,

x: input, w: weight, b: bias. Questo è tutto.


Quanto segue è irrilevante per questa domanda.

Per lezioni storiche, leggi altre risposte. Tanto di cappello alla Tensorflowconvenzione di denominazione "creativamente" confusa. In PyTorch, ce n'è solo uno CrossEntropyLosse accetta uscite non attivate. Convoluzioni, moltiplicazioni di matrice e attivazioni sono operazioni dello stesso livello. Il design è molto più modulare e meno confuso. Questo è uno dei motivi per cui sono passato da Tensorflowa PyTorch.


8

( FOMO sapiens).

Se controlli la funzione Logit matematica, converte lo spazio reale da [0,1]intervallo a infinito [-inf, inf].

Sigmoid e softmax faranno esattamente la cosa opposta. Convertiranno lo [-inf, inf]spazio [0, 1]reale in spazio reale.

Questo è il motivo per cui, nell'apprendimento automatico, possiamo usare logit prima della funzione sigmoid e softmax (poiché corrispondono).

E questo è il motivo per cui "possiamo chiamare" nulla nel machine learning che va davanti a sigma o SoftMax funzione logit .

Ecco il video di J. Hinton che usa questo termine.

PS. Non sto raccomandando di guardare il video solo per controllare il termine.


5

Sono fondamentalmente il modello più appreso che puoi ottenere dalla rete, prima che sia stato schiacciato per applicare solo al numero di classi che ci interessano. Scopri come alcuni ricercatori li usano per addestrare una rete neurale superficiale in base a quale profondità rete ha imparato: https://arxiv.org/pdf/1312.6184.pdf

È un po 'come quando imparando una materia in dettaglio, imparerai molti punti minori, ma poi quando insegnerai a uno studente, proverai a comprimerlo nel caso più semplice. Se lo studente ora provasse a insegnare, sarebbe piuttosto difficile, ma sarebbe in grado di descriverlo abbastanza bene per usare la lingua.


1

La funzione logit (/ ˈloʊdʒɪt / LOH-jit) è l'inverso della funzione "logistica" sigmoidale o trasformazione logistica utilizzata in matematica, specialmente in statistica. Quando la variabile della funzione rappresenta una probabilità p, la funzione logit fornisce le probabilità del log o il logaritmo delle probabilità p / (1 - p).

Vedi qui: https://en.wikipedia.org/wiki/Logit


4
Questo è in statistica / matematica. Stiamo parlando dell'apprendimento automatico qui, dove logitha un significato diverso. Vedi questo , questo , questo .
AneesAhmed777,

1

logit

Il vettore di previsioni grezze (non normalizzate) generate da un modello di classificazione, che viene normalmente passato a una funzione di normalizzazione. Se il modello risolve un problema di classificazione multi-classe, i log in genere diventano un input per la funzione softmax. La funzione softmax quindi genera un vettore di probabilità (normalizzate) con un valore per ogni possibile classe.

Inoltre, i logit a volte si riferiscono all'inverso dell'elemento della funzione sigmoide. Per ulteriori informazioni, consultare tf.nn.sigmoid_cross_entropy_with_logits.

documentazione ufficiale tensorflow


-3

I log sono spesso i valori della funzione Z del livello di output in Tensorflow.


Non necessariamente, vedi le altre risposte.
quant
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.