匹配网络(Learning to Rank、单双塔模型)

参考:Learning to Rank

Learning to Rank: pointwise、pairwise、listwise

LTR(Learning to rank)是一种监督学习(SupervisedLearning)的排序方法,已经被广泛应用到推荐与搜索等领域。传统的排序方法通过构造相关度函数,按照相关度进行排序。然而,影响相关度的因素很多,比如tf,idf等。传统的排序方法,很难融合多种因数,比如向量空间模型以tf*idf作为权重构建相关度函数,就很难利用其他信息了,并且如果模型中参数比较多,也会使得调参非常困难,而且很可能会出现过拟合现象。LTR采用机器学习很好地解决了这一问题。机器学习方法很容易融合多种特征,而且有成熟深厚的理论基础,并有一套成熟理论解决稀疏、过拟合等问题。

学习过程:在训练集上选定LTR方法,确定损失函数,以最小化损失函数为目标进行优化即可得到排序模型的相关参数。

预测过程:将样本输入学习得到的排序模型中,即可得到结果的相关分数,利用得分进行排序即可得到待预测结果的最终顺序。

LTR的三类方法:

  • 单文档方法(Pointwise)
  • 文档对方法(Pairwise)
  • 文档列表方法(Listwise)

Pointwise

pointwise将排序问题当成一个二分类问题。训练的样本被组织成为一个三元组(q_{i}, c_{i, j}, y_{i, j})。y为一个二进制值表明c是否为q正确答案。

Pointwise常用方法有McRank。

Pairwise

在pairwise方法中排序模型让正确的回答的得分明显高于错误的候选答案。训练的样例为(q_{i}, c_{i}^{+}, c_{i}^{-}), 对应为一个提问以及正确和错误的回答。损失函数为合页损失函数, 合页损失函数的目的就是促使正确答案的得分比错误答案的得分大m。和pairwise类似, 在预测阶段得分最高的候选答案被当作正确的答案。

Pairwise常用方法有 Ranking SVM, RankNet, Frank, RankBoost。

Listwise

在listwise中单一训练样本:query和它所有候选回答句子。在训练过程中给定提问数据和它的一系列候选句子和标签。

Listwise常用方法有AdaRank, SoftRank, LambdaMART等。

参考:基于双塔结构语义匹配模型

单塔模型和双塔模型

用深度学习方法来解决文本语义匹配问题一般有两种思路。以搜索中的query和doc为例,一种是query和doc分别学习一个向量表示, 然后计算cos相似度。另一种是query和doc先融合,然后接多层网络, 最后变成分类问题来优化。前种即为双塔结构, 后种即为单塔结构。

单塔模型是直接将两个特征文本输入模型

双塔模型是分别对两个文本特征用bert进行embedding。并对embedding结果计算cosine相似度、线性变换和softmax,得到预测概率。

双塔结构

双塔结构总体如下图,一般有两个输入,然后分别接一个表示层,表示层输出向量,最后计算两个向量的相似度得到匹配分。这个结构的可改动点一般就是中间的表示层,表示层可大可小,小点就是RNN和CNN,大一点就是Transformer和Bert模型,都可以使用。输出的匹配层一般用cos相似度计算。

匹配网络(Learning to Rank、单双塔模型)_第1张图片

你可能感兴趣的:(机器学习,机器学习,自然语言处理,python)