KOPRA论文阅读笔记

Joint Knowledge Pruning and Recurrent Graph Convolution for News Recommendation论文阅读笔记

Abstract

​ 最近,利用知识图谱(KG)来丰富新闻文章的语义表征已被证明对新闻推荐有效。这些解决方案的重点是利用知识图谱中的附加信息对新闻文章进行表征学习,用户表征主要是在这些新闻表征的基础上得出的。然而,不同的用户对同一篇新闻文章会有不同的兴趣。换句话说,直接识别与用户兴趣相关的实体并推导出相应的用户表征可以实现更好的新闻推荐和解释。

​ 我们在本文中提出了一种新颖的基于知识剪枝的递归图卷积网络(名为 Kopra),用于新闻推荐。Kopra 并非从知识图谱中提取新闻文章的相关实体,而是从用户的点击历史和知识图谱中识别相关实体,从而得出用户表征。我们首先利用从新闻标题和摘要中提取的种子实体形成初始实体图(即兴趣图)。然后,我们引入了知识剪枝和递归图卷积(RGC)联合机制,以递归方式用 KG 中的相关实体增强每个种子实体。也就是说,KG 中每个种子实体邻域内但与用户兴趣无关的实体将从增强中剪除。

​ 通过这种循环方式的剪枝和图卷积过程,我们可以根据用户在长时间和短时间内的点击历史,分别得出用户的长期和短期表征。最后,我们在用户的长期和短期表征以及候选新闻中的种子实体上引入一个最大池化预测器,以计算推荐排名得分。

Introduction

​ 介绍一下缺点:新闻文章的语义空间要宽广得多,因为它可能涉及许多不同类型的实体。然而,由于缺乏这些实体背后的背景知识,现有的许多解决方案无法很好地以足够的语义来表示新闻,所以引入了知识图谱的方式。

​ 尽管这些基于知识图谱的解决方案取得了巨大成功,但它们有两大共同的局限性,阻碍了性能的进一步提高。

​ 首先,所有现有解决方案都忽略了通过知识图谱直接建立用户兴趣模型。它们选择首先利用知识图谱和新闻内容中的相关信息对新闻文章进行表征学习。然后,利用用户编码器对其点击的新闻进行表征合成,如注意力机制或 RNN。然而,这种后处理方法对于用户表征学习来说并不理想,因为新闻表征是静态的,并不是为每个用户量身定制的。直接从头开始推导用户表征更为有效。

​ 其次,KG 提供的背景知识并非都与用户的兴趣相关。从知识库中提取的上下文实体可以为新闻中提到的实体提供辅助信息。但不同用户对同一新闻文章的兴趣可能不同。在学习用户表征时,我们需要对 KG 提供的知识进行剪裁,使其与用户的兴趣相匹配。

​ 为此,本文提出了一种新的基于知识剪枝的循环图卷积网络(Kopra)进行新闻推荐。Kopra的设计目的是通过沿着用户点击的新闻序列包含相关的上下文实体,迭代地构建一个兴趣图。

​ 首先,我们从新闻标题和摘要中提取实体作为种子实体。然后,根据相应的新闻文章的点击顺序,在种子实体上形成一个初始图。在这里,我们设计了一个循环图卷积(RGC),用从KG中提取的相关上下文实体周期性地增强每个种子实体。具体来说,对于当前的种子实体,我们会根据迄今为止更新的图进行 RGC 运算,从而得出当前种子实体的表示。在这里,这种表示是兴趣感知的,因为当前图在一定程度上编码了用户的兴趣。

​ 然后,根据每个上下文实体与当前种子实体之间的相关性,对从 KG 中提取的与当前种子实体相关的上下文实体进行剪枝。通过将这些相关上下文实体纳入当前图中,我们将继续为下一个种子实体循环执行 RGC。在对上一个种子实体应用 RGC 后,我们可以生成一个精确反映用户兴趣的实体图(即兴趣图),这将为推荐解释提供支持。同时,由此产生的用户表征可以精确地编码用户的兴趣,从而获得更好的新闻推荐。

​ 需要注意的是,包含相关上下文实体的图更新具有离散性。因此,我们通过强化学习程序来进行知识剪枝和图更新。在给定用户的情况下,我们可以利用上述知识剪枝和强化学习方法,分别得出用户在长期和短期历史中的长期和短期表征。最后,我们在 Kopra 中开发了一个最大池化预测器,利用用户的长期和短期表征以及目标新闻中的种子实体来计算排名得分。

​ 本文的贡献如下:

  • 我们提出了一种新颖的知识增强图卷积模型,通过修剪知识图中的无关信息来进行新闻推荐。此外,我们选择利用新闻中提到的实体来直接建立用户兴趣模型,而不是建立新闻文章模型。据我们所知,这是首次为新闻推荐明确联合执行知识剪枝和用户兴趣建模的尝试。
  • 我们引入了一种新颖的循环图卷积机制,帮助将种子实体序列增强为每个用户的实体图。该图是通过知识剪枝迭代建立的,可以更全面地编码用户的兴趣。此外,实体图还能作为代表提供推荐解释。

Method

​ 模型的总体框架如下:

pkDYTxI.png

​ 在本节中,我们首先为我们提出的Kopra提出了一个正式的问题设置。然后,我们详细描述了Kopra的每个组成部分,然后是一个基于强化学习的优化过程。

Problem Formulation

​ 将所有与实体e保持关系的实体视为上下文实体。在知识图G的基础上,首先提取每篇新闻文章\(A_k\)的标题和摘要中提到的实体\(\mathcal{E}_{A_k}\),作为后者的种子实体。我们的任务是在 G、Su 的基础上建立一个实体图 Gu,以有效表示用户的兴趣,即兴趣图。然后新闻推荐是预测用户u将会阅读Gu和Ev中的新的新闻v的可能性,其中\(\mathcal{S}_u=\{\mathcal{E}_{A_1},\ldots,\mathcal{E}_{A_L}\}.\)

兴趣图初始化

​ 时间信息在许多推荐任务中都被证明是有效的。因此,在开始时,我们选择按照这些新闻文章的点击顺序,从 Su 开始形成兴趣图谱 Gu。当每个\(\mathcal{E}_{A_k}\) 中只包含一个种子实体时,我们可以很容易地生成如下的种子实体序列:

\(\mathcal{G}_u=\{\mathcal{E}_{A_1}\leftrightarrow\mathcal{E}_{A_2}\cdots\leftrightarrow\mathcal{E}_{A_L}\}\)

​ 其中符号↔是指连接对应两个集合的两个实体的边。然而,这个策略产生了一个问题,即如何组织一篇文章中提到的多个实体。

​ 实际上,当新闻有一个以上的种子实体时,有两种情况:

​ (1)这些种子实体在知识图谱 G 中相互靠近。在这种情况下,可以合理地假设新闻谈论的是一个特定的主题。因此,我们选择按照种子实体在标题和摘要中的出现顺序将其串联起来。具体来说,当 \(\mathcal{E}_{k}=\{e_{k1},e_{k2}\}\)中 ek1 出现在 ek2 之前时,兴趣图谱更新为\(\mathcal{G}_{u}=\{\mathcal{E}_{A_{1}}\cdots\leftrightarrow e_{k1}\leftrightarrow e_{k2}\leftrightarrow\ldots\mathcal{E}_{A_{L}}\}.\)

​ (2)当种子实体在知识图谱中没有明显的接近性时,例如 "国家气象局 "和 "北德克萨斯州",它们中的每一个都可能是该用户点击这条新闻的原因。为了让 Kopra 能够识别哪个实体与用户的兴趣相关,我们以并行模式组织它们。在这种情况下,兴趣图更新为 \(\mathcal{G}_{u}=\{\mathcal{E}_{A_{1}}\cdots\Leftrightarrow\{e_{k1},e_{k2}\}\Leftrightarrow\ldots\mathcal{E}_{A_{L}}\},\),其中符号 ⇔ 表示集合是完全连接的。

​ 兴趣图的示意图如下所示:

pkDYDPJ.png

兴趣感知的知识修剪

​ 在用 Su 初始化兴趣图谱后,我们就可以为知识图谱中的每个种子实体搜索相关的上下文实体,进行信息扩充。这一过程以兴趣感知的方式按照用户点击历史记录的顺序进行。也就是说,我们反复添加每个种子实体的相关上下文实体作为 Gu 中的新节点。

​ 具体来说,对于第 k 步的种子实体 ek,我们根据在此之前更新的 Gu 得出其表示。在这里,我们利用递归图卷积得出表示 \(\mathbf{h}_{e_k}=RGC(e_k,G_u).\)。然后,我们搜索包含 ek 作为头部实体或尾部实体的知识三元组。在这些三元组中,与 ek 相关的其他实体被视为 ek 的上下文实体。对于每个上下文实体 e,我们利用感知层 f1 来计算 e 和 ek 之间的相关性,计算公式如下:

\(s(e_k,e)=f_1(\mathbf{h}_{e_k}\oplus\mathbf{x}_e)\)

​ 其中\(x_e\)是上下文实体的嵌入

​ 我们保留相关性大于零(即 s(ek , e) > 0)的上下文实体作为 ek 的相关上下文实体 \(R_{uk}\),并通过将它们连接到 ek 将其添加到 Gu 中。按照这个步骤,我们继续对后面的种子实体进行知识剪枝和扩充,直到最后一个。请注意,我们每次都会根据 Gu 中更新的新信息推导出兴趣感知种子实体表示法,这将有助于以后对其余种子实体进行更好的知识剪枝。我们可以以并行模式组织种子实体。对于这些并行的种子实体,我们会同时进行知识剪枝和扩充以及 RGC。

递归图卷积

​ RGC 的设计目的是将每个种子实体作为 Gu 中的中心,从而为每个种子实体推导出兴趣感知表示。具体来说,在对(k - 1)个种子实体 ek-1 进行知识剪枝和图增强后,我们进行图卷积,以双向方式将兴趣信息传播到当前种子实体 ek。在前向传播中,我们按照 e1, ... , ek-1 的顺序对每个种子实体进行图卷积。具体来说,根据图注意网络 (GAT),我们对当前种子实体 ek 进行循环图卷积如下:

\(\begin{aligned} \mathbf{x}_{e_{k}}& =\mathbf{x}_{e_k}+\sum_{e\in\mathcal{N}_{e_k}}\alpha(e,e_k)\mathbf{x}_e \\ \alpha(e,e_j)& =\frac{\exp\left(LeakyReLU\left(\mathbf{w}_1^\top f_2(\mathbf{x}_e\oplus\mathbf{x}_{e_k})\right)\right)}{\sum_{e^{\prime}\in\mathcal{N}_{e_k}}\exp\left(LeakyReLU\left(\mathbf{w}_1^\top f_2(\mathbf{x}_{e^{\prime}}\oplus\mathbf{x}_{e_k})\right)\right)} \end{aligned}\)

​ 同样,在反向传播中,我们按照\(e_n,\ldots,e_{k+1}.\)的顺序进行图卷积。这次不涉及相关的上下文实体,而只是将较新的种子实体聚合到 ek 中。然后,通过对种子实体 ek 在 Gu 中的所有邻居执行 GAT,得出 RGC 的表示 \(h_{e_k}\)。下图展示了 RGC 的工作流程及其网络结构。

最大池化预测器

​ 在对所有种子实体进行知识剪枝和增强之后,可以使用生成的兴趣图来推导用户表示。由于兴趣信息是沿着种子实体链聚合的,我们可以简单地将\(h_{e_M}\)作为用户表示hu,其中M = |Su |。然而,一些种子实体可以被平行地组织起来。这也可能发生在最近的新闻中。

​ 因此,我们在最后添加了一个 pesudo 种子实体 p,以连接最后一个种子实体(集合)。用户表示等同于 RGC 为 p 生成的兴趣感知表示\(\mathbf{h}_u=RGC(p,\mathcal{G}_u)\)。需要注意的是,对用户的长期和短期兴趣建模已被证实对顺序推荐有效。在这里,上述用 L 篇新闻得出的用户表征可视为长期兴趣\(h_u^l\)。我们再根据最近的 S 篇新闻得到一个短期用户兴趣表征\(h_u^s\)

​ 给定一个带有相应种子实体Ev的候选新闻v,用户可能会因为一个特定的种子实体或由这些种子实体一起组成的语义而点击这个新闻。因此,我们形成一个矩阵 Hv 来表示候选新闻的多方面信息:\(\mathbf{H}_{\upsilon}=[\mathbf{e}_{\upsilon_{1}},\ldots,\mathbf{e}_{\upsilon_{q}},\mathbf{h}_{\upsilon}],\),其中 q = |Ev |,ek 是第 k 个种子实体在 Ev 中的嵌入,hv 是这些种子实体嵌入的求和。这里,矩阵 Ev 可视为同一新闻的多个表示。对于 Hv 中的每个新闻表示,我们利用注意力机制得出最终的用户表示如下:

\[\begin{aligned} \mathbf{h}_{u}^{k}& =\sum_{g\in\{s,l\}}\beta(\upsilon,g)\mathbf{h}_u^g \\ \beta(\upsilon,g)& =\frac{\exp\left(\mathbf{w}_2^\mathsf{T}tanh(\mathbf{W}_1\mathbf{h}_u^g+\mathbf{W}_2\mathbf{H}_v[k])\right)}{\sum_{g^{\prime}\in\{s,l\}}\exp\left(\mathbf{w}_2^\mathsf{T}tanh(\mathbf{W}_1\mathbf{h}_u^{g^{\prime}}+\mathbf{W}_2\mathbf{H}_v[k]\right)} \end{aligned} \]

\(h_u^g\)是长期或者短期的用户兴趣表示。

​ 最后,我们计算用户u通过最大池点击这个候选新闻的可能性\(\hat{y}_{u\upsilon}\)如下:

\(\hat{y}_{u\upsilon}=\sigma\Big(\max\Big(\{f_3(\mathbf{H}_\upsilon[k]\oplus\mathbf{h}_u^k)\mid1\leq k\leq q+1\}\Big)\Big)\)

模型优化

​ 由于新闻推荐可以表述为一个点击预测任务,我们利用交叉熵作为损失函数:\(\mathcal{L}_{uv}=-y_{uv}log(\hat{y}_{uv})-(1-y_{uv})log(1-\hat{y}_{uv})\)

强化学习

​ Kopra 的核心优势在于通过对知识进行剪枝来得出用户兴趣。不过,这种剪枝过程是以离散选择的方式进行的。为了促进端到端的模型学习,我们可以将优化过程建模为强化学习。根据强化学习术语,我们将行动(action)定义为每个种子实体的知识剪枝结果\(R_{uk}\)。在执行动作之前,我们将 RGC 生成的种子实体的兴趣感知表示 \(h_{e_k}\) 视为状态(state)。

​ 至于奖励(reward),我们利用预测任务中定义的损失函数作为延迟损失。需要注意的是,我们并不是选择越高越好的奖励,而是直接利用预测损失进行模型学习,这在本质上是相同的。我们需要强调的是,在获得用户的长期和短期表征之前,无法立即得出每个动作的奖励。因此,我们选择使用蒙特卡罗搜索来获得每个动作的延迟损失。具体来说,在完成对种子实体 ek 的知识剪枝和增强后,我们用 \(R_{uk}\) 更新兴趣图谱 Gu。然后,我们继续进行 K 次,直到整个过程结束。得出的损失值分别为 \(\mathcal{L}_{u\upsilon k}^1,\ldots,\mathcal{L}_{uck}^K\),我们对它们进行平均,作为行动 \(R_{uk}\) 的预期损失 Luc (k):

\(\mathcal{L}_{u\upsilon}(k)=\frac1K\sum_j^K\mathcal{L}_{u\upsilon k}(j)\)

​ 通过汇总所有种子实体的预期损失,我们将Kopra的损失函数重写如下:

\(\mathcal{L}_{uv}=\frac1M\sum_t\mathcal{L}_{uv}(t)\)

​ 由于我们需要同时推导出长期和短期用户代表来计算损失,因此上述步骤分别适用于相应的长期和短期用户点击历史。

知识图谱校正

​ 对于从未出现在训练集中的新实体,为了进一步利用知识图提供的语义关系,我们利用TransE 对知识图进行建模。具体的损失函数如下:

\(\begin{aligned}d&=\|h+r-t\|\\\mathcal{L}_{KG}&=\sum_{(h,r,t)\in\mathcal{G}}max(0,d_{(h,r,t)}-d_{(h,r,t)^-}+\epsilon)\end{aligned}\)

总结

​ 这里总结一下,看的时候感觉这篇文章比较难懂。主要总结一下方法。

​ 首先是图的初始化,正常状况是按照新闻点击的顺序来形成一个图谱,但是一篇新闻可能会有不止一个实体,于是就有两种情况,一种是多个实体之间联系级别紧密,那么就将这些实体按顺序串联起来,一种情况是多个实体之间关系不大,那就用并行的方式来进行组织。

​ 然后是递归图卷积,我们按照交互顺序对兴趣图的每个节点都进行递归图卷积操作,按照GAT来进行卷积,卷积的方式可以看图,还是很清晰的。

​ 递归图卷积得到每一个节点的表示以后,就可以进行知识修剪了,知识修剪是对每个实体,获取其在知识图谱中的关联实体,然后计算与目标实体的相关性,保留相关性大于0的,然后将其添加到实体图中,进行下一轮的RGC卷积。

​ 之后是最大池化的预测器,这部分名字起的很怪,实际上是用刚刚生成的新闻表示来获取用户的表示。原本是用交互的最后一个新闻的实体表示来对用户进行表示,但是存在并行的问题,于是在最后加了一个伪实体来作为用户的表示。之后分别获取长期兴趣和短期兴趣的用户表示。获得了这两个表示之后,将其经过注意力层,计算每个实体下的嵌入表示,注意力的权重是根据该实体的嵌入或其总和的嵌入来决定的。获取了每个实体下的用户表示后,计算与候选新闻所有实体以及最后实体总和的分数,取之中的最大值作为最终的用户与新闻的交互分数。

​ 最后采用交叉熵损失函数来进行损失函数的计算。强化学习这里看的不是很懂,就不详细解释了。

posted @ 2024-06-22 00:18  ANewPro  阅读(7)  评论(0编辑  收藏  举报