Answers:
Logits是一个重载术语,可能意味着许多不同的含义:
在Math中,Logit是一个将概率([0, 1]
)映射到R((-inf, inf)
)的函数
0.5的概率对应于0的对数。负的logit对应于小于0.5的概率,大于等于0.5为正。
在ML中,可以是
分类模型生成的原始(未归一化)预测向量,通常将其传递给归一化函数。如果模型正在解决多类分类问题,则logit通常会成为softmax函数的输入。然后,softmax函数会生成一个(归一化)概率向量,每个可能的类都有一个值。
Logits 有时也指S型函数的逐元素逆。
softmax(logit) = exp(logit)/Z(logit)
再logit = h_NN(x)
?因此logit与“分数”相同吗?
[1, 0.5, 0.5]
通过归一化[0.5, 0.25, 0.25]
,然后[0,]
如果一个热点,soft max会成为[1, 0, 0]
?还是刚放出[1, 0, 0]
导致输出应该是向量?
只需添加此说明,以使任何向下滚动这么多的人至少都能正确理解,因为提出了很多错误的答案。
点声的答案和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
进行统计。probabilities
softmax
如果某类的概率为p
,
则该类的对数奇数为L = logit(p)
。
同样,可以p = sigmoid(L)
使用sigmoid
函数将该类的概率恢复为。
虽然对计算对数几率不是很有用。
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
Logit
函数(统计量)和logits
层(张量流)
摘要
在深度学习的上下文中,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文章。
个人理解,在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
单独取出。这是因为一起计算softmax
和cross-entropy
损失会更有效。请记住,这cross-entropy
是一个成本函数,不用于正向传播。
从本质上讲,它们是您可以从网络上获得的最完整的学习模型,在被压缩以仅应用于我们感兴趣的课程数量之前。请查看一些研究人员如何基于深度学习如何使用它们来训练浅层神经网络。网络已获悉:https : //arxiv.org/pdf/1312.6184.pdf
这有点像在详细学习一门学科时,您将学到很多次要点,但是在教学生时,您将尝试将其压缩到最简单的情况。如果学生现在尝试教书,那将是相当困难的,但是将其描述得足以使用该语言。
Logit(/lolodʒɪt/ LOH-jit)函数是在数学中,尤其是统计学中使用的S形“ logistic”函数或logistic变换的逆函数。当函数的变量表示概率p时,对数函数给出对数或对数p /(1- p)的对数。
分类模型生成的原始(未归一化)预测向量,通常将其传递给归一化函数。如果模型正在解决多类分类问题,则logit通常会成为softmax函数的输入。然后,softmax函数会生成一个(归一化)概率向量,每个可能的类都有一个值。
另外,对数有时指的是S型函数的逐元素逆。有关更多信息,请参见tf.nn.sigmoid_cross_entropy_with_logits。