Learning Multi-granularity Consecutive User Intent Unit for Session-based Recommendation


for Session-based Recommendation)

title: Learning Multi-granularity Consecutive User Intent Unit for Session-based Recommendation
link: https://arxiv.org/pdf/2112.13197.pdf
conference: WSDM 2022

博客的内容安排(会包含我的个人理解,如有不正,谢谢大家指正):
Abstract:主要分析作者要解决的问题,和作者提出的什么的模型或方法概述。
Introduction:进一步分析作者的motivation,作者要解决的问题,以及解决这个问题所带来的challenge。
Model:作者提出来的模型框架图,我会简单分析一下整体框架。
Method:作者提出的方法
Experiment:实验部分

1、Abstract

本文聚焦于解决Session-based recommendation中的问题。之前paper独立地考虑Session中的物品,导致不能从更高阶的视角建模session information(semantics)。也就是说:作者认为连续的item之间存在着丰富的信息,能帮助我们更好的建模user intent. ->简而言之就是:用户在购买物品C的时候很有可能是因为用户买了A也买了B导致了C发生。对此,作者提出 Multi-granularity Intent Heterogeneous Session Graph (MIHSG),捕获不同粒度下的user intent和不同粒度意图单元之间的交互。为了充分考虑不同intent对推荐结果的影响,作者又提出Intent Fusion Ranking (IFR)。

2、Introduction

在这里插入图片描述
作者为什么会认为连续的物品为什么会带来更更富的信息。例如Figure 1:如果我们只是考虑最后一个item的话(单个item,也就是图片中红色框“Eggs”),用户在买完“eggs”后,按照合理的推荐,我们可能认为用户是去做饭(breakfast, 作者举例说是早餐),那么我们应该给用户推荐Milk。但是如果我们考虑连续两个item作为一个整体(蓝色框,butter和eggs)可能反映出用户是要煎鸡蛋,那应该给用户推荐Pan。进一步,如果我们考虑连续三个item作为一个整体(也就是橙黄色框,Flour、Butter和eggs)可能反映出用户是要做蛋糕或者面包,烤箱可能更适合推荐这个用户。上述就表明连续的物品构成的组很明显能反应出用户的intent,并且不同粒度下的组反映着用户不同的intent(例如不同颜色框分别反映做早饭,煎鸡蛋和做甜品)

作者所提出来的challenge:
1)如何建模这些组意图之间的交互。这部分应该有两层意思:第一层是同一粒度下的不同意图之间有关系(用户的intent可能会随着时间变化,或者之前的intent有可能影响后面的intent),第二种是不同阶粒度下的意图之间也存在关联(这个就像是在建模当前intent会导致你买那个item(single intent)。比如上面那个例子(butter,eggs)-> (Pan))。
2)如何从不同粒度整合用户意图。这个也很自然,假设我们得到了不同粒度下的用户意图,怎么使用它们去合理的推荐。

3、Method

model
模型整体分三个部分:
第一部分是:Heterogeneous Session Graph Construction。如何构建异构图来表示多粒度下intent之间的关系。也就是challenge one。
第二部分是:Session Representation Learning。利用HGAT学习intent embedding。
第三部分是:Ranking。在得到多个intent,怎么利用它们合理作出推荐。

3.1、Problem Definition

A session is s i = { v t 1 , v t 2 , . . . , v t L } s_i = \{v_{t_1}, v_{t_2}, ..., v_{t_L}\} si={vt1,vt2,...,vtL} L L L表示会话长度。目的是预测用户下一次可能点击的物品 v t L + 1 v_{t_{L+1}} vtL+1

3.2、Consecutive Intent Unit

这部分主要是:根据给定一个会话,怎么划分出连续意图单元,以及怎么生成连续意图单元的Embedding。

1)怎么划分出连续意图单元:用 v j k = ( v j , . . . , v j + k − 1 ) v_j^k = (v_j, ..., v_{j+k-1}) vjk=(vj,...,vj+k1)表示连续意图单元。具体意思就是从物品j开始连续k个物品组成的subsession为一个连续意图单元(称为k阶连续意图单元)。例如,图2中所述的会话, s = { v 1 , v 2 , v 1 , v 3 , v 2 , v 1 , v 3 , v 4 } s = \{v_1, v_2, v_1, v_3, v_2, v_1, v_3, v_4\} s={v1,v2,v1,v3,v2,v1,v3,v4},原始会话就表示level-1连续意图单元。 ( v 1 , v 2 ) , ( v 2 , v 1 ) , . . . , ( v 3 , v 4 ) (v_1, v_2), (v_2, v_1),..., (v_3, v_4) (v1,v2),(v2,v1),...,(v3,v4) 是level-2连续意图单元。进一步可拓展成level-3。详细看图或者论文。
2)如何表示这些单元信息:level-1很简单就是每一个item的初始embedding( e j 1 e_j^1 ej1)。针对high-level,每个单元都是有多个item组成的,所以作者使用readout function来生成每一个单元的embedding:
e j k = R ( { e j 1 , . . . e j + k − 1 1 } ) e_j^k = \mathcal{R}(\{e_j^1, ... e_{j+k-1}^1\}) ejk=R({ej1,...ej+k11})
作者考虑两种readout function。set-based (Max, Min, Mean)和sequence-based(GRU)分别捕获order-invariant and order-sensitive intent:
e j k = e j k , s e t + e j k , s e q e_j^k = e_j^{k,set} + e_j^{k,seq} ejk=ejk,set+ejk,seq

3.3、Multi-granularity Intent Heterogeneous Session Graph Construction(MIHSG)

MIHSG主要是有不同粒度的子图构成的,利用不同阶的子图来捕获intent之间的关系。可以理解为我们针对刚刚的序列 s = { v 1 , v 2 , v 1 , v 3 , v 2 , v 1 , v 3 , v 4 } s = \{v_1, v_2, v_1, v_3, v_2, v_1, v_3, v_4\} s={v1,v2,v1,v3,v2,v1,v3,v4},构建level-2连续意图单元(5个单元),通过构建一个graph(5 * 5)来建模level-2下intent之间的关系。

3.3.1. Level-𝑘 Intent Session Graph

Level-𝑘 Intent Session Graph是一个有向图, G s k = ( V s k , E s k ) \mathcal{G}_s^k = (\mathcal{V}_s^k, \mathcal{E}_s^k) Gsk=(Vsk,Esk), 节点就是level-k连续意图单元,边表示两个单元是否是邻近关系。类似(A,B, C)。A->B->C。

3.3.2. Multi-granularity intent unit Heterogeneous Session Graph

为了合并不同粒度下的子图,构成一个整体的异构图MIHSG,引入一条特殊的边,命名为 inter-granularity edge,连接高阶会话图和一阶会话图。也就是不同阶可以通过一阶进行联系,应该是这么个意思。整个图会有两种边,一种是同阶内边叫intra–granularity edge, 另一个种是高阶和一阶的边叫inter–granularity edge. 表示起来就是 ( v k , t y p e o f e d g e , v j ) (v_k, type of edge, v_j) (vk,typeofedge,vj)
例子
考虑一个会话 s = { v 1 , v 2 , v 1 , v 3 } s = \{v_1, v_2, v_1, v_3\} s={v1,v2,v1,v3},假设有两种粒度子图level-1和level-2. 那么它们的联系就是: ( v 1 , i n t e r , ( v 2 , v 1 ) ) (v_1, inter, (v_2, v_1)) (v1,inter,(v2,v1))或者 ( ( v 2 , v 1 ) , i n t e r , v 3 ) ((v_2, v_1), inter, v_3) ((v2,v1),inter,v3)

3.4、Session Representation Learning

在完成图的定义和构建之后,接下来就是学习不同阶的intent embedding

####3.4.1 Learning Representation of Consecutive intent units.
作者主要是利用heterogeneous graph attention network学习intent representation。给定一个有向边 ( s , e , t ) (s, e, t) (s,e,t) s s s t t t分别是源意图单元和目标意图单元, e e e表示边。这里 s s s t t t可以是任何粒度阶下的意图单元。具体来说,粒度为k,节点可以表示为 k s , k t k_s, k_t ks,kt,边是 ϕ e \phi_e ϕe。对于一个K-level的MIHSG, k s , k t ∈ { 1 , 2 , . . . , K } k_s, k_t \in \{1, 2, ..., K\} ks,kt{1,2,...,K} ϕ e = { i n t e r , i n t r a − 1 , i n t r a − 2 , . . . , i n t r a − K } \phi_e = \{inter, intra-1, intra-2,..., intra-K\} ϕe={inter,intra1,intra2,...,intraK}, i n t e r inter inter就表示和一阶的边,intra-i表示第I个粒度。对于每一层,采用一个双向的注意力去聚合入度节点的信息和出度节点的信息。以入度节点为例, N ϕ e N_{\phi_e} Nϕe表示入度邻居节点, W ϕ e l ∈ R d × d , a ϕ e l ∈ R 2 d × d W_{\phi_e}^{l} \in \mathcal{R}^{d \times d}, \mathbf{a}_{\phi_e}^{l} \in \mathcal{R}^{2d \times d} WϕelRd×d,aϕelR2d×d是训练参数,且在不同层不同边不共享。 h s 0 = e s , h t 0 = e t h_s^{0} = e_s, h_t^0 = e_t hs0=es,ht0=et是为初始的intent表示, σ \sigma σ是leakyrelu:
h t l + 1 = ∑ ϕ ∑ ∈ N ϕ e ( t ) a s l W ϕ e l h s l a s l = S o f t m a x ( a ~ s l ) a ~ s l = σ ( a ϕ e l [ W ϕ e l h s l , W ϕ e l h t l ] ) h_t^{l+1} = \sum_{\phi}\sum_{\in N_{\phi_e}(t)} a_s^{l} W_{\phi_e}^l h_s^l \\ a_s^{l} = Softmax(\tilde{a}_s^{l}) \\ \tilde{a}_s^{l} = \sigma(\mathbf{a}_{\phi_e}^{l} [W_{\phi_e}^l h_s^l , W_{\phi_e}^l h_t^l ]) htl+1=ϕNϕe(t)aslWϕelhslasl=Softmax(a~sl)a~sl=σ(aϕel[Wϕelhsl,Wϕelhtl])
采用多头机制提升训练过程:
h t l + 1 = R i = 1 , . . , H h_t^{l+1} =\mathop{\mathcal{R}} \limits_{i = 1, .., H} htl+1=i=1,..,HR
因为MIHSG是一个有向图,所以会得到两类embedding,一类是出度邻居 h ← v ( l + 1 ) \overleftarrow{h}_v^{(l+1)} h v(l+1),一类是入度邻居 h → v ( l + 1 ) \overrightarrow{h}_v^{(l+1)} h v(l+1)。直接对两部分求和得到节点的表示 h ~ v l + 1 = h → v ( l + 1 ) + h ← v ( l + 1 ) \tilde{h}_v^{l+1} = \overrightarrow{h}_v^{(l+1)} + \overleftarrow{h}_v^{(l+1)} h~vl+1=h v(l+1)+h v(l+1),最终节点的表示为局部特征和会话中所有表征的均值: h v l + 1 = h ~ v l + 1 + h ˉ u ∈ s ( l + 1 ) h_v^{l+1} = \tilde{h}_v^{l+1} + \bar{h}^{(l+1)}_{u\in s} hvl+1=h~vl+1+hˉus(l+1)

3.4.2 Learning Representation of Whole Session

整个会话的表示不是所有粒度的做一个统一融合,而是在每个粒度上生成对应的会话表示,也就是说有几个粒度就会有几个会话表示,但是他会考虑所有intent的信息,并且会话表示由全局表示和局部表示共同决定。例如: h i k ∈ R d , i = 1 , . . . , n k , k = 1 , 2 , . . . , K h_i^k \in \mathcal{R}^{d}, i = 1, ..., n_k, k = 1, 2, ..., K hikRd,i=1,...,nk,k=1,2,...,K, n k n_k nk 是意图单元的数量, K K K是意图阶的数量,同理最终的会话表示有K个。会话表示由局部表示 z l k z_l^k zlk和全局表示 z g k z_g^k zgk共同决定。用最后一个意图单元的表征 h n k k h_{n_k}^k hnkk当作局部表示 z l k z_l^k zlk,全局表示是由所有的意图单元(这个所有应该是全体,包括不同阶,主要是为了捕获完整的user intent)和局部表示经过一个软注意力机制产生的。文中将所有的intent组成一个上下文集合 C = h i k ∣ i = 1 , . . n k , k = 1 , . . . , K C = {h_i^k | i = 1,..n_k, k = 1, ..., K} C=hiki=1,..nk,k=1,...,K, 其中 h c ∈ C h_c \in C hcC表示其中一条信息:
z g k = ∑ c = 1 ∣ C ∣ S o f t m a x c ( γ c k ) h c γ c k = W 0 k T σ ( W 1 k h c + W 2 k z l k + b k ) z_g^k = \sum_{c = 1}^{|C|}Softmax_c(\gamma_c^k) h_c \\ \gamma_c^k = W_0^{k^T} \sigma(W_1^k h_c + W_2^k z_l^k +b^k) zgk=c=1CSoftmaxc(γck)hcγck=W0kTσ(W1khc+W2kzlk+bk)

由于 z l k z_l^k zlk作为Quary是不同的,所以在不同粒度下所有意图对于当前局部表示重要性也不同,这样可以平衡考虑所有intent和产生更易区分的K个会话表示。
最终的会话表示:
z s k = W 3 k [ z g k ; z l k ] z_s^k = W_3^k [z_g^k ; z_l ^k] zsk=W3k[zgk;zlk]

3.5 Intent Fusion Ranking and Optimization

根据上面得到不同粒度下会话表示, z s 1 , . . . , z s k , . . . , z s K z_s^1, ..., z_s^k, ..., z_s^K zs1,...,zsk,...,zsK,作者提出Intent Fusion Ranking来综合表达用户的偏好信息。具体来讲就是,有K个intent,怎么能充分考虑所有不同意图的会话表示,做合理的推荐。
思路很简单,就是所有的会话都和候选物品做内积得到的评分,用一个权重融合得到每个候选物品的最终得分。然后做推荐。

具体来,不同会话和候选物品算内积:
y i k = < z s k , e i 1 > y_i^k = <z_s^k, e_i^1> yik=<zsk,ei1>
另外,为了考虑重复性消费,作者将候选物品分成两部分,一部分是自己之前交互过的物品(重复消费,会话内 R R R),一部分是没有交互过的(探索消费,会话外 O O O),分别算内积做归一化:
y ^ r i k = exp ⁡ ( y r i k ) ∑ j = 1 ∣ R ∣ exp ⁡ y r j k ; y ^ o i k = exp ⁡ ( y o i k ) ∑ j = 1 ∣ O ∣ exp ⁡ y o j k \hat{y}_{r_i}^k = \frac{\exp (y_{r_i}^k)}{\sum_{ j= 1}^{|R|} \exp y_{r_j}^k} ; \hat{y}_{o_i}^k = \frac{\exp (y_{o_i}^k)}{\sum_{ j= 1}^{|O|} \exp y_{o_j}^k} y^rik=j=1Rexpyrjkexp(yrik);y^oik=j=1Oexpyojkexp(yoik)
其中 ∣ I ∣ = ∣ R ∣ + ∣ O ∣ |I| = |R| + |O| I=R+O。紧接着,作者采用一个re-weight去平衡重复消费和探索消费:
y k = [ β r k y ^ r i k ; β o k y ^ o i k ] β r k , β o k = S o f t m a x ( W 1 T σ ( W 2 z s k ) ) y^k = [\beta_r^k \hat{y}_{r_i}^k; \beta_o^k \hat{y}_{o_i}^k ] \\ \beta_r^k, \beta_o^k = Softmax(W_1^T \sigma(W_2z_s^k)) yk=[βrky^rik;βoky^oik]βrk,βok=Softmax(W1Tσ(W2zsk))
那么最后,Intent Fusion Ranking 融合所有粒度级别的意图预测的推荐结果,也就是物品的最终得分就是所有粒度下评分的加权求和形式:
y ^ = ∑ k = 1 K a ^ k y k , a ^ k = s o f t m a x ( a k ) \hat{y} =\sum_{k=1}^K \hat{a}^k y^k, \hat{a}^k = softmax(a^k) y^=k=1Ka^kyk,a^k=softmax(ak)
其中 a k a^k ak是可学习的权重因子。
最后采用 cross-entropy作为损失函数

实验结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值