![](/images/logo.jpg)
什么是logits
作者:王峰
链接:https://www.zhihu.com/question/60751553/answer/1986650670
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
logit原本是一个函数,它是sigmoid函数(也叫标准logistic函数)
但在深度学习中,logits就是最终的全连接层的输出,而非其本意。通常神经网络中都是先有logits,而后通过sigmoid函数或者softmax函数得到概率
什么时候我们会真的需要用到logit函数呢?考虑这样一个问题:如果我们拿到了一个黑盒模型的概率输出,想要用这个模型生成一批数据来distill(知识蒸馏)我们自己的模型,但distill过程往往又需要调节温度项来重新计算概率(大概是这么个形式:
但是,目前大家用得更多的是多分类的softmax函数,而它的反函数其实并不是logit函数,而是log函数
由此可见,使用logit一词来表示网络最后一层的输出,实际上只适用于logistic regression。而对于现在更多使用的多分类器softmax来说,其反函数应该是log函数,而非logit,继续用logit一词实际上是不恰当的。我个人倾向于使用“分数”或者直接说是最后一个全连接层的输出,这样比较形象,也不至于让初学者摸不到头脑。
Softmax和Log_softmax
Softmax是标准的归一化函数,可以简单的理解为将神经网络的输出
但是在计算的过程中,若是
经过适当变换
这样,
交叉熵损失函数CrossEntropyLoss
之前提到过什么是交叉熵损失函数 | RSIC's Blog (ranshuo-icer.github.io)
其公式为
即使用实际的分布
在深度学习的分类任务中,
上面提到,为了避免计算softmax时出现溢出问题,都是计算的nn.CrossEntropyLoss
,详见pytorch官方手册CrossEntropyLoss — PyTorch 2.0 documentation
那NLLLoss是什么呢?
NLLLoss — PyTorch 2.0 documentation
The negative log likelihood loss. It is useful to train a classification problem with C classes. The input given through a forward call is expected to contain log-probabilities of each class. Obtaining log-probabilities in a neural network is easily achieved by adding a LogSoftmax layer in the last layer of your network. You may use CrossEntropyLoss instead, if you prefer not to add an extra layer.
即 softmax + log + nllloss = crossentropyloss
- 本文标题:Pytorch损失函数CrossEntropyLoss和NLLLoss
- 创建时间:2023-06-16 14:00:00
- 本文链接:2023/06/16/深度学习/CrossEntropyLoss, NLLLoss有什么区别/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!