【阅读笔记】k-nrm和Conv-knrm
【阅读笔记】End-to-End Neural Ad-hoc Ranking with Kernel Pooling
Xiong, Chenyan, et al. “End-to-end neural ad-hoc ranking with kernel pooling.” Proceedings of the 40th International ACM SIGIR Conference on Research and Development in Information Retrieval. ACM, 2017.
https://github.com/AdeDZY/K-NRM
概述:构建文本与文本的相似矩阵,使用 RBF Kernel 进行 Kernel Pooling ,取 log 相加后接一个全链接进行分类二分类(相似与不相似)。模型简称 K-NRM(Kernel-based Neural Ranking Model )。
过程是比较简明的:
先把 term 映射为 Word Embedding:
再计算Translation Matrix:
然后通过 RBF Kernel:
得到 Kernel Pooling:
由 Kernel Pooling 得到 Sotf-TF Features:
在用 Sotf-TF Features 做分类:
采用 pairwise learning to rank loss 进行训练:
使得相关的排名比不相关的更靠前,学习的参数为、和词向量。
读后感:本文和 MatchPyramid 的核心的不同之处在于 RBF Kernel,感觉文章对高斯核函数的均值和方差怎么去取的没有写明白,只能看出来均值和方差是超参数,结合代码可以看出来,均值是从-1到1均匀均匀取值的(因为余弦相似度是在 -1 到 1 之间),方差也是取个定值,RBF Kernel得到的特征的含义是分布在均值周围的个数,可能也是 Sotf-TF 的含义(sotf term frequency)。但有个问题就是模型没有考虑文本的长度,所以我觉得他才选择 pairwise learning to rank loss 进行训练,这样对比的是相同 query 的得分,那么 query 的长度是固定的,document 一般都比较长,做截断后长度也应该相同,就解决了长度不同带来结果的不同了。
【阅读笔记】Convolutional neural networks for soft-matching n-grams in ad-hoc search
Conv-knrm相比k-nrm,最大的改变就是它添加了n-gram的卷积,增加了原先模型的层次,它能够捕捉更加细微的语义实体,交叉的粒度也更加细。
过程也是比较简明的:
先把 term 映射为 L-dimensional 的 Word Embedding:
对于有个 term 的文本,可以得到一个的矩阵:
再用卷集计算 h-gram 的特征(向后补0):
然后计算 cross-match:
和 k-nrm 一样,对每一个计算 Sotf-TF Features,再把所有的 Sotf-TF Features 拼起来得到,然后再做分类:
读后感:感觉上与 knrm 增加了 n-gram 的特性,但是感觉参数增加了很多,可能会很容易过拟合。