一种根据用户点击行为生成同一语义空间中query和document向量的方法

本篇博客主要参考了2016年SIGIR会议上的paper《Learning Query and Document Relevance from a Web-scale Click Graph》。首先说明的是这篇paper提出的模型主要是应用在搜索领域,即根据用户的query和其点击的document日志信息,学习query和document的向量在同一语义空间中的表征方式,将这些向量的表征方式使用到在线预测系统中,方便根据向量的内积来判断用户当前输入的query和不同document之间的相似度,从而返回和用户输入query具有最高相似度的document。

对于这类问题,一个角度是可以把query和document看成是词语的序列,通过NLP的思想来对其进行表征,但是这样的话就没有考虑用户的点击日志信息,得到的embedding信息就缺少了用户兴趣信息,这样就会导致给一个query可能返回的document是语义上相近的,但是可能并不是用户真正想要的;另一个角度则是只利用query和document的日志点击信息,但这样因为长尾定律存在着query和document的sparse的问题,故对于最终的预测效果也会产生不利的影响。
为了解决上述的问题,作者提出了一个统一的框架同时利用了query和document中的词语信息以及用户日志点击的行为信息来将query和document映射到 了一个相同的语义空间中去,同时对于从未出现的query和document提出了一种统一的编码策略,很好的解决了absent的问题。

在这里插入图片描述
上面这个二部图,左边的 q 1 , q 2 , q 3 q_1,q_2,q_3 q1,q2,q3是query,右边的 d 1 , d 2 d_1,d_2 d1,d2是document,它们之间的连线代表了它们在用户的点击日中中出现过,即用户在搜索框中输入了 q 1 q_1 q1,最终在返回的所有结果中点击了 d 1 d_1 d1,连线上的权值代表了点击的次数。整个算法是一个迭代式的传播方法,即随机选择一个起点方向(query方向或者是document方向),然后初始化起点方向部分所有点的状态向量,然后通过边的传播将这些向量传播到另一个方向上去,然后另一个方向继续根据连线传播回来,这样反复迭代几次之后,当所有的向量趋于稳定的时候,整个过程停止,那么每一个query和document在同一语义空间中的向量也就生成好了。这里的假设就是被多个query关联在一起的document和被多个document关联在一起的query在语义上具有更近的相似度。

可以发现,由于是一个反复的迭代过程,因此取不同的部分(query或者document)作为起点可以生成2套不同的向量(在论文后续的实验部分,通过论证,证明了这2套不同的向量都对最终的预测结果有影响),其实算法过程是一样的,这里以从query作为起点来进行说明。首先是对query部分的样本进行初始化,论文中的方式竟然是词袋模型,使用的是词频TF编码的方式,同时对每一个词频向量都进行了归一化,即每一个向量的模都为1,这样每一个query都被表征为了 ∣ V ∣ |V| V维的向量, V V V代表了词表的大小(这篇paper发表的时间是2016年,而word2vec等word embedding算法在2013年就发表了,这里之所以采用了这么老的算法,作者说是为了保证每一个维度都具有可解释性,我对这里还是有一些怀疑态度的,毕竟词袋模型大大增加了向量的维度,所以我感觉使用了word embedding效果也许会更好?)。当初始化了之后,就开始了传播迭代过程,思想很简单,公式如下:
D j n = 1 ∣ ∣ ∑ i = 1 ∣ q u e r y ∣ C i , j . Q i n − 1 ∣ ∣ 2 ∑ i = 1 ∣ q u e r y ∣ C i , j . Q i n − 1 D_j^n=\frac{1}{||\sum_{i=1}^{|query|}C_{i,j}.Q_i^{n-1}||_2}\sum_{i=1}^{|query|}C_{i,j}.Q_i^{n-1} Djn=i=1queryCi,j.Qin121i=1queryCi,j.Qin1
其中 D j n D_j^n Djn代表了第n轮迭代中,第j个document的向量表征形式, C i , j C_{i,j} Ci,j代表了在用户的日志点击行为中 q u e r y i query_i queryi d o c u m e n t j document_j documentj之间的关联次数,前面的 1 ∣ ∣ ∑ i = 1 ∣ q u e r y ∣ C i , j . Q i n − 1 ∣ ∣ 2 \frac{1}{||\sum_{i=1}^{|query|}C_{i,j}.Q_i^{n-1}||_2} i=1queryCi,j.Qin121是归一化项。

所以从整体来看,整个生成过程还是比较简单的。下面来讲一下作者针对从未出现过的query和document的向量embedding的生成方式,在这里插入图片描述
其实其核心思想是直接明了的,虽然query和document可以是新产生的,但是组成query和document的词语确不是新的,从这个角度入手,先对每一个词语生成embedding,然后新query或者document的embedding可以由词语的embedding组合而来。图中以词语u向document的映射过程为例进行一个说明:query到document的边转化成了这些query中的词语u的到document的边,词语u到documnet的权重是由包含了该词语u的query到目标document的权重之和。当二部图确定好了之后,就可以开始迭代过程了,需要注意的是这里的迭代过程只能从document一侧开始,初始化向量采用的是上一步在query和document的二部图中训练好的向量,迭代公式是:
U i = 1 ∣ ∣ ∑ j = 1 ∣ K u i ∣ P i , j K u i ( j ) ∣ ∣ 2 ∑ j = 1 K u i P i , j K u i ( j ) U_i=\frac{1}{||\sum_{j=1}^{|K_{u_i}|}P_{i,j}K_{u_i}(j)||_2} \sum_{j=1}^{K_{u_i}}P_{i,j}K_{u_i}(j) Ui=j=1KuiPi,jKui(j)21j=1KuiPi,jKui(j)
其中 ∣ K u i ∣ |K_{u_i}| Kui是在二部图中和词语 u i u_i ui关联的document。

那么在预测的时候,作者不是简单的把词语u加起来作为absent的query和document表征,而是使用了线性加权的方式进行的,这个权重是通过训练得到的,首先说明一点的是这个权值针对的是每一个词语,而且是全局的,也就是无论目前query或者document是什么,这些权值一旦训练好了就不再改变(其实我感觉这里有点不太合理,因为感觉在不同类别query中不同词语的权重应该有所区别的,这里其实是由改进空间的),训练公式如下:
m i n w ∑ i = 1 ∣ T ∣ ∣ ∣ T i − ∑ u j ∈ U T i a l l W j . U j ∣ ∣ 2 2 min_w \sum_{i=1}^{|T|}||T_i-\sum_{u_j \in U_{T_i}^{all}}W_j.U_j||_2^2 minwi=1TTiujUTiallWj.Uj22
其中 T i T_i Ti就是前面阶段训练好的query或者document的embedding向量,目标就很显然了就是通过这些词语 U j U_j Uj来加权更好的逼近之前训练好的query或者document,损失函数采用的是简单的均方损失。

那么当权重训练好了之后,在预测阶段就可以通过词语unit的加权方式来对未出现的query或document进行很好的表征,从而提升整体系统的效果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值