文章目录

  • 引言
  • 一、rank 评估指标—MAP、NDCG
    • 1.MAP
    • 2. NDCG
    • 3.两者比较
  • 二、Point-wise/Pair-wise/List-wise
  • 三、RankNet
  • 四、LambdaRank
  • 五、LambdaMART
  • 五、Context free Grammar(CFG)
  • 六、CKY算法
  • 七、工业界常用手段

引言

  在前面几部分我们学习了检索式对话系统的召回(recall),召回可以从海量数据中快速找到相似的Top K文本?一种是基于字符串的召回,比如:BM25+倒排索引;另一种是基于向量的召回,比如:HNSW、Annoy、SIF。对召回结果进行重新排序叫做Ranking。

一、rank 评估指标—MAP、NDCG

1.MAP

  MAP(Mean Average Precision):平均准确率是相关文档检索出后的准确率的平均值。 反映系统在全部相关文档的性能单值指标,检索出来的相关文档越靠前(rank 越高),MAP就可能越高。MAP:分子是第几个文档,分母是rank数,多个相加然后求平均
例如:假设有两个主题: 主题1有4个相关网页, 主题2有5个相关网页。 某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;对于主题2检索出3个相关网页,其rank分别为1,3,5。
MAP=(11+22+34+47)/4MAP=(11+23+35+4∞+5∞)/5MAP=(\frac{1}{1}+\frac{2}{2}+\frac{3}{4}+\frac{4}{7})/4\\MAP=(\frac{1}{1}+\frac{2}{3}+\frac{3}{5}+\frac{4}{∞}+\frac{5}{∞})/5MAP=(11​+22​+43​+74​)/4MAP=(11​+32​+53​+∞4​+∞5​)/5

2. NDCG

  NDCG(Normalized Discounted Cumulative Gain),NDCG有如下优势:

  1. 高关联度的结果比一般关联度的结果更影响最终的指标得分;
  2. 有高关联度的结果出现在更靠前的位置的时候,指标会越高

    NDCG=DCGIDCGNDCG=\frac{DCG}{IDCG}NDCG=IDCGDCG​
    举个例子:
    假设搜索回来的6个结果,其相关性分数分别是 3、2、3、0、1、2 那么:
    CG=3+2+3+0+1+2CG = 3+2+3+0+1+2CG=3+2+3+0+1+2
    DCG:

    那么在理想情况下的相关性分数排序应该是:3、3、3、2、2、1、0、0,理想情况下的IDCG:

    此时,
    NDCG=DCGIDCG=6.868.37NDCG=\frac{DCG}{IDCG}=\frac{6.86}{8.37}NDCG=IDCGDCG​=8.376.86​

3.两者比较

  Information Retrieval的评价指标包括MAP、NDCG。NDCG对doc的相关性划分多个(>2)等级,而MAP只会对doc的相关性划分2个等级(相关和不相关)。并且,这些指标都包含了doc位置信息(给予靠前位置的doc以较高的权重),这很适合于web search。然而,这些指标的缺点是不平滑、不连续,无法求梯度,如果将这些指标直接作为模型评分的函数的话,是无法直接用梯度下降法进行求解的。

二、Point-wise/Pair-wise/List-wise

  Point-wise(单文档方法)

Pointwise常用方法有McRank等
优点:
速度快,标注简单,复杂度低
缺点:

  1. ranking 追求的是排序结果,并不要求精确打分,只要有相对打分即可。
  2. pointwise 类方法并没有考虑同一个query 对应的 docs 间的内部依赖性(docs之间的排序)。
  3. 损失函数也没有model 到预测排序中的位置信息。因此,损失函数可能无意的过多强调那些不重要的docs,即那些排序在后面对用户体验影响小的doc。
  4. query间doc的不平衡,如query1对应500个文档,query2对应10个文档

  Pair-wise(文档对方法)

L=max{0,m−(hθ(qi,ci+)−hθ(qi,ci−))}L=max\{0,m-(h_\theta(q_i,c_i^+)-h_\theta(q_i,c_i^-))\}L=max{0,m−(hθ​(qi​,ci+​)−hθ​(qi​,ci−​))}
Pairwise有很多的实现,比如Ranking SVM,RankNet,Frank,RankBoost等。
Pair-wise的缺点:

  1. doc pair 的数量将是 doc 数量的二次,从而 pointwise 方法存在的 query 间 doc 数量的不平衡性将在pairwise 类方法中进一步放大。
  2. pairwise 方法相对 pointwise 方法对噪声标注更敏感,即一个错误标注会引起多个 doc pair 标注错误。
  3. pairwise 方法仅考虑了 doc pair 的相对位置,损失函数还是没有 model 到预测排序中的位置信息

  List-wise(文档列表方法)

它是将每个查询对应的所有搜索结果列表作为一个训练样例。Listwise根据训练样例训练得到最优评分函数S,对应新的查询,评分S对每个文档打分,然后根据得分由高到低排序,即为最终的排序结果。

SSS是所有候选回答句子的排序,标签YYY是原有的排序,可以利用rank指标—MAP、NDCG来衡量。
Listwise常用方法有AdaRank,SoftRank,LambdaMART等。

三、RankNet

   原本Ranking常见的评价指标都无法求梯度,因此没法直接对评价指标做梯度下降,而它们不适宜用梯度下降求解的Ranking 问题,转化为对偏序概率的交叉熵损失函数的优化问题,从而适用梯度下降法。
   RankNet方法就是使用交叉熵作为损失函数,学习出一些模型(例如神经网络、决策树等)来计算每个pair的排序得分,学习模型的过程可以使用梯度下降法。

  • 输入:query的许多个文档结果,每个文档需要人为标注得分,等分越高的说明排名越靠前;

  • 输出:打分模型f(d,w)f(d, w)f(d,w)。ddd为文档特征,www为模型参数

  • Step 1:把query的结果分成pair,计算pair中排名的概率。在pair中,如果UiU_iUi​排在UjU_jUj​的前面,概率为:


    si=f(xi,w)sj=f(xj,w))s_i=f(x_i,w)\\s_j=f(x_j,w))si​=f(xi​,w)sj​=f(xj​,w))
    而UiU_iUi​排在UjU_jUj​的前面的真实概率计算为:

    其中Sij=1S_{ij}=1Sij​=1表明UiU_iUi​真实情况就是排在UjU_jUj​的前面;否则,就是UiU_iUi​排在UjU_jUj​的后面。

  • Step 2:交叉熵作为损失函数



    这个损失函数是用来衡量PijP_{ij}Pij​和Pij‾\overline{P_{ij}}Pij​​的拟合程度的,当两个文档的不相关时,给与了一定的惩罚,让它们分开。RankNet算法没有使用学习排序中的一些衡量指标直接作为损失函数的原因在于,它们的函数形式都不是很连续,不太好求导,也就不太好用梯度下降法。而交叉熵的函数形式比较适合梯度下降法。

  • Step 3:梯度下降法更新迭代求最优的模型参数w。显然,我们需要设置一定的学习步长,不断的更新学习新的w,具体公式如下:

    后面就是求损失函数C关于w的偏导计算公式如下:


    其中,

    上式中,得分s关于w的偏导和具体的学习模型有关,原始的RankNet方法使用的是神经网络模型。这个需要具体模型,具体分析。这样我们便知道了如何通过梯度下降法来求RankNet中的打分模型了。

上面的是对于每一对pair都会进行一次权重的更新,其实是可以对同一个query下的所有文档pair全部带入神经网络进行前向预测,然后计算总误差并进行误差后向反馈,这样将大大减少误差反向传播的次数。假设有三个doc,其损失函数C关于www的偏导计算为:

从原先对每一个pair对都会进行一次权重的更新,到对同一个query下的所有doc进行一次权重的更新。
其中,

四、LambdaRank

  以错误pair最少为优化目标的RankNet算法,然而许多时候仅以错误pair数来评价排序的好坏是不够的,像NDCG等评价指标就只关注top k个结果的排序,当我们采用RankNet算法时,往往无法以这些指标为优化目标进行迭代,所以RankNet的优化目标和IR评价指标之间还是存在gap的。
以下图为例:

如上图所示,每个线条表示文档,蓝色表示相关文档,灰色表示不相关文档,RankNet以pairwise error的方式计算cost,左图的cost为13,右图通过把第一个相关文档下调3个位置,第二个文档上条5个位置,将cost降为11,但是像NDCG等评价指标只关注top k个结果的排序,在优化过程中下调前面相关文档的位置不是我们想要得到的结果。图 1右图左边黑色的箭头表示RankNet下一轮的调序方向和强度,但我们真正需要的是右边红色箭头代表的方向和强度,即更关注靠前位置的相关文档的排序位置的提升。LambdaRank正是基于这个思想演化而来,其中Lambda指的就是红色箭头,代表下一次迭代优化的方向和强度,也就是梯度。
  LambdaRank是一个经验算法,它不是通过显示定义损失函数再求梯度的方式对排序问题进行求解,而是分析排序问题需要的梯度的物理意义,直接定义梯度,即Lambda梯度。
  LambdaRank在RankNet的加速算法形式

的基础上引入评价指标NDCG,把交换两个文档的位置引起的评价指标的变化作为其中一个因子,实验表明对模型效果有显著的提升:

损失函数的梯度代表了文档下一次迭代优化的方向和强度,由于引入了IR评价指标,Lambda梯度更关注位置靠前的优质文档的排序位置的提升。有效的避免了下调位置靠前优质文档的位置这种情况的发生。LambdaRank相比RankNet的优势在于分解因式后训练速度变快,同时考虑了评价指标,直接对问题求解,效果更明显。

五、LambdaMART

  Mart(GBDT)定义了一个框架,缺少一个梯度。LambdaRank重新定义了梯度,赋予了梯度新的物理意义。因此,所有可以使用梯度下降法求解的模型都可以使用这个梯度,MART就是其中一种,将梯度Lambda和MART结合就是大名鼎鼎的LambdaMART。
   MART的原理是直接在函数空间对函数进行求解,模型结果由许多棵树组成,每棵树的拟合目标是损失函数的梯度,在LambdaMART中就是Lambda。LambdaMART的具体算法过程如下:

可以看出LambdaMART的框架其实就是MART,主要的创新在于中间计算的梯度使用的是Lambda,是pairwise的。MART需要设置的参数包括:树的数量M、叶子节点数L和学习率v,这3个参数可以通过验证集调节获取最优参数。

五、Context free Grammar(CFG)

  Context free Grammar指的是从语言规则进行分析,是理解语义的重要部分。




不同的分解情况会造成语义有巨大的差别。语法结构会一定程度上影响语义。我们会通过一个概率模型来进行判断。

六、CKY算法

  CYK处理的CFG必须是CNF形式的。所以算法首先要把非CNF形式的CFG转化到CNF形式。 接下来就是要填写一个 parse table,如果我们要处理的句子中有n个词,那么这个parse table就是一个(n+1)×(n+1)(n+1)×(n+1)(n+1)×(n+1)的矩阵的上三角部分。

产生式:A → B C
对于节点A[ i, j ],产生BC两 个节点
B 必须在节点 [ i, k ]
C 必须在节点 [ k, j ]
i < k < j
j > i + 1

CKY算法帮助我们从terminal反推回Context free Grammar。

七、工业界常用手段

  • 最长公共子串/最长公共子序列
    利用动态规划思想求解文本相似度。有很多场景会用到
  • entity linking(消除候选实体的歧义)

如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!


NLP学习—19.检索式对话系统中的rank评估指标、rank技术(Point-wise/Pair-wise/List-wise)以及RankNet、LambdaRank、LambdaMART相关推荐

  1. 检索式对话系统在美团客服场景的探索与实践

    在传统的客服.IM等场景中,坐席需要花费大量时间回答用户的各种咨询,通常面临答案查询时间长.问题重复.时效要求高等挑战.因而,使用技术手段辅助坐席快速.准确.高效地回答用户的各类问题非常有必要. 我们 ...

  2. ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介、损失函数/代价函数/目标函数之间区别、案例应用之详细攻略

    ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介.损失函数/代价函数/目标函数之间区别.案例应用之详细攻略 目录 损失函数的简介 损失函数/代价函数/目标函数之间区别 损失 ...

  3. ML之ME/LF:机器学习之风控业务中常用模型评估指标PSI(人群偏移度指标)的的简介、使用方法、案例应用之详细攻略

    ML之ME/LF:机器学习之风控业务中常用模型评估指标PSI(人群偏移度指标)的的简介.使用方法.案例应用之详细攻略 目录 PSI(稳定度指标)的简介 1.如何计算PSI? (1).PSI计算过程

  4. ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失、L1损失、L2损失、Logistic损失)求梯度/求导、案例应用之详细攻略

    ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失.L1损失.L2损失.Logistic损失)求梯度/求导.案例应用之详细攻略 目录 常见损失函数求梯度案例 1.线性回归求梯度 2.L ...

  5. ML之ME/LF:机器学习中回归预测模型评估指标(MSE/RMSE/MAE)简介、使用方法、代码实现、案例应用之详细攻略

    ML之ME/LF:机器学习中回归预测模型评估指标(MSE/RMSE/MAE)简介.使用方法.代码实现.案例应用之详细攻略 目录 回归预测问题中评价指标简介 RMSE 标准差SD MSE函数

  6. 对话系统-“问答型”单轮对话:FAQ检索式对话系统【步骤:①用户意图判断、②文本检索召回、③文本匹配计算排序】【搜索引擎的最终形态】

    一.基本概念 文本匹配:计算文本之间的相似度,主要分为两大类: 1)基于句子向量表示的相似度模型(适合初始召回): 2)基于词级别匹配的相似度模型(适合对召回结果重排) 问答系统:信息检索的一种高级形 ...

  7. 【聊天机器人】深度学习构建检索式聊天机器人原理

    一.检索式与生成式聊天机器人对比 1.基于检索的chatterbot 2.基于生成的chatterbot 3.聊天机器人的一些思考: (1)基于检索的chatterbot 根据input和contex ...

  8. 深度学习(四十四)——GAN的评估指标, DCGAN, WGAN-GP, CGAN, BEGAN EBGAN

    GAN的评估指标 尽管可用的GAN模型非常多,但对它们的评估仍然主要是定性评估,通常需要借助人工检验生成图像的视觉保真度来进行.此类评估非常耗时,且主观性较强.具备一定误导性.鉴于定性评估的内在缺陷, ...

  9. 二分类最优阈值确定_一文搞懂分类算法中常用的评估指标

    导读 通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢? 分类算法的评估指标有很多种,选 ...

  10. AliExpress:在检索式问答系统中应用迁移学习 | PaperDaily #24

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

最新文章

  1. 钉钉大数据:贵州政府效率意识全国领先
  2. 了解1D和3D卷积神经网络|Keras
  3. 当一个项目中同时存在webroot和webcontext时
  4. 从啤酒尿布到自动驾驶,零售行业如何再创营销神话?
  5. mysql characteristic_MySQL存储过程定义中的特性(characteristic)的含义
  6. Standard C++ Episode 10
  7. ブランド (brand) 品牌,商标
  8. 使用YAML创建一个 Kubernetes Depolyment
  9. lambdaQuery中EQ、NE、GT、LT、GE、LE的用法 (来自网络收集)
  10. 深度学习2.0-7.tensorflow的高阶操作之数据统计
  11. PC Logo入门指南
  12. 不懂技术怎么让服务器更安全,几个插件让你的服务器更安全(防攻击防注入)
  13. 微信自动投票的php代码
  14. PV,UV,VV 含义
  15. SQL22 统计各个部门的工资记录数
  16. Spark认知Spark环境搭建
  17. Pom.xml文件教程详解
  18. slack 开源系统_Slack团队聊天的5种开源替代品
  19. Win10家庭版 无法远程桌面连接的解决方案
  20. webgis技术在智慧城市综合治理(9+X)网格化社会管理平台(综治平台)的应用研究...

热门文章

  1. 再也不用为word 中表达式的上标和下标发愁了
  2. (转载)Linux上iptables防火墙的基本应用教程
  3. zz机器学习与人工智能学习资源导引
  4. 【Gbase】建表时候hash分布列的制定方式(DISTRIBUTED BY column_name)
  5. 【leetcode】给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff数对。
  6. 24.1 新建集成库工程
  7. 自定义获取焦点的TextView
  8. 有哨兵的双向循环链表、单向循环链表
  9. js 编写一道程序题输入长和宽之后点击按钮可弹出长方形面积。
  10. [转]ASP.NET MVC IOC 之AutoFac攻略