在TensorFlow中单词logits的含义是什么?

Mil*_* P. 191 machine-learning neural-network deep-learning tensorflow cross-entropy

在下面的TensorFlow函数中,我们必须在最后一层中提供人工神经元的激活.我明白了 但我不明白为什么它被称为logits?这不是一个数学函数吗?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)
Run Code Online (Sandbox Code Playgroud)

Sal*_*ali 170

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


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

在此输入图像描述

概率0.5对应于logit为0.负对数对应于小于0.5的概率,对于> 0.5为正.

在ML,它可以

分类模型生成的原始(非标准化)预测的向量,通常然后传递给归一化函数.如果模型正在解决多类分类问题,则logits通常成为softmax函数的输入.然后softmax函数生成(标准化)概率的向量,每个可能的类具有一个值.

Logits 有时也指sigmoid函数的逐元逆.

  • 对于Tensorflow:这是一个名称,它被认为暗示这个Tensor是Softmax映射到概率的数量. (109认同)
  • 个人理解,在TensorFlow域中,logits是用作softmax输入的值.我基于这个tensorflow教程得出了这种理解. (3认同)
  • 这与在 softmax 之前求幂的结果一样吗?即“softmax(logit) = exp(logit)/Z(logit)”然后“logit = h_NN(x)”?那么 logit 与“分数”相同吗? (2认同)
  • 我不确定这是否能回答问题。也许这就是为什么它从未被接受的原因。我了解logit函数是什么,但也使我感到困惑,为什么Tensorflow会调用这些参数logits。Tensorflow函数中的几个参数的名称也相同 (2认同)

Tri*_*ath 66

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

Softmax是一个映射[-inf, +inf][0, 1]类似Sigmoid 的函数.但Softmax还将值(输出矢量)的总和归一化为1.

Tensorflow"with logit":表示您正在应用softmax函数来记录数字以对其进行标准化.input_vector/logit未规范化,可以从[-inf,inf]缩放.

该规范化用于多类分类问题.对于多标签分类问题,使用sigmoid归一化即tf.nn.sigmoid_cross_entropy_with_logits

  • logit与"得分"相同 (9认同)

Ane*_*777 56

只是添加这个澄清,以便任何滚动这么多的人至少可以做到正确,因为有很多错误的答案被投票.

Diansheng 的回答和JakeJ的回答是正确的.Shital Shah发布的
新答案是一个更好,更完整的答案.


是的,logit 作为统计学中的数学函数,但在logit神经网络的背景下使用是不同的.统计logit在这里甚至没有任何意义.


我无法在任何地方找到正式的定义,但logit基本上意味着:

从神经网络的最后一层出来的原始预测.
这是你应用argmax函数得到预测类的张量.
2.这是你提供softmax函数的张量,以获得预测类的概率.


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

Logits Layer

我们的神经网络中的最后一层是logits层,它将返回我们预测的原始值.我们创建了一个包含10个神经元的密集层(每个目标类0-9一个),线性激活(默认):

logits = tf.layers.dense(inputs=dropout, units=10)
Run Code Online (Sandbox Code Playgroud)

如果你仍然感到困惑,情况是这样的:

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)
Run Code Online (Sandbox Code Playgroud)

在哪里,predicted_class_index_by_raw并且predicted_class_index_by_prob将是平等的.

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


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


琐事

尽管如此,如果你愿意,你可以应用统计logitprobabilities而来的出softmax功能.

如果某个类的概率p,
然后数优势该类的是L = logit(p).

此外,p = sigmoid(L)使用该sigmoid函数可以恢复该类的概率.

虽然计算log-odds不是很有用.


Shi*_*hah 40

摘要

在深度学习的背景下,logits层意味着输入softmax(或其他此类规范化)的层.softmax的输出是分类任务的概率,其输入是logits层.logits图层通常会生成从-infinity到+ infinity的值,softmax图层会将其转换为0到1之间的值.

历史背景

这个术语来自哪里?在20世纪30年代和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.logits在这里意味着什么?它只是意味着函数的输入应该是如上所述的最后神经元层的输出.该_with_logits后缀是多余的,混乱的和毫无意义的.应该命名函数而不考虑这种非常特定的上下文,因为它们只是可以对从许多其他域派生的值执行的数学运算.事实上,TensorFlow还有另一个类似的功能sparse_softmax_cross_entropy,幸运的是忘记添加_with_logits后缀创建不一致并加入混乱.另一方面,PyTorch只是简单地命名它的函数而没有这些后缀.

参考

Logit模型/概率单位的演讲稿是理解Logit模型最好的资源之一.我还用上面的一些信息更新了维基百科的文章.

  • “从纯数学的角度来看,logit 是一个执行上述映射的函数。”这一段是错误的。在统计学中,通常将概率本身的 logit 称为“logits”。“输入 logit 函数”的 SoftMax 函数不是 logit 函数,而是它的反函数,即(多项式)**logistic** 函数。 (2认同)

Dia*_*eng 25

个人理解,在TensorFlow域中,logits是用作softmax输入的值.我基于这个tensorflow教程得出了这种理解.

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


虽然logit是数学中的一个函数(特别是在统计学中),但我认为你所看到的'logit'并不相同.在伊恩·古德费罗的" 深度学习 "一书中,他提到,

函数σ -1(x)在统计学中称为logit,但这个术语在机器学习中很少使用.σ -1(x)代表logistic Sigmoid函数的反函数.

在TensorFlow中,它经常被视为最后一层的名称.在AurélienGéron的Scikit-learn和TensorFLow手动机器学习一书的第10章中,我看到了这一段,它logits清楚地说明了这一层.

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

也就是说,虽然我们在设计的最后一层使用softmax作为激活函数,但为了便于计算,我们logits分别取出.这是因为一起计算softmaxcross-entropy丢失更有效.请记住,这cross-entropy是一种成本函数,不用于前向传播.


pro*_*sti 22

FOMO智人)。

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

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

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

这就是为什么“我们可以称”机器学习中在sigmoidsoftmax函数前面的任何东西logit

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


Jon*_*Lee 10

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

logit = w*x + b,
Run Code Online (Sandbox Code Playgroud)

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


以下与该问题无关。

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


Vin*_*aju 9

登录

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

此外,logits 有时指的是 sigmoid 函数的逐元素逆函数。有关更多信息,请参阅 tf.nn.sigmoid_cross_entropy_with_logits。

官方张量流文档


Jak*_*keJ 6

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

这有点像在详细学习一个主题时,您会学到很多小点,但是在教学生时,您会尝试将其压缩为最简单的情况。如果学生现在尝试教学,那将是相当困难的,但是能够很好地描述它以使用该语言。