在下面的TensorFlow功能,就必须在进料的最后层人工神经元的激活。 这我明白。 但我不明白为什么它被称为logits? 这不是一个数学函数?
loss_function = tf.nn.softmax_cross_entropy_with_logits(
logits = last_layer,
labels = target_output
)
在下面的TensorFlow功能,就必须在进料的最后层人工神经元的激活。 这我明白。 但我不明白为什么它被称为logits? 这不是一个数学函数?
loss_function = tf.nn.softmax_cross_entropy_with_logits(
logits = last_layer,
labels = target_output
)
Logits是一个重载的术语,它可能意味着许多不同的事情:
在数学 , Logit变换器是将概率函数( [0, 1]
至R( (-inf, inf)
0.5对应于0负分对数的分对数概率对应的概率小于0.5,正至> 0.5。
在ML,它可以
原始(非归一化)预言分类模型生成,这是通常然后被传递给归一化函数的向量。 如果模型是解决多类分类问题,logits通常成为输入SOFTMAX功能。 所述SOFTMAX函数然后生成的与每一个可能的类中的一个的值(归一化)的概率向量。
Logits也 有时指的是S形函数的逐元素逆。
分对数器是将概率函数[0, 1]
至[-inf, +inf]
。
使用SoftMax是映射函数[-inf, +inf]
至[0, 1]
类似乙状结肠。 但使用SoftMax还归一化值(输出向量)的总和为1。
Tensorflow“与Logit模型”:这意味着你的应用SOFTMAX功能来分对数数字来规范它。 所述input_vector /分对数不是归一化,并且可以从[-inf,INF]缩放。
这种标准化用于多类分类问题。 而对于多标签分类问题乙状结肠正常化使用即tf.nn.sigmoid_cross_entropy_with_logits
刚刚添加该澄清使任何人谁向下滚动这多少可以ATLEAST得到它的权利,因为有upvoted这么多错误的答案。
滇生的回答和JakeJ的回答得到它的权利。
一个新的答案张贴清淳沙阿是一个更美好,更完整的答案。
是的, logit
作为数学函数的统计数据, 但logit
在神经网络的情况下使用的是不同的。 统计logit
甚至没有任何意义在这里。
我找不到一个正式的definitoin任何地方,但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
功能。
不是非常有用的,但计算数优势。
个人的理解,在TensorFlow域,logits将被用作输入到SOFTMAX的值。 我来到在此基础上tensorflow教程这样的认识。
https://www.tensorflow.org/tutorials/layers
虽然这是事实,Logit模型是在数学函数(特别是在统计数据),我不认为这是相同的“Logit模型”你在看。 在这本书中深度学习伊恩·古德费洛,他提到,
函数σ-1(x)被称为统计的对数,但这个术语在机器学习更很少使用。 σ-1(x)的代表逻辑S形函数的反函数。
在TensorFlow,它经常被认为是最后一层的名称。 在这本书的第10章动手机器学习与Scikit学习和TensorFLow人AurélienGeron公司时,我看到这一段,其中指出来到logits
清楚层。
注意,
logits
是神经网络的输出之前通过SOFTMAX激活功能要:优化的原因,我们将在稍后处理SOFTMAX计算。
这就是说,虽然我们在最后一层在我们的设计中使用SOFTMAX作为激活功能,为便于计算,我们拿出logits
分开。 这是因为它是更有效的计算softmax
和cross-entropy
一起损失。 请记住, cross-entropy
是一个成本函数,在向前传播不使用。
摘要
在深学习的上下文logits层意味着在给SOFTMAX(或其它这样的归一化)的进料层。 所述SOFTMAX的输出都为分类任务的概率和其输入是logits层。 所述logits层典型地产生从负无穷值+无穷大,并且SOFTMAX层将其转换为值从0到1。
历史背景
哪里这个词从何而来? 在20世纪30年代和40年代,有几个人试图线性回归适应预测概率的问题。 然而而概率提供了期望的输出是0到1的一个方法来做到这一点是通过以某种方式0映射的概率为1,以负无穷到正无穷大,然后使用线性回归照常线性回归产生从负无穷大到正无穷大输出。 一个这样的映射是于1934年使用切斯特伊特纳极乐累积正态分布,他称之为“概率”的模式,是“概率单位”。 然而,这种功能是计算昂贵而缺乏一些为多类分类的所需特性。 在1944年约瑟夫伯克森所使用的函数log(p/(1-p))
来做到这一点的映射并称之为分对数,短期的“物流单元”。 源于此,以及术语回归。
在混乱
不幸的是,长期logits在深学习滥用。 从纯数学的角度分对数是上述映射执行功能 。 在深度学习的人开始叫,在给分对数函数喂层“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模型最好的资源之一。 我也更新了维基百科的文章有一些的上述信息。
这里是未来的读者一个简洁的回答。 Tensorflow
的logit
被定义为神经元的输出不施加激活函数:
logit = w*x + b,
X:输入,W:体重,B:偏压。 而已。
以下是无关紧要的这个问题。
由于历史的讲座,阅读其他的答案。 脱帽向Tensorflow
的‘创造性’混乱的命名约定。 在PyTorch
,仅存在一个CrossEntropyLoss
它接受未激活的输出。 卷积,矩阵乘法和激活相同级别的操作。 设计更加模块化,减少混乱。 这就是为什么我从切换的原因之一Tensorflow
到PyTorch
。
它们基本上是充分学习的模型,你可以从网络上获得,之前它已经压塌到只适用于类,我们感兴趣的数量。看看一些研究人员如何使用它们基于什么深刻的训练浅神经网络网络了解到: https://arxiv.org/pdf/1312.6184.pdf
这是一种怎么样的学习详细的被摄体时,你会学到许多小问题,但随后教的学生的时候,你会尝试将其压缩到最简单的情况。 如果学生现在试图教,这将会是相当困难的,但将能够描述它只是不够好,使用的语言。
分对数(/loʊdʒɪt/ LOH-JIT)函数是S形“物流”的功能或逻辑的逆在数学变换所使用的,特别是在统计信息。 当该功能的变量表示概率p,分对数函数给出的对数可能性,或赔率的p /的对数(1 - P)。
在这里看到: https://en.wikipedia.org/wiki/Logit
Logits经常是在Tensorflow输出层的Ž函数的值。