一个神经网络中的回归和分类

数据挖掘 神经网络 张量流
2022-02-21 03:49:56

例如考虑对象定位问题。这里 NN 将有 5 个输出。output[0]将告诉图像中存在对象的概率,其他 4 个将告诉边界框坐标。正如我们所看到的,output[0]它必须使用交叉熵等分类损失,并且output[1]必须output[4]使用均方误差等回归损失。

所以总损失是这样的:

loss=Cross_entropy(output[0],Y[0])+MSE(output[1:5],Y[1:5]) #Y is true value

这样的损失是否可以以矢量化形式反向传播?我可以在张量流中实现这种损失吗?如果是,tensorflow 是如何做到的?它是否一次对向量或矩阵的每个元素而不是整个事物执行微分?

1个回答

是的,这些类型的损失函数可以使用反向传播进行优化,也在 Tensorflow 中。

损失的值是一个标量(与交叉熵或 MSE 相同,否则您将无法添加它们),这意味着它与仅针对任何其他标量进行优化没有任何不同损失函数。只要计算损失函数所涉及的操作足够可微(“平滑”),Tensorflow(或任何其他进行自动微分的框架)就不会在意。

可以这样想:计算任何有趣的损失函数都需要总结一堆生活在高维向量空间中的术语。在这种情况下,对于该向量空间中的某些方向,您对其应用与该向量空间中其他方向不同的函数。对 Tensorflow 来说并不重要。

但重要的是你如何对它们求和:由于交叉熵和 MSE 不在同一类型的单位上工作(想想维度分析),你必须确定它们之间的某种比例。您可以将其视为一个超参数,您可以在其中选择分类正确的重要性与边界框的正确程度。