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函数的逐元逆.
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
Ane*_*777 56
只是添加这个澄清,以便任何滚动这么多的人至少可以做到正确,因为有很多错误的答案被投票.
Diansheng 的回答和JakeJ的回答是正确的.Shital Shah发布的
新答案是一个更好,更完整的答案.
是的,logit 作为统计学中的数学函数,但在logit神经网络的背景下使用是不同的.统计logit在这里甚至没有任何意义.
我无法在任何地方找到正式的定义,但logit基本上意味着:
从神经网络的最后一层出来的原始预测.
这是你应用argmax函数得到预测类的张量.
2.这是你提供softmax函数的张量,以获得预测类的概率.
另外,从官方tensorflow网站上的教程:
Logits Layer
我们的神经网络中的最后一层是logits层,它将返回我们预测的原始值.我们创建了一个包含10个神经元的密集层(每个目标类0-9一个),线性激活(默认):
Run Code Online (Sandbox Code Playgroud)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)
Run Code Online (Sandbox Code Playgroud)
在哪里,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函数可以恢复该类的概率.
虽然计算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模型最好的资源之一.我还用上面的一些信息更新了维基百科的文章.
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分别取出.这是因为一起计算softmax和cross-entropy丢失更有效.请记住,这cross-entropy是一种成本函数,不用于前向传播.
Jon*_*Lee 10
这是对未来读者的简要回答。Tensorflow的logit定义为不应用激活函数的神经元输出:
logit = w*x + b,
Run Code Online (Sandbox Code Playgroud)
x:输入,w:重量,b:偏差。而已。
以下与该问题无关。
有关历史讲座,请阅读其他答案。对Tensorflow的“创造性地”混淆命名习惯。在中PyTorch,只有一个CrossEntropyLoss,它接受未激活的输出。卷积,矩阵乘法和激活是相同级别的操作。该设计具有更多的模块化和更少的混乱。这是我从切换Tensorflow到的原因之一PyTorch。
它们基本上是您可以从网络中获得的最完整的学习模型,在它被压缩以仅应用于我们感兴趣的类别数量之前。看看一些研究人员如何使用它们来训练基于深度的浅层神经网络网络了解到: https //arxiv.org/pdf/1312.6184.pdf
这有点像在详细学习一个主题时,您会学到很多小点,但是在教学生时,您会尝试将其压缩为最简单的情况。如果学生现在尝试教学,那将是相当困难的,但是能够很好地描述它以使用该语言。
| 归档时间: |
|
| 查看次数: |
80481 次 |
| 最近记录: |