在回归分析中,交叉熵成本是否有意义?


13

在回归(相对于分类)的上下文中,交叉熵成本是否有意义?如果是这样,您可以通过TensorFlow给出一个玩具示例吗?如果没有,为什么不呢?

我正在阅读迈克尔·尼尔森(Michael Nielsen)的《神经网络和深度学习》中的交叉熵,它似乎可以自然地用于回归和分类,但是我不知道您如何在TensorFlow中有效地应用它。损失函数采用logit(我也不是很了解),它们在此处归类


2
我发现这里对Quora的是什么接受为这个问题的答案,指出从不同
亚洲时报Siddharth释迦

如果您阅读了整个答复,就会发现他给出了交叉熵的“连续版本”,这很酷,但事实证明它只是均方误差(MSE)。
JacKeown

Answers:


11

不,像tf.nn.sigmoid_cross_entropy_with_logits在回归任务中那样使用TensorFlow函数没有任何意义。在TensorFlow中,“交叉熵”是“分类交叉熵”的简写(或专业术语)。分类交叉熵是对概率的一种运算。回归问题试图预测连续的结果,而不是分类。

术语“交叉熵”有点误导,因为存在任何数量的交叉熵损失函数。但是,在机器学习中,将这种特殊损失称为“交叉熵”损失是一种惯例。

如果我们不仅仅关注链接到的TensorFlow函数,那么当然还有许多可能的交叉熵函数。这是因为交叉熵的一般概念是关于两个概率分布的比较。根据您要比较的两个概率分布,可能会得出与典型的分类交叉熵损失不同的损失。例如,高斯目标的交叉熵具有一些变化的平均值但固定的对角协方差,可以减小为均方误差。这些问题更详细地概述了交叉熵的一般概念:


5
虽然,应该提到的是,在输出值为[0,1]范围内的实数值的回归任务中,使用二进制交叉熵作为损失函数是一件相当合理和有效的事情。
今天

[0,1]

5

@Sycorax给出的答案是正确的。但是,值得一提的是,在输出值在[0,1]范围内的回归任务中使用(二进制)交叉熵是正确有效的做法。实际上,它用于图像自动编码器(例如,此处本文)。您可能会想在此答案中看到一个简单的数学证明,说明其在这种情况下为何起作用。


[0,1]

@InfProbSciX“ 处理输出在[0,1]范围内的任何回归可能不是一种合理的方法。” 那么“合理”在什么意义上呢?或如何定义特定任务损失函数的合理性?我怀疑该声明可能对任何损失函数都是正确的。当然,在定义“合理”之后,是否有任何损失函数可以合理地用于各种回归任务?
今天

Y=fθ(X)+ϵϵYBernoulli(pθ)二元交叉熵。如果定律是线性回归,并且在系数上具有先验先验,则损失对应于L2罚分,依此类推。在可能的情况下,我会制定一条法律,然后得出损失。
InfProbSciX

@InfProbSciX感谢您的答复。因此,正如您提到的,根据回归任务(以及对数据分布,错误等的假设),损失函数可能不合理。而且,正如我提到的,对于所有损失函数,包括交叉熵,都是如此。当然,我的观点是,仅因为输出值在[0,1]范围内,并不能保证交叉熵是最优选择损失函数,并且我也没有试图在答案中传达其他信息。
今天

5

深度学习框架通常将模型损失混合在一起,并用来引用具有softmax非线性的多项式模型的交叉熵cross_entropy。通常,您可以为任意模型定义交叉熵

fθ(x)ylogfθ(x),
y


2

不幸的是,@ Sycorax截至目前已接受的答案虽然很详细,但却是错误的。

事实上,通过分类交叉熵回归的一个很好的例子- Wavenet -已经实施的TensorFlow

原理是,您离散化输出空间,然后模型仅预测相应的仓位。看到的第2.2节为在声音建模域的例子。因此,在技术上模型进行分类时,最终要解决的任务是回归。

一个明显的缺点是,您将失去输出分辨率。但是,这可能不是问题(至少我认为Google的人工助手的声音很人性化),或者您可以进行一些后处理,例如在最可能的bin与它的两个邻居之间进行插值。

另一方面,与通常的单线性单位输出相比,此方法使模型更强大,即允许表达多模式预测或评估其置信度。注意,尽管后者可以自然地通过其他方式来实现,例如通过像变分自动编码器那样具有显式(对数)方差输出。

无论如何,这种方法不能很好地扩展到更高维度的输出,因为输出层的大小会以指数方式增长,从而导致计算和建模问题。


1
我明白您在说什么,但是我个人不会考虑将输出空间离散化为执行“回归”,就像使用分类来近似回归问题一样……但是我想这只是术语/约定的问题。
JacKeown

1
同意 无论如何,32位浮点空间是离散的:-)
dedObed '18

-1

由于现在我不同意先前接受的答案,因此我重新考虑了这个问题。交叉熵损失可用于回归分析(尽管并不常见)。

归结为一个事实,即交叉熵是仅在比较两个概率分布时才有意义的概念。您可以考虑将神经网络输出正态分布的均值和标准差作为其预测。然后,由于对错误的预测更有信心,因此将受到更严厉的惩罚。所以是的,这是有道理的,但前提是您要以某种方式输出分布。@SiddharthShakya在对我的原始问题的评论中的链接显示了这一点。


1
这个答案似乎以与被问到的方式不同的方式回答了问题。您在问题中链接的函数是关于一种特定类型的交叉熵损失,您的问题似乎是在询问这些函数是否可以用于回归,而我的回答写得就像您在询问如何使用这些函数一样。您链接到。这里的答案似乎回答了以下问题:“交叉熵可以广义地超越分类吗?” 编辑Q将使您清楚地将重点放在如何定义数学概念上,而不是集中在如何使用Tensorflow函数上。
Sycorax说恢复莫妮卡

我理解您的反对意见,但我打算按原样保留该问题,因为它代表了我的原始查询,我认为这可以帮助遇到相同问题的人们。无论如何,整个帖子应该总体上包含足够的信息。
JacKeown
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.