[0045] 为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
[0046] 首先,需要对用到的变量和公式给出相关定义。
[0047] 定义1.U:用户的集合,且U={u1,u2,…,un}。
[0048] 定义2.V:物品集合,且V={v1,v2,…,vm}。
[0049] 定义3.G:关于用户和用户关系的社交网络。
[0050] 定义4.N(i):社交网络G中用户ui的邻居集合。
[0051] 定义5 . 用户ui在时间t的会话,会话是一个时间段里的物品集合
[0052] 定义6.S(i):用户ui在所有时间的会话集合,
[0053] 定义7.qj:物品vj的向量表征。
[0054] 定义8.pi:从用户行为得到的用户ui的兴趣向量表征。
[0055] 定义9.f(i,l):用户ui第l个朋友的向量表征。
[0056] 定义10.hi:用户ui的朋友们对用户ui的社交影响。
[0057] 定义11.gi:用户ui的总的兴趣向量表征,通过综合考虑pi和hi得到。
[0058] 结合以上变量定义,我们将最终的问题定义为:给定用户ui当前会话 和社交网络关系,会话社交推荐方法对用户的当前兴趣和社交影响进行建模,来推荐用户ui在下一步最可能感兴趣的物品,物品是集合V的子集。
[0059] 为此,本发明提出了一种新颖的基于上下文邻居关系建模的会话社交推荐方法。模型如图2所示,模型主要由四个模块组成。第一个模块是对目标用户当前兴趣进行建模。
第二个模块是根据目标用户当前兴趣向量表征以及朋友历史会话序列,得到朋友中和目标用户最匹配的那部分兴趣。第三个模块利用社交网络,结合目标用户兴趣向量表征和朋友的向量表征来计算社交影响。模块二和模块三是我们模型和贡献的关键部分。最后一个模块中,结合社交影响和用户兴趣进行物品推荐。
[0060] 如图1所示,本发明的一个实施例包括如下步骤:
[0061] S100,构建目标用户ui的社交网络G,令:
[0062] G={U,E}
[0063] 其中,U表示社交网络中目标用户ui的朋友集合,E是目标用户的社交连接。
[0064] S200,构建用户会话向量表征,包括目标用户ui和他的朋友们N(i)。目标用户ui的某一会话 的向量表征 为:
[0065]
[0066] 其中,Q是物品的向量矩阵,Q(:,si)代表出现在会话si中所有的物品向量。长短期记忆网络LSTM是一种循环神经网络方法(RNN),是标准的序列建模工具。长短期记忆网络LSTM可以按序地输入会话si,并输出当前序列向量表征。
[0067] 对于目标用户在时间t的当前会话 他的第l个朋友最近的会话序列为其中任一会话 表征方法和目标用户ui的会话表征方法一致,采用长短
期记忆网络LSTM方法,且共享同样的参数。
[0068] S300,根据用户当前会话序列,构建用户兴趣模型。采用目标用户ui当前会话表征来表示用户的兴趣,令:
[0069]
[0070] 其中, 为用户当前会话 的向量表征。
[0071] 采用用户当前会话表征来表示用户的兴趣可以及时地捕捉到目标用户动态变化的兴趣。尤其是在线购物平台,用户在某一会话中会有一个特定的购物目标。在另一个新的会话中,又会有新的购物需求。
[0072] S400,根据社交网络G,获得用户的朋友表征f(i,l)。该模块的输入是一对用户和朋友(ui,u(i,l)),ui是目标用户,u(i,l)是目标用户的第l个朋友,输出是朋友的向量表征f(i,l),代表了用户ui和朋友u(i,l)之间的联系,也是朋友u(i,l)对应于用户ui的向量表征,令:
[0073]
[0074] 其中,函数g代表一个非线性转化,为用户当前会话, 为目标用户的第l个朋友最近的会话序列 函数g使用注意力机制来实现,具体为:
[0075]
[0076]
[0077] 其中,pi为目标用户ui的兴趣表征, 为目标用户的第l个朋友的第j个会话 表征,参数 和参数 控制每个会话向量的权重,d代表会话向量的维度。
[0078] 本发明采用注意力机制可以更专注于朋友中和目标用户相近的兴趣。图3中,用户C是用户A和用户B的共同好友,但是他们的共同兴趣却不同。用户A和用户C都喜欢食物和运动,而用户B和用户C喜欢音乐和运动。在当前时间t下,目标用户A应该最关注朋友C的时间t-2下的会话,而目标用户B应该最关注朋友C的时间t-1下的会话。因此,本方法采用根据不同的目标用户,动态表征朋友的向量的做法是合理的。这和以往研究中固定采用朋友最近一个会话来表示朋友兴趣的方法不同,是本发明的创新之处。
[0079] S500,根据社交网络G,计算朋友对目标用户的社交影响。将目标用户ui的朋友N(i)的兴趣传递给目标用户ui,令:
[0080]
[0081] 其中,k代表社交网络G的搜索深度,是N(i)是目标用户ui的朋友集合, 代表节点ui在k层的向量表征, 为向量pi, 为向量f(i,l)。非线性函数g实现节点的信息传递,令函数g为:
[0082]
[0083]
[0084] 其中,Wk是图参数,σ为sigmoid函数,AGGREGATEk函数采用的是最大池化(max-pooling)方法
[0085]
[0086] 其中,max代表元素级别的max操作,可以有效捕捉邻居的各个维度属性。
[0087] 本发明在这一步骤中并未加入注意力机制来根据用户和邻居节点的相似度来调整用户节点。是因为S400中的参数α(i,j)除了可以关注邻居节点历史会话中和目标用户最相似的兴趣部分,还可以表示目标用户和邻居节点的相似程度。所以社交网络信息传递部分,不需要使用注意力机制,这也是本发明的新颖之处。
[0088] S600,结合用户自身兴趣和社交影响,获得用户最终向量表征。用户的兴趣由他当前会话行为和社交影响共同决定,用户的最终表示就由全连接层合并两者得到,令:
[0089] gi=W3·[pi⊕hi]
[0090] 其中,W3是线性转化矩阵,pi为用户ui行为表现出的兴趣,hi是用户ui的社交影响,⊕为向量拼接操作。
[0091] S700,根据用户最终向量表征和物品向量表征,推荐物品。将物品vj的向量qj乘以用户兴趣向量,再应用softmax函数计算出物品vj的分数:
[0092]
[0093] 其中,g代表用户的兴趣向量,代表物品vj成为下一个交互的可能性。同时根据的对数似然函数值,计算损失函数:
[0094]
[0095] 其中,yj代表vj的one-hot编码, 函数用梯度下降法来最优化。
[0096] 上述对实施例的描述是为方便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。