- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
标题中问题的答案可能非常明显,因为它通常被称为“ArcFace Loss”。
然而,有一部分让我感到困惑:
我正在阅读以下 Arcface 损失的 Keras 实现:
https://github.com/4uiiurz1/keras-arcface
在其中,注意 model.compile
行仍然指定 loss='categorical_crossentropy'
此外,我看到很多资料都将 Softmax 称为损失函数,我之前将其理解为许多分类神经网络输出层的激活函数。
基于这两点混淆,我目前的理解是损失函数,即网络实际如何计算代表“错误幅度”的数无论如何,给定的例子都是交叉熵。 ArcFace 和 Softmax 一样,是输出层的激活函数。
这是正确的吗?如果是这样,为什么 Arcface 和 Softmax 被称为损失函数?如果不是,我的困惑可能来自哪里?
最佳答案
根据我的理解。您感到困惑的两件事如下-
您认为 ArcFace 是激活函数的假设是不正确的。ArcFace 确实是一个损失函数。如果您阅读研究论文,作者会提到他们使用传统的 softmax 函数作为最后一层的激活函数。(你可以查看调用函数是metrics.py文件。最后一行是out = tf.nn.softmax(logits)
).这意味着在应用附加角度余量惩罚后,他们仅将 logits 传递给 softmax 函数。ArcFace 本身就是一个损失函数,这听起来可能很困惑,那为什么要使用 softmax?答案很简单,只是为了获得类别的概率。
So basically what they have done is that they have applied theadditive angular margin penalty, then passed the obtained logits to thesoftmax to get the class probabilities and applied categorical crossentropy loss on top of that.
为了更好地理解工作流程,请查看下图 -
I feel your confusion might be because of the fact that most people consider softmax to be a loss function, although it is not really aloss. I have explained it in detail below.
我觉得您对 softmax 和分类交叉熵有点混淆。我会尽力解释两者之间的区别。
软最大
Softmax 只是一个函数而不是损失。它压缩 0 和 1 之间的值。它确保所有这些值的总和等于 1,即它具有很好的概率解释。
交叉熵损失
这实际上是一个损失函数。 Cross Entropy loss的一般形式如下-
它有 2 个变体 -
二元交叉熵损失
它用于二元分类任务。
分类交叉熵损失/Softmax 损失
CCE loss其实就是softmax loss。由于 softmax 函数提供的概率解释,它被用于多类分类。
关于tensorflow - ArcFace 严格来说是损失函数还是激活函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59367784/
标题中问题的答案可能非常明显,因为它通常被称为“ArcFace Loss”。 然而,有一部分让我感到困惑: 我正在阅读以下 Arcface 损失的 Keras 实现: https://github.c
我是一名优秀的程序员,十分优秀!