我正在使用 CNN 模型研究二进制分类问题,该模型使用 tensorflow 框架设计,在我看到的大多数 GitHub 项目中,他们使用“softmax cross entropy with logits”v1 和 v2 作为损失函数,我的问题是:
1-为什么这种损失方法是最常用的一种?
2-这个函数的类型是什么,因为我对它的类型感到困惑。
3-函数的方程是什么?在 tensorflow 网站中,该等式不可用。
我正在使用 CNN 模型研究二进制分类问题,该模型使用 tensorflow 框架设计,在我看到的大多数 GitHub 项目中,他们使用“softmax cross entropy with logits”v1 和 v2 作为损失函数,我的问题是:
1-为什么这种损失方法是最常用的一种?
2-这个函数的类型是什么,因为我对它的类型感到困惑。
3-函数的方程是什么?在 tensorflow 网站中,该等式不可用。
我认为这里有些混乱。Softmax 通常是您将在输出层中使用的激活函数,而交叉熵是您将使用的损失函数。
这个激活函数输出每个类的概率,它被定义为
.
例如,在具有 2 个类别标签的问题中。然后,如果我们有一些来自神经网络的输出,比如=[3, 4] 那么我们可以通过对这些输出使用softmax函数来获得每个输出类的概率。
import numpy as np
x = [3, 4]
np.exp(x)/np.sum(np.exp(x))
[0.26894142, 0.73105858]
您将看到这些是概率并且总和为 1。
然后我们可以通过查看哪个概率更高来获得输入的类别。在这种情况下,类别 2 的概率为 73.11%,因此预测的类别标签,.
交叉熵是用于分类任务的损失函数。对于二元分类,它被定义为
.
我们假设上面例子的真实类是0,. 然后我们犯了一个错误,你可以看到
.
这是用于反向传播的损失。