前置知识复习

  • https://www.cnblogs.com/Allen-rg/p/13958508.html

  • word2vec详解:https://zhuanlan.zhihu.com/p/114538417
    Word2Vec和GloVe都是用于将词与向量相关联的流行词嵌入模型。

相同点:

  1. 目标:Word2Vec和GloVe的共同目标是将词汇映射到低维向量空间中,以便在自然语言处理任务中使用。

  2. 算法:它们都是基于神经网络和统计学习的方法。

不同点:

  1. 训练方式:Word2Vec使用了两种不同的模型,分别是Skip-gram和CBOW模型;而GloVe使用全局语料库统计信息来计算词向量。

  2. 上下文信息:Word2Vec模型侧重于局部上下文信息,即根据当前词预测其上下文单词GloVe模型将全局共现统计信息纳入考量,能够更好地反映词汇间的关系

  3. 训练速度:由于GloVe利用了全局信息,它在大规模数据集上的训练速度通常比Word2Vec更快。

word2vec

Skip-gram模型和CBOW(Continuous Bag of Words)模型是Word2Vec中两种主要的词嵌入模型,它们在训练方式和目标上有一些明显的区别。

  1. Skip-gram模型(跳字模型):

    • 目标:Skip-gram模型的目标是从中心词预测其周围的上下文单词。

    • 训练方式:给定一个中心词,Skip-gram模型会尝试预测在一定上下文窗口内可能出现的其他词,通过这种方式来学习单词的向量表示。

    • 应用:在小语料库中较为有效,尤其在罕见词上表现更好。

  2. CBOW模型(连续词袋模型):

    • 目标:CBOW模型的目标是根据上下文单词的信息来预测中心词。

    • 训练方式:给定一个上下文窗口内的词汇,CBOW模型会尝试预测这些词汇的中心词,从而学习单词的向量表示。

    • 应用:在大语料库上运行更快,尤其在频繁出现的词上表现更好。

Bert的词向量分布


如何解决?


[1] Representation Degeneration Problem in Training Natural Language Generation Models
[2] On the Sentence Embeddings from Pre-trained Language Models
[3] Learning to Remove: Towards Isotropic Pre-trained BERT Embedding

RankCSE

背景:

排序算法


推荐可分为以下四个流程,分别是召回、粗排、精排以及重排:

召回是源头,在某种意义上决定着整个推荐的天花板;
粗排是初筛,一般不会上复杂模型;
精排是整个推荐环节的重中之重,在特征和模型上都会做的比较复杂;
重排,一般是做打散或满足业务运营的特定强插需求,同样不会使用复杂模型;
召回层:召回解决的是从海量候选item中召回千级别的item问题

排序一直是信息检索的核心问题之一,Learning to Rank(简称LTR)用机器学习的思想来解决排序问题。LTR有三种主要的方法:PointWise,PairWise,ListWise。ListNet算法就是ListWise方法的一种

  • 补充:https://zhuanlan.zhihu.com/p/610333953

pairwise

pointwise方法损失函数计算只与单个document有关,本质上是训练一个分类模型或者回归模型,判断这个document与当前的这个query相关程度,最后的排序结果就是从模型对这些document的预测的分值进行一个排序。对于pointwise方法,给定一个query的document list,对于每个document的预测与其它document是独立的。所以模型输入和对应的标签label形式如下:

输入: 单个document
label: document所属类型或者分值 pointwise方法将排序任务看做对单个文本的回归或者分类任务来做。若文档document的相关性等级有K种,则我们可以建模为一个有K个类别的0 , 1 , 2 , . . . , K − 1 {0,1,2,..., K-1}0,1,2,...,K1的Multi-class分类任务,则 y i ∈ R k y_i \in \R^kyiRk 一个k维度的one-hot表示, 我们可以用交叉熵loss作为目标损失函数:

L = − ( y i log ⁡ ( p i ) − ( 1 − y i ) log ⁡ ( 1 − p i ) ] ) \left.\mathrm{L}=-\left(\mathrm{y}{\mathrm{i}} \log \left(\mathrm{p}{\mathrm{i}}\right)-\left(1-\mathrm{y}{\mathrm{i}}\right) \log \left(1-\mathrm{p}{\mathrm{i}}\right)\right]\right)L=(yilog(pi)(1yi)log(1pi)])

ListNet

ListNet算法定义了一种Listwise的损失函数,该损失函数表示由我们的模型计算得来的文档排序和真正的文档排序之间的差异,ListNet最小化该损失函数以达到排序的目的

RankCSE训练任务