TensorFlow中logits一词的含义是什么?
deep-learning
machine-learning
neural-network
tensorflow
9
0

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

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)
参考资料:
Stack Overflow
收藏
评论
共 9 个回答
高赞 时间 活跃

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

点声的答案和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_rawpredicted_class_index_by_prob将相等。

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


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


琐事

虽然,如果需要,您可以将统计logit应用于softmax函数产生的probabilities

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

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

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

收藏
评论

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

logit = w*x + b,

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


以下与该问题无关。

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

收藏
评论

FOMO智人)。

如果检查[-inf, inf] Logit函数,它将实空间从[0,1]间隔转换为无穷[-inf, inf]

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

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

这就是为什么“我们可以称呼”机器学习中出现在Sigmoid或softmax函数前面的任何东西的原因。

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

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

收藏
评论

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

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

收藏
评论

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


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

在此处输入图片说明

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

在ML中可以是

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

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

收藏
评论

摘要

在深度学习的上下文中, 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年,约瑟夫·伯克森log(p/(1-p)) 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 / Probit讲座幻灯片是了解Logit的最佳资源之一。我还用上述一些信息更新了Wikipedia文章

收藏
评论

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

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

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

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

收藏
评论

个人理解,在TensorFlow域中,logits是用作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是一个成本函数,在正向传播中不使用。

收藏
评论

logit(/lolodʒɪt/ LOH-jit)函数是数学中特别是统计学中使用的S型“ logistic”函数或logistic变换的逆函数。当函数的变量表示概率p时,对数函数给出对数或对数p /(1- p)的对数。

看到这里: https : //en.wikipedia.org/wiki/Logit

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号