MatchPyramid

  • https://zhuanlan.zhihu.com/p/496917979

MatchPyramid 算法是一种用于文本匹配的方法,它的主要思路是受卷积神经网络(CNN)在图像识别中的启发,将文本匹配处理成图像识别问题。

具体来说,对于两个文本句子,首先构建它们的匹配矩阵(Matching Matrix)。如果两个句子的单词数分别为 M 和 N,那么这个匹配矩阵就是 M×N 的。在计算匹配矩阵中元素的值时,有多种方法,例如:

  1. Indicator Function:如果对应位置的单词相同则为 1,否则为 0。这种方法的问题是不能刻画相似词语的语义关系,且得到的匹配矩阵类似于由 0 和 1 组成的黑白图像,所能表达的信息有限。

  2. 余弦相似度(Cosine):用于刻画两个词向量之间的角度作为相似度。

  3. 点积(Dot Product):相当于灰度图像,特征更加丰富。相比余弦相似度,点积考虑了向量的长度信息。

得到匹配矩阵后,使用卷积操作(Hierarchical Convolution)来提取特征。这里的卷积核可以看作是对矩阵局部区域的模式进行检测。为了处理不同长度的句子并得到固定尺寸的特征图,采用了动态池化(dynamic pooling),池化尺寸与句子长度和卷积核大小有关。

经过多层卷积和池化操作后,最后通过多层感知机(MLP)来拟合相似度,使用 sigmoid 激活函数,并采用交叉熵损失函数进行训练。

总的来说,通过多层的卷积操作,MatchPyramid 算法可以在单词或者句子级别自动捕获重要的匹配模式,如一元语法(unigram)、n 元语法(n-gram)和 n 项式(n-term)等。

MatchPyramid 算法的优点在于它借鉴了 CNN 在图像处理中提取特征的方式,能够捕捉到文本之间更丰富的匹配模式。然而,它也可能存在一些局限性,例如对于某些特定类型的文本或语言现象,其效果可能受到影响,而且在实际应用中计算复杂度可能相对较高。在不同的数据集和任务中,可能需要根据具体情况进行调整和优化。

KNRM

KNRM(Kernel-based Neural Ranking Model,基于核的神经排序模型)是一种用于文本相似度匹配的算法。

其具体步骤如下(公式从最后往前看):

  1. Embedding:将输入的文本转换为向量表示。

  2. 计算 query 和 document 的 cosine matching matrix(余弦匹配矩阵)

  3. 对 matching matrix 每个元素计算 RBF(Radial Basis Function,径向基函数)kernel,然后按列相加。

  4. 进行 log 操作后累加。

  5. 接入 tanh 函数。

通过以上步骤,KNRM 能够捕捉文本之间的匹配模式,并输出相似度得分。

在一些改进的实现中,例如使用 11 个核且核参数按照一定规则生成,而不是通过学习得到;并且输出改用更强大的分类器 xgboost,即 knrm 特征+xgboost,最终能得到比原始 KNRM 算法更高的准确率。

如果你想进一步了解 KNRM 算法的实现细节或查看相关代码,可以参考一些开源项目或相关研究论文。同时,不同的应用场景和数据集可能需要对算法进行适当的调整和优化,以获得更好的性能。