在下面的TensorFlow函数中,我们必须在最后一层提供人工神经元的激活。我明白了但我不明白为什么它被称为logits?这不是一个数学函数吗?
loss_function = tf.nn.softmax_cross_entropy_with_logits(
logits = last_layer,
labels = target_output
)
答案 0 :(得分:134)
Logits是一个重载的术语,可能意味着很多不同的东西:
在数学中,Logit是一个将概率([0, 1]
)映射到R((-inf, inf)
)的函数
0.5的概率对应于0的logit。负对数对应于小于0.5的概率,对于>为正。 0.5。
在ML 中,can be
原始(非标准化)预测的向量即分类 模型生成,通常然后传递给标准化 功能。如果模型正在解决多类分类 问题,logits通常成为softmax函数的输入。该 softmax函数然后生成(标准化)概率的向量 每个可能的类都有一个值。
Logits sometimes指的是sigmoid函数的逐元逆。
答案 1 :(得分:55)
Logit 是将概率[0, 1]
映射到[-inf, +inf]
的函数。
Softmax 是一个将[-inf, +inf]
映射到[0, 1]
的函数,类似于Sigmoid。但Softmax还将值(输出矢量)的总和归一化为1。
Tensorflow" logit" :这意味着您正在应用softmax函数来记录数字以对其进行标准化。 input_vector / logit未规范化,可以从[-inf,inf]缩放。
此规范化用于多类分类问题。对于多标签分类问题,使用Sigmoid归一化,即tf.nn.sigmoid_cross_entropy_with_logits
答案 2 :(得分:32)
只是添加这个澄清,以便任何向下滚动这么多的人都能得到它,因为有很多错误的答案被投票赞成。
Diansheng的answer和JakeJ的answer做对了 Shital Shah发布的A new answer是一个更好,更完整的答案。
是的,logit
作为统计数据中的数学function,但神经网络上下文中使用的logit
不同。统计logit
在这里甚至没有任何意义。
我无法在任何地方找到正式的定义,但logit
基本上意味着:
从神经网络的最后一层出来的原始预测 1.这是你应用
argmax
函数来获得预测类的张量 2.这是你在softmax
函数中输入的张量,以获得预测类的概率。
此外,来自官方张量流网站上的tutorial:
Logits Layer
我们的神经网络中的最后一层是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
......我不知道。遗憾。德尔>
[编辑:请参阅this answer了解该术语背后的历史动机。]
虽然如果您愿意,但您可以将logit
统计probabilities
应用于softmax
函数中的p
。
如果某个班级的概率是L = logit(p)
,则
然后该类的 log-odds 为p = sigmoid(L)
。
此外,使用sigmoid
函数可以将该类恢复为{{1}}。
虽然计算对数赔率不是很有用。
答案 3 :(得分:24)
个人理解,在TensorFlow域中,logits是要用作softmax输入的值。我基于这个tensorflow教程得出了这种理解。
https://www.tensorflow.org/tutorials/layers
虽然logit是数学中的一个函数(特别是在统计学中),但我认为你所看到的'logit'并不相同。在Ian Goodfellow的“深度学习”一书中,他提到了,
函数σ -1 (x)在统计学中称为logit,但是这个术语 更少用于机器学习。 σ -1 (x)代表 Logistic Sigmoid函数的反函数。
在TensorFlow中,它经常被视为最后一层的名称。在AurélienGéron所着的“em> Hands-on Machine Machine with Scikit-learn和TensorFLow ”一书的第10章中,我看到了这一段,其中明确指出了logits
层。
请注意
logits
是之前神经网络的输出 通过softmax激活功能:出于优化原因,我们 将在稍后处理softmax计算。
也就是说,虽然我们在设计的最后一层使用softmax作为激活函数,但为了便于计算,我们分别取出logits
。这是因为一起计算softmax
和cross-entropy
损失更有效。请记住cross-entropy
是一种成本函数,不用于前向传播。
答案 4 :(得分:16)
摘要
在深度学习中,logits layer表示向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层”。然后人们开始将这一层的输出 values 称为“ logit”,从而与logit 函数产生混淆。
TensorFlow代码
不幸的是,TensorFlow代码进一步使诸如tf.nn.softmax_cross_entropy_with_logits
之类的名称更加混乱。 logit在这里是什么意思?这只是意味着该函数的输入应该是如上所述的最后一个神经元层的输出。 _with_logits
后缀是redundant, confusing and pointless。函数的命名应不考虑此类非常具体的上下文,因为它们只是可以对从许多其他域派生的值执行的数学运算。实际上,TensorFlow还有另一个类似的功能sparse_softmax_cross_entropy
,幸运的是,他们忘记添加了_with_logits
后缀,从而造成了不一致并增加了混乱。另一方面,PyTorch只是简单地为其功能命名,而没有这些后缀。
参考
Logit/Probit lecture slides是理解logit的最佳资源之一。我还用上述一些信息更新了Wikipedia article。
答案 5 :(得分:7)
这里是对未来读者的简要回答。 Tensorflow
的{{1}}被定义为不应用激活函数的神经元输出:
logit
x:输入,w:重量,b:偏差。就是这样。
以下与该问题无关。
有关历史讲座,请阅读其他答案。向logit = w*x + b,
的“创造性地”令人困惑的命名惯例致敬。在Tensorflow
中,只有一个PyTorch
,它接受未激活的输出。卷积,矩阵乘法和激活是相同级别的操作。该设计具有更多的模块化和更少的混乱。这是我从CrossEntropyLoss
切换到Tensorflow
的原因之一。
答案 6 :(得分:5)
分类模型生成的原始(非标准化)预测向量,通常将其传递给标准化函数。如果模型正在解决多类分类问题,则logit通常会成为softmax函数的输入。然后,softmax函数会生成一个(归一化)概率向量,每个可能的类都有一个值。
此外,logit有时是指S型函数的逐元素逆。有关更多信息,请参见tf.nn.sigmoid_cross_entropy_with_logits。
答案 7 :(得分:4)
它们基本上是你可以从网络中获得的最完整的学习模型,然后才被压缩,只适用于我们感兴趣的课程数量。查看一些研究人员如何使用它们训练基于的浅层神经网络深层网络学到了什么:https://arxiv.org/pdf/1312.6184.pdf
有点像在详细学习一门课程时,你会学到很多小问题,但是当教学生时,你会尝试将它压缩到最简单的情况。如果学生现在尝试教学,那就很难了,但是能够很好地描述它以便使用这门语言。
答案 8 :(得分:3)
logit(/loʊdʒɪt/ LOH-jit)函数是数学中使用的S形“逻辑”函数或逻辑变换的反函数,尤其是在统计学中。当函数的变量表示概率p时,logit函数给出log-odds,或者赔率的对数p /(1-p)。
答案 9 :(得分:0)
(FOMO智人)。
如果您检查Math Logit函数,它将把实空间从[0,1]
间隔转换为无穷大[-inf, inf]
。
Sigmoid和softmax会做相反的事情。他们会将[-inf, inf]
实际空间转换为[0, 1]
实际空间。
这就是为什么在机器学习中我们可以在使用Sigmoid和softmax函数之前使用logit(因为它们匹配)。
这就是为什么机器学习中的“我们可以称呼” 任何东西出现在Sigmoid或softmax函数前面的原因。
此词是J. Hinton video所用。
PS。我不建议您观看视频只是为了检查术语。
答案 10 :(得分:-2)
登录通常是Tensorflow中输出层的Z函数的值。