M.B*_*221 2 classification computer-vision deep-learning keras tensorflow
标题中问题的答案可能非常明显,因为它通常被称为“ArcFace Loss”。
然而,有一部分让我感到困惑:
我正在阅读 Arcface 损失的以下 Keras 实现:
https://github.com/4uiiurz1/keras-arcface
在其中,请注意该model.compile行仍然指定loss='categorical_crossentropy'
此外,我看到很多来源将 Softmax 称为损失函数,我之前理解它是许多分类神经网络的输出层的激活函数。
基于这两点混淆,我目前的理解是损失函数,即网络如何实际计算代表给定示例的“错误程度”的数字,无论如何都是交叉熵。而 ArcFace 和 Softmax 一样,是输出层的激活函数。
这是正确的吗?如果是这样,为什么 Arcface 和 Softmax 被称为损失函数?如果没有,我的困惑可能来自哪里?
小智 5
根据我的理解。您感到困惑的两件事如下-
您认为 ArcFace 是激活函数的假设是不正确的。ArcFace 确实是一个损失函数。如果你翻阅研究论文,作者提到他们使用传统的 softmax 函数作为最后一层的激活函数。(您可以检查调用函数是metrics.py文件。最后一行是
out = tf.nn.softmax(logits))。这意味着在应用了附加角余量惩罚后,他们仅将 logits 传递给了 softmax 函数。ArcFace 本身就是一个损失函数,这听起来可能很混乱,那为什么它使用 softmax?答案很简单,只是为了获得类的概率。
所以基本上他们所做的是他们应用了附加角边际惩罚,然后将获得的 logits 传递给 softmax 以获得类别概率并在此基础上应用分类交叉熵损失。
为了更好地了解工作流程,请查看下图 -
我觉得你的困惑可能是因为大多数人认为 softmax 是一种损失函数,尽管它并不是真正的损失。我在下面详细解释过。
我觉得你在 softmax 和分类交叉熵之间有点困惑。我将尽力解释两者之间的差异。
软最大
Softmax 只是一个函数而不是损失。它压缩 0 和 1 之间的值。它确保所有这些值的总和等于 1,即它具有很好的概率解释。
交叉熵损失
这实际上是一个损失函数。交叉熵损失的一般形式如下——
它有 2 个变体 -
二元交叉熵损失
它用于二元分类任务。
分类交叉熵损失/Softmax 损失
CCE 损失实际上称为 softmax 损失。由于 softmax 函数提供的概率解释,它被用于多类分类。
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |