Graph Enhanced Representation Learning for News Recommendation论文阅读笔记
这篇文章是2020年的,也算是比较老的了,但是比较经典,这里来读一下
Abstract
存在的问题:
现有的新闻推荐方法通过从新闻内容和用户与新闻的直接交互(如点击)中建立精确的新闻表征来实现个性化,但忽略了用户与新闻之间的高阶相关性。
解决方法:
我们提出了一种新闻推荐方法,通过在图环境中对用户和新闻的相关性建模,加强用户和新闻的表征学习。
在我们的方法中,用户和新闻都被视为根据历史用户点击行为构建的双向图中的节点。在新闻表征方面,我们首先利用转换器架构来构建新闻语义表征。然后,我们通过图注意网络将其与图中相邻新闻的信息结合起来。在用户表征方面,我们不仅根据用户的历史点击新闻来表征用户,而且还将其邻居用户的表征信息纳入图中。
Introduction
我们的工作源于几个观察结果。首先,从用户与新闻的互动中可以建立一个双方图。在这个图中,用户和新闻都可以看作是节点,它们之间的互动可以看作是边。其中,一些新闻是由同一个用户浏览的,因此被定义为邻居新闻。同样,特定用户可能会分享共同点击的新闻,也被称为邻居用户。第三,图谱中的相邻用户可能有一些类似的新闻偏好。纳入这些相似性可进一步丰富目标用户表征。
在本文中,我们建议结合用户和新闻的图相关性,以增强他们对新闻推荐的表示学习。首先,我们利用Transformer从文本内容中构建新闻语义表示。通过这种方式,多头自我注意网络对短距离和长距离的标题中的单词依赖性进行了编码。我们还添加了新闻的主题嵌入,因为它们可能包含重要的信息。然后通过图注意网络聚合邻居新闻,进一步增强了新闻表示能力。为了丰富邻居的新闻表示,我们同时利用了它们的语义表示和ID嵌入。对于用户表示,除了从他们的ID嵌入和历史上点击的新闻中仔细地构建用户表示外,我们的方法还利用了图形信息。我们使用注意机制来聚合邻居用户的ID嵌入。最后,通过选取用户和新闻表示之间的点积来进行推荐。
Method
在本节中,我们将介绍图增强表示学习(GERL)方法,如图 2 所示,该方法由一跳交互学习模块和二跳图学习模块组成。一跳交互学习模块从历史点击新闻中代表目标用户,并根据文本内容代表候选新闻。两跳图学习模块利用图注意力网络学习新闻和用户的邻接嵌入。
用于上下文理解的Transformer
我们利用转换器从新闻标题和主题中形成准确的上下文表示。新闻标题通常简洁明了。因此,为了避免参数过多导致性能下降,我们将转换器简化为单层多头注意力
然后,我们从下往上介绍修改后的转换器。底层是词嵌入,它将新闻标题中的词转换为低维嵌入向量序列。将包含 M 个单词的新闻标题,通过这一层将其转换为嵌入向量序列。
下一层是词级多头自我关注网络。单词之间的交互对于学习新闻表征非常重要。此外,一个词可能与标题中的多个词相关。因此,我们采用多头自我关注来形成上下文单词表征。第 k 个注意力头学习到的第 i 个单词的表征计算公式为:
\(\alpha_{i,j}^{k}=\frac{\exp(\mathbf{e}_i^T\mathbf{W}_s^k\mathbf{e}_j)}{\sum_{m=1}^M\exp(\mathbf{e}_i^T\mathbf{W}_s^k\mathbf{e}_m)},\\\mathbf{h}_{i}^{k}=\mathbf{W}_{v}^{k}(\Sigma_{j=1}^{M}\alpha_{i,j}^{k}\mathbf{e}_{j}),\)
其中\(\alpha_{i,j}^{k}\)表示第 i 个词和第 j 个词之间相关性的相对重要性。第 i 个词的多头表示 h i 是由 N 个独立的自注意头产生的表示的合并,即 hi = [hi 1 ; hi 2 ; ...; hi N ]。为了减少过拟合,我们在自注意后添加了 dropout。
接下来,我们利用加性单词注意力网络来模拟不同单词的相对重要性,并将它们汇总到标题表示中。第 i 个单词的注意力权重\(\beta_i^w\)的计算公式为:
\(\beta_i^w=\frac{\exp(\mathbf{q}_w^T\tanh(\mathbf{U}_w\times\mathbf{h}_i+\mathbf{u}_w))}{\sum_{j=1}^M\exp(\mathbf{q}_w^T\tanh(\mathbf{U}_w\times\mathbf{h}_j+\mathbf{u}_w))},\)
新闻标题表示 vt 的计算公式为\(\mathbf{v}_{t}=\Sigma_{i=1}^{M}\beta_{i}^{w}\mathbf{h}_{i}.\)
由于用户点击的新闻主题也可能揭示用户的偏好,因此我们通过嵌入矩阵对新闻主题进行建模。将嵌入矩阵的输出表示为 vp,那么新闻的最终表示就是标题向量和话题向量的连接\(\mathbf{v}=[\mathbf{v}_t;\mathbf{v}_p].\)
单跳的交互学习
单跳交互学习模块学习候选新闻和目标用户的点击行为。更具体地说,它可以分解为三个部分:(1)候选新闻语义表征;(2)目标用户语义表征;(3)目标用户 ID 表征。
候选新闻语义表示
由于理解候选新闻的内容对于推荐至关重要,我们建议利用转换器对其进行精确表述。给定候选新闻 n,转换器模块(下标为 t)的单跳(上标为 O)输出为 \(n_t^O\)。
目标用户语义表示
用户的新闻阅读偏好可以通过其点击的新闻清晰地显示出来。因此,我们建议从用户点击的新闻内容中建立用户表征模型。此外,不同的新闻对于用户兴趣建模的重要性可能不同。因此,我们采用一种加法关注机制来聚合点击新闻向量,用于用户表征。给定一个目标用户 u 和总共 K 个点击新闻 [n1,n2, ...,nK ],我们首先得到它们的变换器编码输出 [v1, v2, ..., vK ]。然后计算第 i 个被点击新闻的关注权重\(\beta_i^n\),计算公式为:
\(\beta_i^n=\frac{\exp(\mathbf{q}_n^T\tanh(\mathbf{U}_n\times\mathbf{v}_i+\mathbf{u}_n))}{\Sigma_{q=1}^K\exp(\mathbf{q}_n^T\tanh(\mathbf{U}_n\times\mathbf{v}_q+\mathbf{u}_n))},\)
单跳用户语义表示 \(\mathbf{u}_{t}^{O}\) 的计算公式为\(\mathbf{u}_{t}^{O}=\Sigma_{i=1}^{K}\beta_{i}^{n}\mathbf{v}_{i}.\)
目标用户ID表示
由于用户 ID 代表每个用户的唯一性,我们将其作为用户兴趣的潜在表征。我们使用可训练的 ID 嵌入矩阵\(\mathcal{M}_u\in\mathcal{R}^{N_u\times Q}\)将每个用户 ID 表示为低维向量,其中 Nu 是用户数,Q 是 ID 嵌入的维数。对于用户 u,单跳 ID 嵌入向量表示为\(u_e^O\) 。
两跳图学习
双跳图学习模块从交互图中挖掘邻居用户和新闻之间的关联性。此外,对于给定的目标用户,其邻居用户通常与其具有不同程度的相似性。邻居新闻之间也存在同样的情况。为了利用这种相似性,我们利用图关注网络(graph attention network)来聚合邻居新闻和用户信息。这里使用的图信息是异构的,包括语义表示和 ID 嵌入。在这个两跳图学习模块中,还包括三个部分:(1)邻居用户 ID 表示;(2)邻居新闻 ID 表示;(3)邻居新闻语义表示。
邻居用户ID表示
由于添加邻居用户信息可以补充目标用户的表征,我们通过加法注意力网络来聚合邻居用户的 ID 嵌入。给定一个用户 u 和 D 个邻居用户列表\([u_{n_1},u_{n_2},...,u_{n_D}]\),我们首先通过相同的用户 ID 嵌入矩阵 Mu 得到他们的 ID 嵌入,记为\([\mathfrak{m}_{u_1},\mathfrak{m}_{u_2},...,\mathfrak{m}_{u_D}]\)。然后计算第 i 个邻居用户的关注权重\(\beta_i^u\):
\(\beta_i^u=\frac{\exp(\mathbf{q}_u^T\tanh(\mathbf{U}_u\times\mathbf{m}_{u_i}+\mathbf{u}_u))}{\Sigma_{q=1}^D\exp(\mathbf{q}_u^T\tanh(\mathbf{U}_u\times\mathbf{m}_{u_q}+\mathbf{u}_u))},\)
两跳邻居用户 ID 表示\(\mathbf{u}_{e}^{T}\)的计算公式为\(\mathbf{u}_{e}^{T}=\Sigma_{i=1}^{D}\beta_{i}^{u}\mathbf{m}_{u_{i}}.\)
邻居新闻ID表示
同一用户点击的新闻显示了该用户的某些偏好,因此可能具有某些共同特征。为了模拟这种相似性,我们利用注意力网络来学习邻居新闻 ID 表示。对于有 D 个邻居新闻列表\([n_{n_1},n_{n_2},...,n_{n_D}]\)的新闻 n,我们首先用新闻 ID 嵌入矩阵\(\mathcal{M}_n\in\mathcal{R}^{N_n\times Q},\)对邻居进行转换,其中 Nn 是新闻的数量,Q 是 ID 嵌入的维度。输出为\([\mathfrak{m}_{n_1},\mathfrak{m}_{n_2},...,\mathfrak{m}_{n_D}].\)。在此基础上,我们应用加法注意力层将相邻的 ID 嵌入合并为一个统一的输出向量。注意力的计算与上面计算邻居用户ID表示的注意力计算类似。新闻 n 的最终两跳邻居新闻 ID 表示为\(n_e^T\)。
邻居新闻的语义表示
虽然新闻的 ID 嵌入是唯一的,而且本质上代表了邻近新闻,但它们隐含了新闻信息。此外,一些新发布新闻的 ID 可能并不包含在预定义的新闻 ID 嵌入矩阵 Mn 中。因此,我们建议通过转换器同时学习它们的上下文表示。对于邻居新闻列表 \([n_{n_1},n_{n_2},...,n_{n_D}]\),转换器输出为\([\mathrm{v}_{n_1},\mathrm{v}_{n_2},...,\mathrm{v}_{n_D}].\)。然后应用注意力层来模拟邻居新闻的不同重要性。最终的邻居新闻语义表示是注意力层的输出,记为\(n_t^T\)。
推荐和模型训练
用户和新闻的最终表示是一跳交互学习模块和两跳图学习模块输出结果的合并,即\(\mathbf{u}=[\mathbf{u}_t^O;\mathbf{u}_e^O;\mathbf{u}_e^T]\)和\(\mathbf{n}=[\mathbf{n}_t^T;\mathbf{n}_e^T;\mathbf{n}_t^O].\)。用户-物品配对的评分由用户和物品表示的内积预测,即\(\hat{y}=\mathbf{u}^T\mathbf{n}\)。
最后的损失函数也是传统的损失函数:
\(\mathcal{L}=-\sum_i\log(\frac{\exp(\hat{y}_i^+)}{\exp(\hat{y}_i^+)+\Sigma_{j=1}^\lambda\exp(\hat{y}_{i,j}^-)}),\)
总结
这篇文章整体看下来还是讲的比较清晰的。这里贴一下原文的conclusion
在本文中,我们提出了一种用于新闻推荐的图增强表示学习架构。我们的方法由一跳交互学习模块和两跳图学习模块组成。一跳交互学习模块通过转换器架构形成新闻表征。它还通过聚合用户点击的新闻来学习用户表征。双跳图学习模块通过图注意力网络聚合用户和新闻的邻居嵌入,从而增强用户和新闻的表征。新闻的 ID 和文本内容都被用来丰富邻居嵌入。