首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用评估指标(如NDCG)作为损失函数?

是否可以使用评估指标(如NDCG)作为损失函数?
EN

Stack Overflow用户
提问于 2021-08-01 13:48:55
回答 1查看 1.2K关注 0票数 1

我正在研究一个名为DPR的信息检索模型,它基本上是一个神经网络(2 BERTs),给文档排序,给出一个查询。目前,该模型采用二进制方式(文档是否相关)进行训练,并使用负对数似然(NLL)损失。我想要改变这种二元行为,并创建一个模型,可以处理分级关联(就像3个等级:相关,不知何故相关,不相关)。我必须更改丢失函数,因为目前,我只能为每个查询分配一个正目标(DPR使用pytorch ),这不是我所需要的。

我想知道是否可以使用NDCG这样的评估指标来计算损失。我的意思是,损失函数的全部意义是告诉我们的预测结果如何,NDCG也在做同样的事情。

那么,我可以使用这样的度量来代替损失函数,但需要做一些修改吗?对于NDCG,我认为从1 (1 - NDCG_score)中减去结果可能是一个很好的损失函数。这是真的吗?

致以最良好的问候阿里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-02 12:34:29

是的,这是可能的。您可能希望应用列表式学习排序方法,而不是更标准的成对丢失函数。

在成对丢失时,网络提供了示例对(rel,non),而接地真相标签是二进制的(如果第一对中的第一个相关,则为1,否则为0)。

然而,在列表学习方法中,在训练期间,您将提供一个列表而不是一对,而基础真值(仍然是二进制值)将指示这个置换是否确实是最佳的,例如最大化nDCG的置换。在列表方法中,将排序目标转化为排列的分类。

有关更多细节,请参阅此

显然,网络不是以功能作为输入,而是使用查询的伯特向量和列表中的文档,类似于ColBERT。与ColBERT不同的是,您需要从两个文档中输入向量(成对训练),为了进行列表式培训,您需要使用来自5个文档的向量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68611032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档