张量流中最常用的二元分类损失函数?

数据挖掘 张量流 美国有线电视新闻网 图像分类
2021-10-04 19:51:14

我正在使用 CNN 模型研究二进制分类问题,该模型使用 tensorflow 框架设计,在我看到的大多数 GitHub 项目中,他们使用“softmax cross entropy with logits”v1 和 v2 作为损失函数,我的问题是:

1-为什么这种损失方法是最常用的一种?

2-这个函数的类型是什么,因为我对它的类型感到困惑。

3-函数的方程是什么?在 tensorflow 网站中,该等式不可用。

1个回答

我认为这里有些混乱。Softmax 通常是您将在输出层中使用的激活函数,而交叉熵是您将使用的损失函数。

软最大

这个激活函数输出每个类的概率,它被定义为

σ(yi)=eyijeyj.

例如,在具有 2 个类别标签的问题中。然后,如果我们有一些来自神经网络的输出,比如y=[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%,因此预测的类别标签,y^=1.

交叉熵

交叉熵是用于分类任务的损失函数。对于二元分类,它被定义为

H(p,q)=ylog(p)(1y)log(1p).

我们假设上面例子的真实类是0,y=0. 然后我们犯了一个错误,你可以看到

H(p,q)=0log(0.26894142)(10)log(10.26894142)=0.313.

这是用于反向传播的损失。