我想用深度学习来训练一个人脸/非人脸二元检测,我应该用什么损失,我认为是SigmoidCrossEntropyLoss或Hinge-loss。
是吗,但我也想知道我应该使用 softmax 但只有两个类吗?
我想用深度学习来训练一个人脸/非人脸二元检测,我应该用什么损失,我认为是SigmoidCrossEntropyLoss或Hinge-loss。
是吗,但我也想知道我应该使用 softmax 但只有两个类吗?
通常发现铰链损失和交叉熵具有相似的结果。这是另一篇比较不同损失函数的帖子在分类中选择不同损失函数以近似 0-1 损失的影响是什么。
是吗,但我也想知道我应该使用 softmax 但只有两个类吗?
Softmax 不是损失而是归一化函数,它经常与交叉熵损失一起使用,本质上等价于SigmoidCrossEntropyLoss
. 另请参阅输出层中的交叉熵或对数似然
通常,当您遇到样本只能属于一组类中的一个类的问题时,您可以将最后一层设置为 soft-max 层。它允许您将输出解释为概率。当使用 soft-max 层时,交叉熵通常效果很好,因为交叉熵中的对数项抵消了 soft-max 函数中存在的平台,因此加快了学习过程(想想远处的点从sigmoid 函数中的开始)。
在您的情况下,您有一个二进制分类任务,因此您的输出层可以是标准的 sigmoid(其中输出表示测试样本是人脸的概率)。您将使用的损失将是二元交叉熵。通过这种设置,您可以想象在深度神经网络的最后一层进行逻辑回归。
这里有几个链接给你。希望他们有所帮助。
https://en.wikipedia.org/wiki/Cross_entropy#Cross-entropy_error_function_and_logistic_regression
http://neuralnetworksanddeeplearning.com/chap3.html
https://www.quora.com/How-do-you-decide-which-loss-用于机器学习的功能
通常,对数损失将是首选,仅与单个输出单元结合使用。对数损失也称为二元交叉熵,因为它是交叉熵仅对两个类起作用的特例。
您绝对可以使用只有 2 个类别“Face”和“Not Face”的 softmax,并将 softmax 输出解释为置信度分数,这是一个很好的功能,可以让您对深度网络有所了解。
尝试 2 类 softmax 和二元铰链损失。最近有一篇论文Deep Learning using Linear Support Vector Machines using an SVM instead of a softmax classifier on top of deep conv nets,那里有一些有希望的结果。