logits

作者:王峰
链接:https://www.zhihu.com/question/60751553/answer/1986650670
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

logit原本是一个函数,它是sigmoid函数(也叫标准logistic函数) logits 的反函数: logits 。logit这个名字的来源即为logistic unit。

但在深度学习中,logits就是最终的全连接层的输出,而非其本意。通常神经网络中都是先有logits,而后通过sigmoid函数或者softmax函数得到概率 logits 的,所以大部分情况下都无需用到logit函数的表达式。

什么时候我们会真的需要用到logit函数呢?考虑这样一个问题:如果我们拿到了一个黑盒模型的概率输出,想要用这个模型生成一批数据来distill我们自己的模型,但distill过程往往又需要调节温度项来重新计算概率(大概是这么个形式: logits ),此时我们就需要从概率值反推logits了,而反推的过程就如上边的公式所述: logits 。所以对于logistic regression来说,logit恰好是输出概率经过logit函数的结果,因此即使我们并没有真正地用到logit函数,也不妨将其称作logit。

但是,目前大家用得更多的是多分类的softmax函数,而它的反函数其实并不是logit函数,而是log函数 logits ,这样再次经过softmax函数: logits ,就得到了原来的概率。这里需要注意的是:所有logits共同减去一个数字,其得到的softmax结果是不变的,所以得到的logits并不一定与原始logits一模一样,而是会相差一个常数。

由此可见,使用logit一词来表示网络最后一层的输出,实际上只适用于logistic regression。而对于现在更多使用的多分类器softmax来说,其反函数应该是log函数,而非logit,继续用logit一词实际上是不恰当的。我个人倾向于使用“分数”或者直接说是最后一个全连接层的输出,这样比较形象,也不至于让初学者摸不到头脑。

上一篇:pyppeteer入门


下一篇:PyTorch笔记--交叉熵损失函数实现