Quelle est la signification du mot logits dans TensorFlow?
Dans la suite de TensorFlow fonction, nous devons nourrir l'activation de neurones artificiels dans la couche finale. Ce que je comprends. Mais je ne comprends pas pourquoi il est appelé logits? N'est-ce pas une fonction mathématique?
loss_function = tf.nn.softmax_cross_entropy_with_logits(
logits = last_layer,
labels = target_output
)
Vous devez vous connecter pour publier un commentaire.
Logits est surchargé terme qui peut signifier beaucoup de choses différentes:
En Mathématiques, Logit est une fonction que les cartes de probabilités (
[0, 1]
) à R ((-inf, inf)
)Probabilité de 0,5 correspond à un logit de 0. Négatif logit correspondent à des probabilités de moins de 0,5, positif > 0.5.
En ML, il peut être
Logits aussi parfois faire référence à l'élément-sage inverse de la fonction sigmoïde.
softmax(logit) = exp(logit)/Z(logit)
puislogit = h_NN(x)
? donc logit est le même que le "score"?logit
. Bon. Je vous recommande de faire nouvellement ajouté, "ML" contexte clairement de se démarquer des autres contextes comme les "Maths", parce que nous parlons de tensorflow ici, après tout :-).Logit est une fonction que les cartes de probabilités
[0, 1]
à[-inf, +inf]
.Softmax est une fonction qui cartes
[-inf, +inf]
à[0, 1]
similaires comme Sigmoïde. Mais Softmax normalise également la somme des valeurs(vecteur de sortie) 1.Tensorflow "avec logit": Cela signifie que vous êtes en appliquant une fonction softmax à logit numéros de la normaliser. Le input_vector/logit n'est pas normalisée et peut évoluer à partir de [-inf, inf].
Cette normalisation est utilisée pour les problèmes de classification multiclasse. Et pour multilabel les problèmes de classification sigmoïde normalisation est utilisée c'est à dire
tf.nn.sigmoid_cross_entropy_with_logits
Logit
fonction (statistiques) etlogits
couche (tensorflow)Juste l'ajout de cette précision pour que tous ceux qui défile en bas de cette quantité peut au moins s'il répond juste, car il ya tellement de nombreuses réponses erronées upvoted.
Diansheng de réponse et JakeJ de réponse obtenir la droite.
Une nouvelle réponse posté par Shital Shah est une encore meilleure et plus complète de la réponse.
Oui,
logit
comme une mathématique la fonction dans les statistiques, mais lalogit
utilisé dans le contexte des réseaux de neurones est différent. Statistiqueslogit
n'a même pas de sens ici.Je ne pouvais pas trouver une définition formelle de n'importe où, mais
logit
signifie en gros:Aussi, à partir d'un tutoriel sur officiel tensorflow site web:
Si vous êtes encore confus, la situation se présente comme suit:
où,
predicted_class_index_by_raw
etpredicted_class_index_by_prob
sera égal.Un autre nom pour
raw_predictions
dans le code ci-dessus estlogit
.Comme pour la pourquoilogit
... je n'ai aucune idée. Désolé.[Edit: Voir cette réponse pour l'historique des motivations derrière le terme.]
Trivia
Bien que, si vous le souhaitez, vous pouvez appliquer des statistiques
logit
àprobabilities
qui sortent de l'softmax
fonction.Si la probabilité d'une certaine classe est
p
,Puis le log-odds de cette classe est
L = logit(p)
.Aussi, la probabilité de cette classe peuvent être récupérés sous forme de
p = sigmoid(L)
, à l'aide de lasigmoïde
fonction.Pas très utile pour calculer la log-odds bien.
Compréhension personnelle, dans TensorFlow domaine, logits sont les valeurs à utiliser comme entrée de softmax. Je suis venu à cette compréhension sur la base de cette tensorflow tutoriel.
https://www.tensorflow.org/tutorials/layers
Même si il est vrai que le logit est une fonction en mathématiques(en particulier dans les statistiques), je ne pense pas que c'est la même "logit" vous êtes en train de regarder. Dans le livre l'Apprentissage en Profondeur par Ian Goodfellow, il a mentionné,
Dans TensorFlow, il est souvent vu comme le nom de la dernière couche. Dans le Chapitre 10 du livre les Mains sur l'Apprentissage de la Machine avec Scikit-learn et TensorFLow par Aurélien Géron, je suis tombé sur ce paragraphe, qui a déclaré
logits
couche clairement.C'est-à-dire, bien que nous utilisons softmax que la fonction d'activation dans la dernière couche dans notre conception, pour la facilité du calcul, nous prenons
logits
séparément. C'est parce qu'il est plus efficace de calculersoftmax
etcross-entropy
perte de l'ensemble. Rappelez-vous quecross-entropy
est une fonction de coût, n'a pas utilisé le terme de propagation.Résumé
Dans le contexte de l'apprentissage en profondeur la logits couche signifie que la couche qui se nourrit à softmax (ou d'autres normalisation). La sortie de la softmax sont les probabilités pour la tâche de classification et son entrée est logits couche. Les logits de la couche de produit, en général, les valeurs de -l'infini à +l'infini et la softmax couche transforme les valeurs de 0 à 1.
Contexte Historique
D'où vient ce terme provient de l'? Dans les années 1930 et 40, plusieurs personnes ont essayé de s'adapter de la régression linéaire pour le problème de la prédiction des probabilités. Cependant, la régression linéaire, produit un résultat de -l'infini à +l'infini, tandis que pour les probabilités de notre sortie est de 0 à 1. Une façon de le faire est en quelque sorte de cartographie des probabilités de 0 à 1 à l'infini à +l'infini et ensuite utiliser la régression linéaire, comme d'habitude. Une telle cartographie est la distribution normale cumulative qui a été utilisé par Chester Ittner Bonheur en 1934 et il a appelé ce "probit" modèle, l'abréviation de "probabilité de l'unité". Toutefois cette fonction est gourmand en ressources tout en manquant de certaines des propriétés souhaitables pour le multi-classe de la classification. En 1944, Joseph Berkson utilisé la fonction
log(p/(1-p))
pour ce faire, la cartographie et l'a appelé "logit", abréviation de "unité logistique". Le terme de régression logistique dérivées à partir de ce que bien.La Confusion
Malheureusement le terme logits est abusé dans l'apprentissage en profondeur. De la pure mathématique de la perspective logit est un fonction qui effectue au-dessus de la cartographie. Dans l'apprentissage en profondeur les gens ont commencé à appeler le calque "logits couche" qui alimente en fonction logit. Puis les gens ont commencé à appeler la sortie valeurs de cette couche "logit", créant la confusion avec logit la fonction.
TensorFlow Code
Malheureusement TensorFlow code ajoute encore à la confusion par des noms comme
tf.nn.softmax_cross_entropy_with_logits
. Qu'est-logits dire par là? Il veut simplement dire que l'entrée de la fonction est censé être la sortie du dernier neurone de la couche, comme décrit ci-dessus. Le_with_logits
suffixe est redondant, déroutant et inutile. Les fonctions doivent être nommés sans égard à un tel contexte spécifique parce qu'ils sont tout simplement mathématique opérations qui peuvent être effectuées sur les valeurs dérivées de nombreux autres domaines. En fait TensorFlow a une autre fonction similairesparse_softmax_cross_entropy
où ils heureusement oublié d'ajouter_with_logits
suffixe de la création de l'incohérence et l'ajouter à la confusion. PyTorch d'autre part tout simplement les noms de sa fonction sans ce genre de suffixes.Référence
La Logit/Probit conférence des diapositives est l'une des meilleures ressources pour comprendre logit. J'ai également mis à jour Article de Wikipedia avec certaines des informations ci-dessus.
Ici est une réponse concise pour les futurs lecteurs.
Tensorflow
'slogit
est définie comme la sortie d'un neurone sans appliquer de l'activation de la fonction:x: entrée, w: poids, b: biais. C'est tout.
La suite n'est pas pertinent à cette question.
Pour conférences historiques, lire les autres réponses. Coup de chapeau à
Tensorflow
's "créative" confusion convention de nommage. DansPyTorch
, il y a un seulCrossEntropyLoss
et il accepte de l'onu-activé les sorties. Circonvolutions, de la matrice de multiplications et d'activations sont même niveau de opérations. Le design est beaucoup plus modulaire et moins à confusion. C'est une des raisons pour lesquelles je suis passé deTensorflow
àPyTorch
.Ils sont fondamentalement au maximum appris modèle que vous pouvez obtenir à partir du réseau, avant il a été écrasé vers le bas à une seule le nombre de classes qui nous intéresse. Découvrez comment certains chercheurs les utilisent pour former une faible réseau neuronal basé sur ce qu'est un réseau profond a appris: https://arxiv.org/pdf/1312.6184.pdf
C'est un peu comme faire l'apprentissage d'un sujet en détail, vous découvrirez un grand nombre de points mineurs, mais ensuite, dans l'enseignement de l'étudiant, vous essayez de compresser dans le cas le plus simple. Si l'étudiant a essayé d'enseigner, il serait très difficile, mais serait capable de la décrire juste assez bien pour l'utilisation de la langue.
Voir ici: https://en.wikipedia.org/wiki/Logit
logit
a différents sens. Voir ceci, ceci, ceci. Stop à l'aveuglette le copier-coller le formulaire de wikipédia.Logits souvent sont les valeurs de Z de la fonction de la couche de sortie en Tensorflow.