关于在Caffe中的二元分类

3
当解决二分类问题时,我认为在caffe中有两种可能的方法。
第一种方法是使用一个输出单元的"SigmoidCrossEntropyLossLayer"
另一种方法是使用两个输出单元的"SoftmaxWithLossLayer"
我的问题是这两种方法之间有什么区别?
应该使用哪一个?
非常感谢!
1个回答

1
如果你对数学稍加处理,可以将“Sigmoid”层的预测类概率“复制”为类1的0.5*x_i和类0的-0.5*x_i,那么“SoftmaxWithLoss”层就相当于在单个输出预测x_i上使用“SigmoindWithCrossEntropy”。因此,我认为这两种方法可以被视为预测二元输出的等效方法。

也许应该使用SigmoindWithCrossEntropy,因为它在最后一层具有较少的参数? - kli_nlpr
@whjxnyzh 这是一个有趣的考虑。就个人而言,我更喜欢使用SoftmaxWithLoss。可能是因为老习惯了吧... - Shai
1
谢谢@Shai。是的,在caffe中,SoftmaxWithLoss很方便,我们可以使用AccuracyLayer来获取准确性。 但是,由于SigmoidWithCrossEntropy损失只有一个输出,因此我们无法使用AccuracyLayer。 从数学上讲,这两个损失函数是相同的,事实上,SoftmaxWithLoss在进行二元分类时是过度参数化的。请参阅http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/“与逻辑回归的关系”部分。 - kli_nlpr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接