TensorFlow中logits一词的含义是什么?


250

在以下TensorFlow函数中,我们必须在最后一层中提供人工神经元的激活。我了解。但是我不明白为什么叫logits?那不是数学函数吗?

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

Answers:


215

Logits是一个重载术语,可能意味着许多不同的含义:


在Math中Logit是一个将概率([0, 1])映射到R((-inf, inf))的函数

在此处输入图片说明

0.5的概率对应于0的对数。负的logit对应于小于0.5的概率,大于等于0.5为正。

在ML中可以是

分类模型生成的原始(未归一化)预测向量,通常将其传递给归一化函数。如果模型正在解决多类分类问题,则logit通常会成为softmax函数的输入。然后,softmax函数会生成一个(归一化)概率向量,每个可能的类都有一个值。

Logits 有时也指S型函数的逐元素逆。


127
对于Tensorflow:此名称被认为暗示此Tensor是Softmax映射到概率的数量。
thertweck

1
这与在softmax之前求幂的事物一样吗?即softmax(logit) = exp(logit)/Z(logit)logit = h_NN(x)?因此logit与“分数”相同吗?
查理·帕克

4
个人理解,在TensorFlow域中,logit是用作softmax输入的值。我是基于这个tensorflow教程来理解的。
diansheng '18

2
我不确定这是否能回答问题。也许这就是为什么它从未被接受的原因。我了解什么是logit函数,但也使我感到困惑,为什么Tensorflow会调用这些参数logits。Tensorflow函数中的几个参数的名称也相同
dleal

1
太好了,您能举个简单的例子吗?这是正确的吗?[1, 0.5, 0.5]通过归一化[0.5, 0.25, 0.25],然后[0,]如果一个热点,soft max会成为[1, 0, 0]?还是刚放出[1, 0, 0]导致输出应该是向量?
Tina Liu,

91

只需添加此说明,以使任何向下滚动这么多的人至少都能正确理解,因为提出了很多错误的答案。

点声的答案和JakeJ的答案正确。Shital Shah发布的
新答案是更好,更完整的答案。


是的,logit 作为统计中的数学函数但在logit神经网络的上下文中使用的方法有所不同。logit在这里统计甚至没有任何意义。


我在任何地方都找不到正式定义,但是logit基本上意味着:

来自神经网络最后一层的原始预测。
1.这是应用argmax函数以获取预测类的张量。
2.这是您输入到softmax函数中的张量,以获取预测类的概率。


另外,从tensorflow官方网站上的教程中获得:

Logits层

神经网络的最后一层是logits层,它将返回原始值用于我们的预测。我们创建一个具有10个神经元的密集层(每个目标类0–9一个神经元),并具有线性激活(默认值):

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

如果您仍然感到困惑,情况如下:

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)

在哪里,predicted_class_index_by_raw并且predicted_class_index_by_prob将相等。

raw_predictions上面的代码的另一个名称是logit


至于为什么 logit ...我不知道。抱歉。
[编辑:请参阅此答案以了解该术语背后的历史动机。]


琐事

虽然,如果需要,您可以对功能中的统计信息logit进行统计。probabilitiessoftmax

如果某类的概率为p
则该类的对数奇数L = logit(p)

同样,可以p = sigmoid(L)使用sigmoid函数将该类的概率恢复为。

虽然对计算对数几率不是很有用。


80

Logit是将概率映射[0, 1]到的函数[-inf, +inf]

Softmax是一种映射[-inf, +inf][0, 1]类似于Sigmoid 的函数。但是Softmax还将值的总和(输出向量)标准化为1。

Tensorflow“ with logit”:这意味着您正在将softmax函数应用于logit数字以对其进行规范化。input_vector / logit未规范化,可以从[-inf,inf]缩放。

此规范用于多类分类问题。对于多标签分类问题,使用S形标准化,即tf.nn.sigmoid_cross_entropy_with_logits


10
因此logit与“得分”相同
Charlie Parker

1
我建议在您的答案中添加一条线,以明确区分Logit函数(统计量)和logits层(张量流)
AneesAhmed777 '18

61

摘要

在深度学习的上下文中,logits层是指馈入softmax(或其他此类归一化)的层。softmax的输出是分类任务的概率,其输入是logits层。logits层通常产生-infinity到+ infinity的值,而softmax层将其转换为0到1的值。

历史背景

这个词从哪里来?在1930年代和40年代,一些人试图使线性回归适应预测概率的问题。但是,线性回归会产生从-infinity到+ infinity的输出,而对于概率,我们所需的输出是0到1。做到这一点的一种方法是通过某种方式将0到1的概率映射到-infinity到+ infinity,然后照常使用线性回归。一种这样的映射是切斯特·伊特纳·布利斯(Chester Ittner Bliss)在1934年使用的累积正态分布,他称这种“概率”模型为“概率单位”的缩写。但是,此函数在计算上很昂贵,同时缺少用于多类分类的某些理想属性。1944年,约瑟夫·伯克森(Joseph Berkson)使用了该函数log(p/(1-p))进行这种映射,并将其称为logit,是“物流单位”的缩写。逻辑回归一词也由此衍生。

混乱

不幸的是,logits一词在深度学习中被滥用。从纯数学角度看,logit是执行上述映射的功能。在深度学习中,人们开始将输入Logit函数的层称为“ logits层”。然后人们开始将这一层的输出称为“ logit”,从而使logit 函数产生混乱。

TensorFlow代码

不幸的是,TensorFlow代码进一步增加了诸如之类的混乱tf.nn.softmax_cross_entropy_with_logits。logit在这里是什么意思?这只是意味着函数的输入应该是如上所述的最后一个神经元层的输出。该_with_logits后缀是多余的,混乱的和毫无意义的。函数的命名应不考虑此类非常具体的上下文,因为它们只是可以对从许多其他域派生的值执行的数学运算。实际上,TensorFlow具有另一个类似的功能sparse_softmax_cross_entropy,幸运的是,他们忘记添加_with_logits后缀,从而造成了不一致并加剧了混乱。另一方面,PyTorch只是简单地命名其功能而没有这些后缀。

参考

Logit模型/概率单位的演讲稿是理解Logit模型最好的资源之一。我还用上述一些信息更新了Wikipedia文章


31

个人理解,在TensorFlow域中,logit是用作softmax输入的值。我是基于这个tensorflow教程来理解的。

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


尽管logit是数学中的函数(尤其是统计学中的函数)是正确的,但我认为这与您正在查看的“ logit”不同。在伊恩·古德费洛(Ian Goodfellow)的《深度学习》一书中,他提到:

函数σ -1(x)在统计中称为logit,但该术语在机器学习中很少使用。σ -1(x)表示逻辑S形函数的反函数。

在TensorFlow中,它经常被视为最后一层的名称。在AurélienGéron 撰写的《使用Scikit-learn和TensorFLow进行动手机器学习》一书的第10章中,我遇到了这一段,它logits清楚地陈述了这一层。

请注意,这logits是在通过softmax激活函数之前神经网络的输出:出于优化的原因,我们将在稍后处理softmax计算。

也就是说,尽管我们在设计的最后一层中将softmax用作激活函数,但为了便于计算,我们将其logits单独取出。这是因为一起计算softmaxcross-entropy损失会更有效。请记住,这cross-entropy是一个成本函数,不用于正向传播。


12

这是对未来读者的简要回答。Tensorflowlogit定义为不应用激活函数的神经元输出:

logit = w*x + b,

x:输入,w:重量,b:偏差。而已。


以下与该问题无关。

有关历史讲座,请阅读其他答案。向Tensorflow的“创造性地”混淆命名习惯。在中PyTorch,只有一个CrossEntropyLoss,它接受未激活的输出。卷积,矩阵乘法和激活是相同级别的操作。该设计具有更多的模块化和更少的混乱。这是我从切换Tensorflow到的原因之一PyTorch


7

FOMO sapiens)。

如果检查数学Logit函数,它将实空间从[0,1]interval 转换为infinity [-inf, inf]

Sigmoid和softmax会做相反的事情。他们会将[-inf, inf]真实空间转换为[0, 1]真实空间。

这就是为什么在机器学习中,我们可能会在使用Sigmoid和softmax函数之前使用logit(因为它们匹配)。

这就是为什么“我们可以称之为” 什么机器学习是去前面乙状结肠SOFTMAX功能Logit模型

这是使用此术语的J. Hinton 视频

PS。我不建议您观看视频只是为了检查术语。


5

从本质上讲,它们是您可以从网络上获得的最完整的学习模型,在被压缩以仅应用于我们感兴趣的课程数量之前。请查看一些研究人员如何基于深度学习如何使用它们来训练浅层神经网络。网络已获悉:https : //arxiv.org/pdf/1312.6184.pdf

这有点像在详细学习一门学科时,您将学到很多次要点,但是在教学生时,您将尝试将其压缩到最简单的情况。如果学生现在尝试教书,那将是相当困难的,但是将其描述得足以使用该语言。


1

Logit(/lolodʒɪt/ L​​OH-jit)函数是在数学中,尤其是统计学中使用的S形“ logistic”函数或logistic变换的逆函数。当函数的变量表示概率p时,对数函数给出对数或对数p /(1- p)的对数。

参见此处:https//en.wikipedia.org/wiki/Logit


4
那是统计/数学。我们在这里谈论机器学习,这里logit有不同的含义。看到这个这个这个
AneesAhmed777

1

Logits

分类模型生成的原始(未归一化)预测向量,通常将其传递给归一化函数。如果模型正在解决多类分类问题,则logit通常会成为softmax函数的输入。然后,softmax函数会生成一个(归一化)概率向量,每个可能的类都有一个值。

另外,对数有时指的是S型函数的逐元素逆。有关更多信息,请参见tf.nn.sigmoid_cross_entropy_with_logits。

tensorflow官方文档


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.