emm…图片复制过来显示不了(因为我太懒了0.0),要看图的话可以去我的博客瞅瞅,嘿嘿嘿
对了,有些英文短句假如翻译成中文,阅读的时候就太搞脑子了,所以我干脆就不翻译了
我的博客地址:https://hikg.net/archives/126/
1. Motivation
推荐系统中,user-item交互的时间顺序 可以反应出随着时间演化的、序列化的用户行为。users将要发生交互的items取决于这个用户过去访问的items。
作者认为:在序列推荐任务中,需要考虑这四个因素:
-
general user interest:
采用矩阵分解来对general interest进行建模,不去考虑item sequential dynamics。
-
user short-term interests:
根据短期内的几个访问过的items,捕捉到的用户偏好;
使用GNN来聚合items的邻域,用来生成短期内的user intentions。可以在短期内捕捉局部上下文信息、结构。
-
user long-term interests:
捕获了users早期访问的items、users将来访问的items之间的长期依赖关系;
使用一个key-value memory network,基于users的long-term item sequences来生成interest representations。
这样做之后,other users with similar preferences will be taken into consideration when recommending an item. ??????
-
item co-occurrence patterns:
说明了常见的相关items之间会共同发生;
使用一个bilinear function来捕捉item序列中的那种一个接着一个出现的密切相关的items。
为了融合short-term、long-term interest,在GNN框架中引入一个gating机制,与LSTM相类似。其控制了这两者对于combined representation的贡献。
2. Problem Formulation
user偏好表示为按照时间排序的user-item序列, S u = ( I 1 , I 2 , . . . I ∣ S u ∣ ) S^u = (I_1,I_2,...I_{|S^u|}) Su=(I1,I2,...I∣Su∣),其中 I ∗ I_* I∗是user u交互过的item index。
给定earlier sub-sequence S 1 : t u S_{1:t}^u S1:tu ( t < ∣ S u ∣ t < |S^u| t<∣Su∣) of M M M users,该问题可以看作:从总共 N N N个items中,为每个user推荐出 K K K个items的列表 ( K < N K < N K<N),并且评估 S t + 1 : ∣ S u ∣ u S_{t+1:|S^u|}^u St+1:∣Su∣u中的items是否出现在这个推荐列表中。
3. Methodology
3.1 General Interest Modeling
一个用户的general或是static interest被认为随着时间的变化是稳定的。
使用matrix factorization term来捕捉general user interest,不去考虑sequential dynamics of items。矩阵分解项的形式如下:
p u ⊤ ⋅ q j \large {p_u}^\top \cdot q_j pu⊤⋅qj
p u ∈ R d p_u \in \mathbb{R}^d pu∈Rd 是 user u u u的embedding;
q j ∈ R d q_j \in \mathbb{R}^d qj∈Rd 是 output embedding of item j j j ??????
d d d 是latent space的维度
3.2 Short-term Interest Modeling
user的short-term interest描述了用户的当前偏好,是基于短期内最近访问的几个items。一个user在不久的将来将要发生交互的items很可能与她刚刚访问过的items相关。
为了显示地对user short-term interest进行建模,采用sliding window strategy将item sequence拆分成细粒度的sub-sequence。接下来,可以关注最近的子序列,来预测接下来会出现哪些items,并忽略那些影响较小的不相关items。
对于每个user u,抽取出 ∣ L ∣ |L| ∣L∣个连续的items作为输入,接下来的 ∣ T ∣ |T| ∣T∣个items作为预测目标。其中, L u , l = ( I l , I l + 1 , . . . , I l + ∣ L ∣ − 1 ) L_{u,l} = (I_l, I_{l+1}, ..., I_{l+|L|-1}) Lu,l=(Il,Il+1,...,Il+∣L∣−1)是user u的第 l l l个sub-sequence。
然后问题可以被定义为:在user-item交互序列 S u S^u Su中,给定 ∣ L ∣ |L| ∣L∣个连续items的一个序列,对于那个user,预测的items与 ∣ T ∣ |T| ∣T∣个目标items相符的可能性有多大。
Item Graph Construction.
需要将item sequences转换为graph:对于item sequences中的每一个item,抽取出几个后续items(例如3个),然后在它们之间添加边。
对每个user执行上述操作,然后数出所有users中,抽取出的item对的边的数量。之后对邻接矩阵的行进行归一化。
将邻接矩阵记作: A A A
A i , k A_{i,k} Ai,k 表示item k关于 i的节点权重
将item i的相邻的items记作: N i N_i Ni
Short-term Interest Aggregation.
使用一个2层的GNN来聚合 L u , l L_{u,l} Lu,l 中的相邻items,用来学习user的short-term interest表示。
对于第 l l l个short-term窗口 $ L_{u,l}$中的一个item j j j,其input embedding表示为 e j ∈ R d e_j \in \mathbb{R}^d ej∈Rd,user short-term interest通过下面的式子计算:
h i = t a n h ( W ( 1 ) ⋅ [ ∑ k ∈ N i e k A i , k ; e i ] ) \large h_i = tanh(W^{(1)} \cdot [\sum\limits_{k \in N_i} e_k A_{i,k} ; e_i]) hi=tanh(W(1)⋅[k∈Ni∑ekAi,k;ei])
p u , l S = t a n h ( W ( 2 ) ⋅ [ 1 ∣ L ∣ ∑ i ∈ L u , l h i ; p u ] ) \large p_{u,l}^S = tanh(W^{(2)} \cdot [\frac{1}{|L|} \sum\limits_{i \in L_{u,l}} h_i ; p_u]) pu,lS=tanh(W(2)⋅[∣L∣1i∈Lu,l∑hi;pu])
其中, [ ⋅ ; ⋅ ] ∈ R 2 d \large [\cdot ; \cdot] \in \mathbb{R}^{2d} [⋅;⋅]∈R2d 表示vertical concatenation;
W ( 1 ) , W ( 2 ) ∈ R d × 2 d W^{(1)}, W^{(2)} \in \mathbb{R}^{d \times 2d} W(1),W(2)∈Rd×2d是GNN的可学习参数;
上标 S S S代表这个表示来自user short-term兴趣
(先按照行进行聚合,更新每个item i的局部表示,然后再聚合所有items的表示,得到该用户的短期兴趣表示)
通过聚合 L u , l L_{u,l} Lu,l 中items的邻居, p u , l S p_{u,l}^S pu,lS 表明哪个items与 L u , l L_{u,l} Lu,l 中的items接近。
3.3 Long-term Interest Modeling
但是,在short-term window L u , l L_{u,l} Lu,l 之外的long-term user interest H u , l = ( I 1 , I 2 , . . . , I l − 1 ) H_{u,l} = (I_1, I_2, ..., I_{l-1}) Hu,l=(I1,I2,...,Il−1)无法被捕捉到。
论文p4:为什么memory unit学习到的embedding会跟 p u p_u pu 相似 ??????
本文使用的memory network存储了所有users共享的潜在兴趣表示,其中的每个memory unit表示某种类型的潜在user interest。
Self-attention
Self-attention的思想是:将输入a分别乘上3个权重矩阵W,各自得到query q q q、key k k k、value v v v。
a 2 a^2 a2关于 a 1 a^1 a1的权重系数 α 1 , 2 = q 1 k 2 \large \alpha_{1,2} = q^1 k^2 α1,2=q1k2
a 1 a^1 a1经过self-attention后的输出 b 1 = α 1 , 1 v 1 + α 1 , 2 v 2 + α 1 , 3 v 3 + α 1 , 4 v 4 \large b^1 = \alpha_{1,1} v^1 + \alpha_{1,2} v^2 + \alpha_{1,3} v^3 + \alpha_{1,4} v^4 b1=α1,1v1+α1,2v2+α1,3v3+α1,4v4 (表明:如果 a 1 a^1 a1、 a 2 a^2 a2的关联性很强,则 α 1 , 2 ′ \alpha_{1,2}^{'} α1,2′的得分越高,做weighted sum后, b 1 b^1 b1的值就越接近 v 2 v^2 v2)
本篇论文使用multi-dimensional attention model来生成query embedding,这就使得能较好反应用户偏好的items对相应的外部memory units的定位产生较大的影响。
将 H u , l H_{u,l} Hu,l中的item embeddings记作 H u , l ∈ R d × ∣ H u , l ∣ \large \mathcal{H}_{u,l} \in \mathbb{R}^{d \times |H_{u,l}|} Hu,l∈Rd×∣Hu,l∣,query embedding计算过程如下:
H u , l : = H u , l + P E ( H u , l ) \large \mathcal{H}_{u,l} := \mathcal{H}_{u,l} + PE(H_{u,l}) Hu,l:=Hu,l+PE(Hu,l)
S u , l = s o f t m a x { W a ( 3 ) t a n h [ W a ( 1 ) H u , l + ( W a ( 2 ) p u ) ⊗ 1 ϕ ] } \large S_{u,l} = softmax \{ W_a^{(3)} tanh [W_a^{(1)} \mathcal{H}_{u,l} + (W_a^{(2)} p_u) \otimes 1_{\phi} ] \} Su,l=softmax{Wa(3)tanh[Wa(1)Hu,l+(Wa(2)pu)⊗1ϕ]}
Q u , l = t a n h ( S u , l ⋅ H u , l ⊤ ) \large Q_{u,l} = tanh(S_{u,l} \cdot \mathcal{H}_{u,l}^{\top}) Qu,l=tanh(Su,l⋅Hu,l⊤)
q u , l = a v g ( Q u , l ) \large q_{u,l} = avg(Q_{u,l}) qu,l=avg(Qu,l)
P E ( ⋅ ) PE(\cdot) PE(⋅)是sinusoidal positional encoding function,将item positions映射为position embeddings(与Transformer中使用的一样):也就是说,保持sequence里面的items的相对顺序。
ϕ \phi ϕ的值为 ∣ H u , l ∣ |H_{u,l}| ∣Hu,l∣; ⊗ \otimes ⊗表示outer product;
h h h是超参数,用来控制attention model的维数;
S u , l ∈ R h × ∣ H u , l ∣ \large S_{u,l} \in \mathbb{R}^{h \times |H_{u,l}|} Su,l∈Rh×∣Hu,l∣是attention score matrix:个人觉得是multi-head self-attention的 q 1 q^1 q1、 q 2 q^2 q2相加的过程
Q u , l ∈ R h × d Q_{u,l} \in \mathbb{R}^{h \times d} Qu,l∈Rh×d是query matrix representation,h行的每一行都代表了query的一个不同方面;
最终的 q u , l ∈ R d q_{u,l} \in \mathbb{R}^d qu,l∈Rd是combined query embedding,其平均了不同方面。
使用query embedding q u , l q_{u,l} qu,l 在memory network中找到共享用户潜在兴趣的合适组合appropriate combination of the shared user latent interest。
memory network中的keys、values记作 K ∈ R d × m K \in \mathbb{R}^{d \times m} K∈Rd×m、 V ∈ R d × m V \in \mathbb{R}^{d \times m} V∈Rd×m,其中m是memory units的数量。
user的long-term interest embedding建模如下:
α i = s o f t m a x ( q u , l T ⋅ k i ) \large \alpha_i = softmax(q_{u,l}^T \cdot k_i) αi=softmax(qu,lT⋅ki)
o u , l = ∑ i α i v i \large o_{u,l} = \sum\limits_i \alpha_i v_i ou,l=i∑αivi
p u , l H = q u , l + o u , l \large p_{u,l}^H = q_{u,l} + o_{u,l} pu,lH=qu,l+ou,l
k i , v i ∈ R d k_i, v_i \in \mathbb{R}^{d} ki,vi∈Rd是第i个memory unit;
上标H代表:这个表示是来自user long-term interest
3.4 Interest Fusion
下面一步是组合上述的两种隐藏表示,以方便user对未评级的items进行偏好预测。
借用了LSTM(使用可学习的gates来平衡当前输入、历史隐藏状态)的思想,本文中,使用一个可学习的gate来控制recent user interest表示、long-term user interest表示对combined user interest作出的贡献大小:
g u , l = σ ( W g ( 1 ) ⋅ 1 ∣ L ∣ ∑ i ∈ L u , l h i + W g ( 2 ) ⋅ p u , l H + W g ( 3 ) ⋅ p u ) \large g_{u,l} = \sigma(W_g^{(1)} \cdot \frac{1}{|L|} \sum\limits_{i \in L_{u,l}}h_i + W_g^{(2)} \cdot p_{u,l}^H + W_g^{(3)} \cdot p_u) gu,l=σ(Wg(1)⋅∣L∣1i∈Lu,l∑hi+Wg(2)⋅pu,lH+Wg(3)⋅pu)
p u , l C = g u , l ⊙ 1 ∣ L ∣ ∑ i ∈ L u , l h i + ( 1 d − g u , l ) ⊙ p u , l H p_{u,l}^C = g_{u,l} \odot \frac{1}{|L|} \sum\limits_{i \in L_{u,l}}h_i + (1_d - g_{u,l}) \odot p_{u,l}^H pu,lC=gu,l⊙∣L∣1i∈Lu,l∑hi+(1d−gu,l)⊙pu,lH
W g ( 1 ) 、 W g ( 2 ) 、 W g ( 3 ) ∈ R d × d W_g^{(1)}、W_g^{(2)}、W_g^{(3)} \in \mathbb{R}^{d \times d} Wg(1)、Wg(2)、Wg(3)∈Rd×d是gating layer中的可学习参数;
⊙ \odot ⊙表示element-wise multiplication;
g u , l ∈ R d g_{u,l} \in \mathbb{R}^{d} gu,l∈Rd是可学习的gate;
上标 C C C表示 fusion of long- and short-term interests
3.5 Item Co-occurrence Modeling
序列推荐任务中,紧密相关的items通常在item sequence中一个接着一个出现(比如手机、保护壳)使用一个bilinear function来捕捉item的co-occurence patterns,来显示地对 L u , l L_{u,l} Lu,l中的items、其他的items 之间的成对关系 进行建模。形式如下:
e i ⊤ W r q j \large e_i^{\top} W_r q_j ei⊤Wrqj
W r ∈ R d × d W_r \in \mathbb{R}^{d \times d} Wr∈Rd×d是可学习的参数矩阵,捕捉了item latent features之间的相关性。
3.6 Prediction & Training
r ^ u , j = p u ⊤ ⋅ q j + p u , l C ⊤ ⋅ q j + 1 ∣ L ∣ ∑ i ∈ L u , l e i ⊤ W r q j \large \hat{r}_{u,j} = p_u^{\top} \cdot q_j + p_{u,l}^{C\top} \cdot q_j + \frac{1}{|L|} \sum\limits_{i \in L_{u,l}} e_i^{\top} W_r q_j r^u,j=pu⊤⋅qj+pu,lC⊤⋅qj+∣L∣1i∈Lu,l∑ei⊤Wrqj