Employing Personal Word Embeddings for Personalized Search
文章链接
词汇:query和查询是同个意思
- 对于同样的query,即使它来自不同的用户,却得到一样的匹配结果,这在一些情况下是不行的。举例:以查询“Apple”为例。IT工程师可能使用这个查询来搜索关于“苹果”公司或产品的信息,而果农倾向于使用相同的查询来搜索与“苹果”水果相关的信息。
大多数方法的一般思想是根据用户的搜索历史建立用户兴趣概要,然后根据创建的用户概要和候选文档之间的匹配分数对文档重新排序。
而作者试图从另一个角度来解决搜索结果个性化的问题,他为每个用户训练个人词嵌入,其中每个词的表示主要由用户的个人数据决定,而不用不建立用户兴趣概要
设计了一个个性化搜索模型PEPS (Personal embedded based personalized search
model)
模型包含三个阶段。
- 个人词嵌入的预处理阶段
- 模型的监督训练阶段
- 在线更新阶段
预处理
-
word2vec是一个无监督模型,它可以捕获单词之间的共现或语义关系
-
在所有的query log上训练一个word2vec模型,称为全局word2vec模型
-
在用户自己的query log,以及和该用户最相似的k个其他用户的query log上训练word2vec模型,称为个性化模型,相似度衡量方式:
-
全局word2vec模型初始化全局词嵌入,个性化word2vec模型初始化个人词嵌入。
自此,为每个用户获得粗糙但不精确的个人词嵌入
个性化模型
进一步设计一个有监督的个性化模型,用以了解用户的点击行为中反映出的用户兴趣。
分为四个部分:
- 在第一部分中,我们为每个用户设置一个具有全局词嵌入矩阵和个人词嵌入的个性化词嵌入层。
- 在第二部分中,我们从不同的粒度和角度获得了query和document的表示。
- 第三,我们使用神经匹配组件KNRM[41]计算query和document之间的匹配得分,并使用成对的LambdaRank[8]训练排名模型。
- 最后,我们增加了查询重组模块,以促进个人词嵌入的学习。
下面内容部分引用了这篇博文,讲的挺详细的。
个性单词嵌入层
每个单词的表示都包含两部分,例如单词“Apple”对于用户u i 的表示是“Apple+u i”
在finetune之前,要为每个用户确定独特的词汇表。筛选原则如下:
- 不是停顿词的单词
- 在用户的搜索记录里出现次数超过c次的
- 单词熵不低于设定阈值的。
单词熵计算如下:
query和document的表达![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e7a57b86c7062e702b315376e113ac6.png)
通过这四个部分,获取query和document的不同粒度表达
query-document 匹配和排序
- 利用KNRM计算两者的相似得分。
-
先得到ϕ(S).
-
使用MLP和tanh(·)做激活函数来把这些特征联合起来并计算匹配值f.
之前说有四种不同的粒度表达,相同粒度表达的两个单词向量之间进行上述的KNRM匹配,可以得到一个匹配值f.四种粒度表达总共可以得到四种匹配值
除了这四个score外,还有两种score
-
计算query在reformulation模型里的隐层状态和用dense layer处理文档单词level矩阵后的表达之间的余弦匹配值
-
把一些基于点击的特征和有利于排序的相似性特征送入tanh(·)为激活函数的MLP中计算得来的相似得分
如图红框所示。
最后把这6个Score用MLP融合起来获得了每个document的个性化得分。并使用LambdaRank算法来训练排序模型。
-
构建文档对。被点击的作为正样本,被跳过的文档作为负样本。
-
每一个文档对都有一个λ,表示的是当交换这两个文档的位置时,MAP这一指标的变化值
-
损失函数为
query 重构
- 目的:为更好地表示用户的查询意图,文章利用模型中,因为个性化的查询表示,相对地能够更加准确推断用户的真实查询意图,重新制定了查询来提高排名。文章设计了一个查询重构模块,并构建了一个多任务框架,将其与个性化排序模型联合训练。由于缺少能够表达用户真实查询意图的手动标记的重构查询,文章遵循[21,31],使用同一会话中的下一个查询作为该任务的学习目标。
基于此,作者添加了一个query reformulation的任务,和ranking model一起训练。
学习目标是同一个session里的下一个query,因为这一个query被看做是比当前的query更能表达用户的意图。输入是query的个性化单词表示Pq。使用GRU来编码,带有attention机制的GRU用来解码。
目标序列的概率计算公式如下
损失函数是目标序列预测概率的负log值。
在线更新
用户将改变选择偏好,即不断发出可能显示新用户兴趣的新查询。为了保证我们的个人词嵌入包含最新的用户兴趣,文章根据搜索过程中最新发布的查询对个人词嵌入进行微调,保持固定的排名模型。设计了三种不同的调整方法。(比较次要)
文章提出,长时间的在线学习会使得模型性能变差,并建议经过短时间在线学习后,根据收集到的新数据和原有数据进行离线训练、
按stage更新
设计一个时间,时间到了后将收集到的新数据对模型的词嵌入进行一次微调
按session更新
会话通常被认为是具有独立查询意图的搜索活动,它包含完整的用户兴趣。因此,基于上述更新过程,我们提出以会话间隔调整词嵌入。
按query更新
按会话更新单词嵌入的方法不能捕获用户短期兴趣对同一会话中后续查询的影响。因此,设计了一种方法来更新查询单元中的单词嵌入,以捕获更细粒度的兴趣。
模型优势总结
- 通过将用户兴趣嵌入到个人词表示中,模型不需要保留搜索历史,只需要对搜索历史进行处理来构建用户兴趣轮廓,降低空间要求
- PEPS只需要用一个浅匹配模型计算查询和文档表示及其匹配得分,相比RNN[17]处理历史记录所需时间少,提高了性能,节省了内存空间。
实验结果
。。。。