损失,以尽量减少两个集合/集合的重叠



我想知道是否有一个损失函数可以测量两个集合/集的重叠(顺序无关紧要(。例如,地面实况是一个集合[a,b,c],而我的模型预测是一个集[b,E,f],重叠是[b]。我的目标是最大限度地扩大我的预测重叠。我们有一个损失函数可以测量重叠的大小吗?我可以最小化(负的(度量,结果我可以最大化重叠。(我知道REIFORCE学习之后可能会有一种解决方案,将重叠视为每个数据样本的奖励,并使用奖励来衡量损失,但我们有其他解决方案吗?(非常感谢。

正如p-Gn所指出的,这些系数的问题是它们的可微性。然而,可以定义与这些系数相似的可微测度。由Prune提出的IOU(交集超过并集(是一个很好的措施。对于深度学习任务,更受欢迎的是类似的骰子系数:

2 * len(A intersect B)/(len(A)+ len(B))

其范围在0(如果没有重叠(和1(对于相同集合(之间。对于二进制矢量,这可以公式化为

2 * abs(a.b)/(a**2 + b**2)

其中向量是集合的一个热编码表示。

现在,如果你神经网络中的最后一层有softmax激活(比如当你使用交叉熵时(,你可以将输出解释为属于你预测集的特定元素的概率。前面的公式仍然是集合之间交集的一个很好的度量,但仍然是可微的。所谓的骰子损失(1-骰子系数(是在本文中首先介绍的,在这里你可以阅读更多关于它的信息

此度量没有预定义的损失函数;你必须自己写。然而,集合重叠度量很容易找到。例如,len(A intersect B) / len(A union B)足够简单:无重叠为0.0;等式为1.0;您的情况是0.2:20%的可用元素处于重叠中。

这能让你动起来吗?

最新更新