博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8.17 记忆增强图神经网络
阅读量:3950 次
发布时间:2019-05-24

本文共 9696 字,大约阅读时间需要 32 分钟。

文章目录

在许多推荐系统中,用户-物品交互的时间顺序可以揭示时间演变和顺序的用户行为。用户将与之交互的项可能依赖于过去访问过的项。然而,用户和物品的大量增加使得顺序推荐系统仍然面临着不小的挑战:

  • (1)对短期商品用户兴趣建模的难度;
  • (2)难以获取长期商品用户兴趣;
  • (3)商品共现模式的有效建模。

为了解决这些挑战,提出了一种记忆增强图神经网络(MA-GNN)来捕获长期和短期用户兴趣。具体地说,利用图神经网络在短期内对物品上下文信息进行建模,并利用共享记忆网络捕获物品之间的长期依赖关系。除了对用户兴趣进行建模之外,还使用了一个双线性函数来捕获相关商品的共现模式。

1、前言

如图1,增强图神经网络(MA-GNN)处理顺序推荐任务。它由一个通用兴趣模块、一个短期商品兴趣模块、一个长期商品兴趣模块和一个商品共现模块组成。

在通用兴趣模块中,采用矩阵分解项对用户的通用兴趣进行建模,而不考虑商品序列的动态性。

在短期商品兴趣模块中,使用GNN聚合商品的邻居,以形成短期内的用户意图。

为了对用户的长期商品兴趣进行建模,采用共享key-value记忆网络来生成基于用户长期商品序列的兴趣表示。通过这样做,其他有相似偏好的用户在推荐一个商品时就会被考虑进去。

为了融合短期商品和长期商品兴趣, 在GNN框架中引入了一种门控机制,类似于LSTM。这控制了短期商品和长期商品代表对组合代表的贡献。在商品共现模型中,利用一个双线性函数来捕获在商品序列中一个接一个出现的密切相关的商品。

image-20210621113507481

图 1 : M A − G N N 图1:MA-GNN 1MAGNN

2、方法

2.1 问题定义

本文所考虑的推荐任务以顺序隐式反馈作为训练数据。用户偏好按时间顺序由用户-商品序列表示, S u = ( I 1 , I 2 , … , I ∣ S u ∣ ) \mathcal{S}^{u}=\left(I_{1}, I_{2}, \ldots, I_{\left|\mathcal{S}^{u}\right|}\right) Su=(I1,I2,,ISu) I ∗ I_{*} I是用户 u u u交互过的商品索引。给定 M M M用户中前面的子序列 S 1 : t u ( t < ∣ S u ∣ ) \mathcal{S}_{1: t}^{u}\left(t<\left|\mathcal{S}^{u}\right|\right) S1:tu(t<Su) ,问题是从 N N N 商品 ( K < N ) (K<N) (K<N)中向每个用户推荐一个包含 K K K的列表,并计算 S t + 1 : ∣ S u ∣ u \mathcal{S}_{t+1:\left|\mathcal{S}^{u}\right|}^{u} St+1:Suu中的商品是否出现在推荐列表中。

2.2 通用兴趣模块

通用兴趣建模用户的一般或静态兴趣捕获了用户的固有偏好,并被假定为随着时间的推移是稳定的。为了获取一般用户的兴趣,我们使用矩阵分解项,而不考虑项目的顺序动态。这一项的形式是

p u ⊤ ⋅ q j \mathbf{p}_{u}^{\top} \cdot \mathbf{q}_{j} puqj
其中 p u ∈ R d \mathbf{p}_{u} \in \mathbb{R}^{d} puRd是用户 u u u embedding , q j ∈ R d \mathbf{q}_{j} \in \mathbb{R}^{d} qjRd是目标商品 j j j的输出embedding , d d d是维数。

2.3 短期商品兴趣模块

用户的短期商品兴趣描述了用户当前的偏好,并基于短期内最近访问的几个商品。用户在不久的将来将要交互的商品很可能与她刚刚访问的商品密切相关,并且这种用户行为的属性已经在之前得到了确认。因此,在顺序推荐中,有效地为用户的短期商品兴趣建模是非常重要的,这反映在最近访问的商品上。

为了显式地对用户的短期商品兴趣进行建模,采用滑动窗口策略将商品序列分割为细粒度的子序列。然后,可以关注最近的子序列,预测哪些商品将出现在接下来,而忽略影响较小的不相关商品。

对于每个用户 u u u,提取 ∣ L ∣ |L| L连续商品作为输入,它们的下一个 ∣ T ∣ |T| T商品作为被预测的目标,其中 L u , l = ( I l , I l + 1 , … , I l + ∣ L ∣ − 1 ) L_{u, l}=\left(I_{l}, I_{l+1}, \ldots, I_{l+|L|-1}\right) Lu,l=(Il,Il+1,,Il+L1)是用户 u u u的第 l l l个子序列。

那么问题可以用公式表示为:在用户商品交互序列 S u \mathcal{S}^{u} Su中,给定一个 ∣ L ∣ |L| L连续的商品序列,该用户预测的商品符合目标 ∣ T ∣ |T| T商品的可能性有多大。由于具有邻域信息聚合和局部结构学习的能力,图神经网络(gnn)很好地匹配了聚合 L u , l L_{u, l} Lu,l中的商品来学习用户短期兴趣的任务。

2.3.1商品的图构建

因为商品序列本身不是用于GNN训练的图,所以需要构建一个图来捕获商品之间的连接。如图2,对于商品序列中的每个商品,提取几个后续商品(三个商品),并在它们之间添加边。为每个用户执行此操作,并计算所有用户中提取的商品对的边数。

然后对邻接矩阵行标准化。因此,可以提取序列中相互接近的相关商品。图2显示了一个如何提取商品邻居和构建邻接矩阵的示例。将提取的邻接矩阵表示为 A A A,其中 A i , k A_{i, k} Ai,k表示商品 k k k对于商品 i i i的归一化节点权值。而 i i i的相邻商品记为 N i \mathcal{N}_{i} Ni

image-20210621095333724

图 2 图2 2

2.3.2短期商品兴趣聚合

为了获取用户的短期商品兴趣,使用了一个两层GNN来聚合 L u , l L_{u, l} Lu,l中的相邻商品来学习用户的短期商品兴趣表征。形式上,对于第 l l l个短期窗口 L u , l L_{u, l} Lu,l中的商品 j j j,其输入embedding表示为 e j ∈ R d \mathbf{e}_{j} \in \mathbb{R}^{d} ejRd 。那么用户的短期商品兴趣是:

h i = tanh ⁡ ( W ( 1 ) ⋅ [ ∑ k ∈ N i e k A i , k ; e i ] ) , ∀ i ∈ L u , l (1) \mathbf{h}_{i}=\tanh \left(\mathbf{W}^{(1)} \cdot\left[\sum_{k \in \mathcal{N}_{i}} \mathbf{e}_{k} A_{i, k} ; \mathbf{e}_{i}\right]\right), \forall i \in L_{u, l}\tag{1} hi=tanh(W(1)[kNiekAi,k;ei]),iLu,l(1)

p u , l S = tanh ⁡ ( W ( 2 ) ⋅ [ 1 ∣ L ∣ ∑ i ∈ L u , l h i ; p u ] ) (2) \begin{gathered} \mathbf{p}_{u, l}^{S}=\tanh \left(\mathbf{W}^{(2)} \cdot\left[\frac{1}{|L|} \sum_{i \in L_{u, l}} \mathbf{h}_{i} ; \mathbf{p}_{u}\right]\right) \end{gathered}\tag{2} pu,lS=tanhW(2)L1iLu,lhi;pu(2)

其中 [ ⋅ ; ⋅ ] ∈ R 2 d [\cdot ; \cdot] \in \mathbb{R}^{2 d} [;]R2d 表示垂直连接, W ( 1 ) , W ( 2 ) ∈ R d × 2 d \mathbf{W}^{(1)}, \mathbf{W}^{(2)} \in \mathbb{R}^{d \times 2 d} W(1),W(2)Rd×2d 是图神经网络中的可学习参数,上标 S S S为来自用户的短期商品兴趣表征。通过聚合 L u , l L_{u, l} Lu,l中的商品的邻居, p u , l S \mathbf{p}_{u, l}^{S} pu,lS是一个联合级汇总表明哪些商品是密切相关的商品在 L u , l L_{u, l} Lu,l。根据汇总的用户短期商品兴趣,可以推断出用户接下来将要访问的商品。

但是,直接应用上述GNN进行预测,显然忽略了用户过去的长期商品兴趣 H u , l = ( I 1 , I 2 , … , I l − 1 ) . H_{u, l}=\left(I_{1}, I_{2}, \ldots, I_{l-1}\right) . Hu,l=(I1,I2,,Il1).在短期商品窗口 L u , l L_{u, l} Lu,l之外可能有一些商品可以表示用户偏好或指示用户状态。

这些商品可以在预测在不久的将来会被访问的商品方面发挥重要作用。因此,如何对长期依赖建立模型,并使其与短期汇总保持平衡,是顺序推荐中的一个关键问题。

2.4 长期商品兴趣模块

为了获取长期的用户商品兴趣,用户访问商品 H u , l = ( I 1 , I 2 , … , I l − 1 ) H_{u, l}=\left(I_{1}, I_{2}, \ldots, I_{l-1}\right) Hu,l=(I1,I2,,Il1) ,可以使用外部记忆单元来存储随时间变化的用户兴趣。但是,为每个用户维护记忆单元会有巨大的记忆开销来存储参数。同时,记忆单元可能捕获与用户embedding p u \mathbf{p}_{u} pu所表示的信息非常相似的信息。

因此,使用记忆网络来记忆所有用户共享的潜在兴趣表征,每个记忆单元代表某种类型的潜在用户兴趣,例如用户对不同类别的电影的兴趣。给定用户在过去的 H u , l H_{u, l} Hu,l中访问的商品,可以学习不同类型的兴趣的组合来反映用户的长期兴趣(或状态)在 L u , l L_{u, l} Lu,l之前。

使用多维注意力模型来生成query embedding,而不是像在原始记忆网络中那样执行求和操作来生成query 。这允许区分信息商品,可以更好地反映用户的偏好,对相应的外部记忆单元的定位有更大的影响。形式上,将在 H u , l H_{u, l} Hu,l 的商品 embeddings 表示为 H u , l ∈ R d × ∣ H u , l ∣ \mathbf{H}_{u, l} \in \mathbb{R}^{d \times\left|H_{u, l}\right|} Hu,lRd×Hu,l 。多维注意力生成查询嵌入 z u , l \mathbf{z}_{u, l} zu,l的计算如下:

H u , l : = H u , l + PE ⁡ ( H u , l ) S u , l = softmax ⁡ ( W a ( 3 ) tanh ⁡ ( W a ( 1 ) H u , l + ( W a ( 2 ) p u ) ⊗ 1 ϕ ) ) Z u , l = tanh ⁡ ( S u , l ⋅ H u , l ⊤ ) z u , l = avg ⁡ ( Z u , l ) , (3) \begin{aligned} \mathbf{H}_{u, l} &:=\mathbf{H}_{u, l}+\operatorname{PE}\left(H_{u, l}\right) \\ \mathbf{S}_{u, l}&=\operatorname{softmax} \left(\mathbf{W}_{a}^{(3)} \tanh \left(\mathbf{W}_{a}^{(1)} \mathbf{H}_{u, l}+\left(\mathbf{W}_{a}^{(2)} \mathbf{p}_{u}\right) \otimes \mathbf{1}_{\phi}\right)\right) \\ \mathbf{Z}_{u, l} &=\tanh \left(\mathbf{S}_{u, l} \cdot \mathbf{H}_{u, l}^{\top}\right) \\ \mathbf{z}_{u, l} &=\operatorname{avg}\left(\mathbf{Z}_{u, l}\right), \end{aligned}\tag{3} Hu,lSu,lZu,lzu,l:=Hu,l+PE(Hu,l)=softmax(Wa(3)tanh(Wa(1)Hu,l+(Wa(2)pu)1ϕ))=tanh(Su,lHu,l)=avg(Zu,l),(3)
其中 P E ( ⋅ ) \mathrm{PE}(\cdot) PE()是正弦位置编码函数,它将商品位置映射到位置嵌入,这与在中使用的相同。 ϕ \phi ϕ 等于 ∣ H u , l ∣ , ⊗ \left|H_{u, l}\right|, \otimes Hu,l, 表示外积。 W a ( 1 ) , W a ( 2 ) ∈ R d × d \mathbf{W}_{a}^{(1)}, \mathbf{W}_{a}^{(2)} \in \mathbb{R}^{d \times d} Wa(1),Wa(2)Rd×d W a ( 3 ) ∈ R h × d \mathbf{W}_{a}^{(3)} \in \mathbb{R}^{h \times d} Wa(3)Rh×d 是注意模型中的可学习参数, h h h是控制注意模型中维度数的超参数。 S u , l ∈ R h × ∣ H u , l ∣ \mathbf{S}_{u, l} \in \mathbb{R}^{h \times\left|H_{u, l}\right|} Su,lRh×Hu,l是注意力得分矩阵。 Z u , l ∈ R h × d \mathbf{Z}_{u, l} \in \mathbb{R}^{h \times d} Zu,lRh×d是查询的矩阵表示,每一行 h h h表示查询的不同方面。最后, z u , l ∈ R d \mathbf{z}_{u, l} \in \mathbb{R}^{d} zu,lRd 是将不同方面平均的组合查询嵌入。

给定查询嵌入 z u , l \mathbf{z}_{u, l} zu,l,使用此查询来找到记忆网络中共享用户潜在兴趣的适当组合。形式上,记忆网络的键和值分别表示为 K ∈ R d × m \mathbf{K} \in \mathbb{R}^{d \times m} KRd×m V ∈ \mathbf{V} \in V R d × m \mathbb{R}^{d \times m} Rd×m,其中 m m m为记忆网络中的记忆单元数。因此,用户长期商品兴趣嵌入可以建模为:

s i = softmax ⁡ ( z u , l ⊤ ⋅ k i ) o u , l = ∑ i s i v i p u , l H = z u , l + o u , l (4) \begin{aligned} &s_{i}=\operatorname{softmax}\left(\mathbf{z}_{u, l}^{\top} \cdot \mathbf{k}_{i}\right) \\ &\mathbf{o}_{u, l}=\sum_{i} s_{i} \mathbf{v}_{i} \\ &\mathbf{p}_{u, l}^{H}=\mathbf{z}_{u, l}+\mathbf{o}_{u, l} \end{aligned}\tag{4} si=softmax(zu,lki)ou,l=isivipu,lH=zu,l+ou,l(4)
其中 k i , v i ∈ R d \mathbf{k}_{i}, \mathbf{v}_{i} \in \mathbb{R}^{d} ki,viRd中是第 i i i 个记忆单元,上标 H H H为来自于用户的长期商品兴趣表征。

2.5 兴趣融合

得到了用户短期商品表征和长期商品表征。下一步的目标是在GNN框架中结合这两种隐含表征,以促进用户对未评分商品的偏好预测。在这里,修改了Eq. 2,将用户的短期商品和长期商品连接起来。

具体来说,借鉴了LSTM的思想,用门来控制近期用户商品兴趣表征和长期用户商品兴趣表征的汇总用户兴趣,用于商品预测

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 ) p u , l C = g u , l ⊙ 1 ∣ L ∣ ∑ i ∈ L u , l h i + ( 1 d − g u , l ) ⊙ p u , l H (5) {\mathbf{g}_{u, l}=\sigma\left(\mathbf{W}_{g}^{(1)} \cdot \frac{1}{|L|} \sum_{i \in L_{u, l}} \mathbf{h}_{i}+\mathbf{W}_{g}^{(2)} \cdot \mathbf{p}_{u, l}^{H}+\mathbf{W}_{g}^{(3)} \cdot \mathbf{p}_{u}\right)\\ \mathbf{p}_{u, l}^{C}=\mathbf{g}_{u, l} \odot \frac{1}{|L|} \sum_{i \in L_{u, l}} \mathbf{h}_{i}+\left(\mathbf{1}_{d}-\mathbf{g}_{u, l}\right) \odot \mathbf{p}_{u, l}^{H}}\tag{5} gu,l=σWg(1)L1iLu,lhi+Wg(2)pu,lH+Wg(3)pupu,lC=gu,lL1iLu,lhi+(1dgu,l)pu,lH(5)
其中 W g ( 1 ) , W g ( 2 ) , W g ( 3 ) ∈ R d × d \mathbf{W}_{g}^{(1)}, \mathbf{W}_{g}^{(2)}, \mathbf{W}_{g}^{(3)} \in \mathbb{R}^{d \times d} Wg(1),Wg(2),Wg(3)Rd×d是门中的可学习参数, ⊙ \odot 表示元素相乘,而 g u , l ∈ R d \mathbf{g}_{u, l} \in \mathbb{R}^{d} gu,lRd是可学习门。上标 C C C表示长期和短期兴趣的融合。

2.6 商品的共现模型

由于推荐系统的有效性和可解释性,成功学习成对商品关系是推荐系统的关键组成部分。这已经在许多推荐模型中得到了研究和利用。

在序列推荐问题中,密切相关的商品可能会在商品序列中一个接一个地出现。例如,用户在购买手机后,更有可能购买手机保护套或保护套。为了获取商品共现模式,使用一个双线性函数来显式地建模 L u , l L_{u, l} Lu,l中的商品和其他商品之间的成对关系。这个函数的形式如下

e i ⊤ W r q j \mathbf{e}_{i}^{\top} \mathbf{W}_{r} \mathbf{q}_{j} eiWrqj
其中 W r ∈ r d × d \mathbf{W}_{r} \in \mathbb{r} ^{d \times d} Wrrd×d是一个可学习参数的矩阵,捕捉商品潜在特征之间的相关性。

2.7 预测和训练

为了推断用户偏好,有一个预测层,将上述因素组合在一起:

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 (6) \hat{r}_{u, j}=\mathbf{p}_{u}^{\top} \cdot \mathbf{q}_{j}+\mathbf{p}_{u, l}^{C \top} \cdot \mathbf{q}_{j}+\frac{1}{|L|} \sum_{i \in L_{u, l}} \mathbf{e}_{i}^{\top} \mathbf{W}_{r} \mathbf{q}_{j}\tag{6} r^u,j=puqj+pu,lCqj+L1iLu,leiWrqj(6)
由于训练数据来源于用户隐式反馈,针对贝叶斯个性化排名目标通过梯度下降对所提模型进行了优化。这包括优化正(观察到的)和负(未观察到的)商品之间的成对排序:
arg ⁡ min ⁡ U , Q , E , Θ ∑ u ∑ l ∑ ( L u , l , H u , l , j , k ) − log ⁡ σ ( r ^ u , j − r ^ u , k ) + λ ( ∥ P ∥ 2 + ∥ Q ∥ 2 + ∥ E ∥ 2 + ∥ Θ ∥ 2 ) (7) \begin{aligned} \underset{\mathbf{U}, \mathbf{Q}, \mathbf{E}, \boldsymbol{\Theta}}{\arg \min } \sum_{u} \sum_{l} \sum_{\left(L_{u, l}, H_{u, l}, j, k\right)} &-\log \sigma\left(\hat{r}_{u, j}-\hat{r}_{u, k}\right)+ \lambda\left(\|\mathbf{P}\|^{2}+\|\mathbf{Q}\|^{2}+\|\mathbf{E}\|^{2}+\|\Theta\|^{2}\right) \end{aligned}\tag{7} U,Q,E,Θargminul(Lu,l,Hu,l,j,k)logσ(r^u,jr^u,k)+λ(P2+Q2+E2+Θ2)(7)
这里 j j j表示 T u , l T_{u, l} Tu,l中的商品, k k k表示随机抽样的负商品, σ \sigma σ是sigmoid函数, Θ \Theta Θ表示模型中的其他可学习参数, λ \lambda λ是正则化参数。 p ∗ , q ∗ \mathbf{p}_{*}, \mathbf{q}_{*} p,q e ∗ \mathbf{e}_{*} e P , Q \mathbf{P}, \mathbf{Q} P,Q E \mathbf{E} E 的列向量。当目标函数极小化时,所有参数的偏导数均采用反向传播梯度下降法计算。

参考

Memory Augmented Graph Neural Networks for Sequential Recommendation

转载地址:http://ydyzi.baihongyu.com/

你可能感兴趣的文章
lower_bound和upper_bound
查看>>
Subsequence POJ - 3061 ( 尺取法 )
查看>>
常见HTTP状态码大全
查看>>
Python很简单?学会魔术方法才算入门!
查看>>
大数据揭秘:低学历成功逆袭概率多少?结果令人震惊!
查看>>
这16个数据可视化案例,惊艳了全球数据行业
查看>>
大数据死亡率报告揭秘:SUV与轿车到底谁更危险?
查看>>
2017年网络流行语TOP20 , 没用过算我输!
查看>>
GitHub最著名的20个Python机器学习项目!
查看>>
看完这13张图,不得不佩服还是外国人会玩人工智能
查看>>
大数据产业日趋成熟 市场规模将达千亿
查看>>
资源 | Github项目:斯坦福大学CS-224n课程中深度NLP模型的PyTorch实现
查看>>
一千个不用 Null 的理由
查看>>
2018年大数据趋势 :人工智能... 数据分析将包含可视化模型...
查看>>
他用python做了个小游戏,然后...
查看>>
用 Python分析胡歌的《猎场》到底值不值得看?
查看>>
程序员的心理活动,扎心了!
查看>>
从零开始用Python构造决策树(附公式、代码)
查看>>
精华 | 12个关键词告诉你告诉你什么是机器学习(基础篇)
查看>>
15个优秀的开源项目,让你轻松应对Android开发
查看>>