二元分类网络中输出单元的数量和损失函数

Posted

技术标签:

【中文标题】二元分类网络中输出单元的数量和损失函数【英文标题】:the number of the output unit and the loss function in binary classification network 【发布时间】:2018-05-10 18:28:39 【问题描述】:

假设我有一个二元分类任务,我构建了一个神经网络来执行此操作。 有两种不同的框架可供选择,第一种是网络有一个输出单元表示属于某个类的概率,因此我可以使用二元交叉熵来计算损失,第二种是网络有两个输出单位分别表示属于这两个类的概率,我也可以使用 softmax 交叉熵来计算损失。 有人建议使用第一个选项,我的困惑是这两个选项的优缺点是什么,如果我选择第二个框架,最严重的问题是什么?谁能给我详细解释一下?提前致谢。

【问题讨论】:

【参考方案1】:

如果您使用一个输出单元,那么您应该明白您是在两个类之间严格选择。如果概率足够高,那么您的网络选择 A 类,否则选择 B 类。如果您有两个输出单元,您的网络可能会为您的两个单元产生相当低的概率,因此您最终不会得到 A 或 B。您应该选择这两种方法中的哪一种取决于您尝试使用网络建模的真实系统。

【讨论】:

谢谢你的回复@Alexey R.我不太明白你的意思。即使网络有两个输出单元,比如 y = [x1,x2],我可以应用 softmax 函数来获得概率,你的意思是你的网络可能产生相当低的概率并不总是正确的。如果两个输出相差很大,我仍然可以得到一个类的相对较高的概率。 是的,但是如果结果都低,您将如何处理?在一个输出单元网络中你不会有这样的问题。 在这种情况下,说明网络无法准确预测类别,相当于输出0.5左右的网络只有一个输出单元。 是和不是。当你有一个输出时,你应该设置一个阈值,表明网络足以将你的输入分配给你的一个类。如果未达到此阈值,那么您接受您的输入属于 A 类,否则它将属于 B 类。没有其他选项,A 类或 B 类(两者都没有,也没有)。当您有两个输出时,您可以扩展处理结果的方式。

以上是关于二元分类网络中输出单元的数量和损失函数的主要内容,如果未能解决你的问题,请参考以下文章

Neural Networks: Learning 学习笔记

优化二元焦点损失和骰子损失

对于分类问题的神经网络最后一层的函数:sigmoidsoftmax与损失函数

深度学习常见的损失函数

pytorch 中分类网络损失函数

多标签分类损失函数