DIGAT论文阅读笔记
DIGAT: Modeling News Recommendation with Dual-Graph Interaction论文阅读笔记
Abstract
现有的NR方法通常采用新闻-用户表示学习框架,面临两个潜在的限制。首先,在新闻编码器中,单个候选新闻编码存在语义信息不足的问题。其次,现有的基于图形的NR方法很有前景,但缺乏有效的新闻-用户特征交互,使得基于图的推荐不理想。
我们提出了由新闻图通道和用户图通道组成的双交互式图注意网络(DIGAT)。在新闻图频道中,我们通过将语义相关的新闻信息与语义增广图(SAG)相结合来丰富单个候选新闻的语义。在用户图通道中,多层次的用户兴趣用新闻主题图表示。最值得注意的是,我们设计了一个双图交互过程,以在新闻图和用户图之间执行有效的特征交互,这有助于准确的新闻-用户表示匹配。
Introduction
一个传统的新闻推荐框架如下:
然后开始详细介绍存在的问题:
首先,在新闻编码器中,单一候选新闻编码存在语义信息不足的问题。与普通推荐(如电子商务产品推荐)中的长期项目不同,候选新闻项目是短期的,存在冷启动问题。在现实世界中,新闻推荐系统通常处理的是最新新闻,而现有的用户点击互动总是不可用 。因此,利用现有的用户点击记录来丰富候选新闻的信息是难以实现的。另一方面,与用户编码器中丰富的历史点击新闻相比,单条候选新闻可能不包含足够的语义信息,无法在点击预测阶段进行准确的新闻-用户表征匹配。先前的研究指出,用户通常对特定的新闻主题(如体育)感兴趣。从经验上看,单个候选新闻的文本没有包含足够的句法和语义信息,无法准确地代表一种新闻主题类型,并匹配用户的兴趣。
其次,以往的研究一般遵循两个研究方向对用户历史进行建模,即序列建模和图建模。将用户历史记录表述为用户点击新闻的序列是一个较为普遍的方向。然而,由于测试数据中的大多数候选新闻与用户之间并不存在互动(即冷新闻),孤立的冷新闻节点导致这种双方图建模退化。最近的研究的重点是如何从用户图方面提取细粒度表征,但忽略了候选新闻与用户图之间必要的特征交互。
在这项工作中,我们提出了双交互图注意网络(DIGAT)来解决上述局限性。DIGAT 由新闻和用户图通道组成,分别用于编码候选新闻和用户历史。在新闻图通道中,我们引入了语义增强图(SAG)建模来丰富单个候选新闻的语义表示。在 SAG 中,原始候选新闻被视为根节点,而语义相关的新闻文档被表示为扩展节点,以增强候选新闻的语义。我们将 SAG 的本地上下文和全局上下文整合为语义增强的候选新闻表示法。
在用户图通道中,我们用新闻主题图对用户历史进行建模,以表示多层次的用户兴趣。最值得注意的是,我们设计了一个双图交互过程,通过有效的特征交互来学习新闻图和用户图表征。与单个图关注网络不同,DIGAT 通过交互式关注机制更新新闻和用户图嵌入。特别是,在双图的每一层中,用户(新闻)图上下文都被纳入其双新闻(用户)节点嵌入迭代学习中。
Method
模型的整体框架如下:
新闻语义表示
介绍从新闻内容文本中提取语义表示,首先讲新闻的单词映射到嵌入中,然后采用Transformer的多头自注意力网络MSA来学习上下文表示,最后使用注意力网络对新闻表示进行聚合
\(H_n=\mathrm{MSA}(\mathrm{Q}=E_n,\mathrm{K}=E_n,\mathrm{V}=E_n)\\h=f_{att}\big(\mathrm{ReLU}(H_n)\big)\)
新闻图编码通道
在本节中,我们将解释新闻语义增强图(SAG)的构造和图的上下文学习。我们的动机是从训练语料库中检索与语义相关的新闻,并构建一个语义增广图来丰富原始的单个候选新闻的语义。
新闻图构造
语义相关的新闻检索
这里是使用PLM从新闻库中检索与语义相关的新闻,以增强原始单个候选新闻的语义信息。在检索过程中,利用相似度函数计算新闻之间的语义相似度得分
\(s_{i,j}=sim(n_i,n_j)=\text{cosine}\big(\phi(T_i),\phi(T_j)\big)\)
语义增强图
对于原始后续新闻,我们将其初始化为新闻图的根节点,我们通过反复将语义相关的邻接节点扩展到 Gn 的现有节点来构建 Gn。在每个图构建步骤中,对于 Gn 的现有节点 vi(对应新闻 Ni),我们会从新闻语料库中检索语义相似度得分最高的 M 个新闻文档 。我们通过在节点 vi 之间添加双向边将刚刚得到的节点集扩展为节点 vi 的相邻节点。为了启发式地发现高阶关系中的语义相关新闻,我们重复扩展从根节点跳数 K 以内的语义相关新闻节点。新闻图 Gn 的规模近似为 O(MK)。
新闻图上下文提取
在获取了由候选新闻节点和N个语义相关的新闻节点后,我们采用语义相关的新闻编码器(就是新闻语义表示那里提到的)来提取这些节点的语义表示\(h_{n,0}\in\mathbb{R}^d\text{ and }\{h_{n,i}\}_{i=1}^N\in\mathbb{R}^{N\times d}.\)
我们的目的是提取图上下文cn∈Rd,通过聚合Gn的信息来增强候选新闻ncan的语义。我们认为候选新闻的原始语义保留在根节点中,并将局部图上下文视为\(h_n^L=h_{n,0}\in\mathbb{R}^d.\)然后利用注意力模块从语义相关的新闻节点中汇总全局图信息\(h_n^G\),来编码图的整体语义信息。在注意力模块中,将根节点视为query,语义相关的新闻节点嵌入视为键值对。
\(e_i=\frac{(h_{n,0}\mathbf{W}_n^Q)(h_{n,i}\mathbf{W}_n^K)^T}{\sqrt{d}}\\\alpha_i=\text{softmax}(e_i)=\frac{\exp(e_i)}{\sum_{j=1}^N\exp(e_j)}\\h_n^G=\sum_{i=1}^N\alpha_ih_{n,i}\)
我们通过一个简单的前馈门控网络FFN来集成局部图和全局图上下文,从而推导出新闻图上下文cn
\(c_n=\mathrm{FFN}_g\left([h_n^L;h_n^G]\right)\)
用户图编码通道
用户图构造
我们用图形结构建模用户历史,以编码多层次的用户兴趣。我们构建了一个包含新闻节点和主题节点的用户图Gu:
(1)对于用户所点击的新闻序列,我们将其作为一组新闻级用户兴趣表示的新闻节点。
(2)对于被点击的新闻nj,它与一个特定的新闻主题t(i)有关。我们将被点击的新闻主题视为主题级用户兴趣表示的主题节点。为了捕捉新闻和主题之间的交互作用,我们引入了三种类型的边:
新闻-新闻边:具有相同主题类别(如体育)的新闻节点是完全连接的。这样,我们就可以通过新闻层面的交互来捕捉点击新闻之间的关联性。
新闻-主题边:我们通过将新闻节点连接到与其相关的主题节点上,来建模被点击的新闻和主题之间的交互。
主题-主题边:主题节点已完全连接。通过这种方式,我们可以通过主题级的交互来捕获用户的总体兴趣。
用户图上下文提取
给定一个用户交互的新闻离散,我们使用语义新闻编码器来学习历史新闻的嵌入\(h_u^n\),如果新闻有t个主题的话,我们将这些主题节点也变为可学习的嵌入\(h_u^t\),用户节点的嵌入为:\(h_u=[h_u^n,h_u^t]\)
然后以层次的形式来提取图的上下文,首先利用注意力模块来学习主题的表示,使用新闻图上下文当做query,主题t(i)的新闻嵌入当做键值对
\(\tilde{h}_{t(i)}=\mathrm{Attn}\big(\mathrm{Q}{=}c_n,\mathrm{K}{=}\{h_{u,j}^n\},\mathrm{V}{=}\{h_{u,j}^n\}\big)\)
然后采用另一个注意力模块来提取用户图的上下文,这里的注意力模块使用新闻图的上下文当做query,可学习的主题表示作为键值对
\(c_u=\text{Attn}\big(\text{Q=}c_n,\text{K=}\{\tilde{h}_{t(i)}\},\text{V=}\{\tilde{h}_{t(i)}\}\big)\)
双图交互
在新闻图Gn中,节点嵌入包含了增强的候选新闻语义的信息。在用户图Gu中,节点嵌入包含用户历史信息。我们通过使用堆叠的图注意层聚合相邻节点信息来学习信息性新闻和用户图嵌入。值得注意的是,我们的对偶图交互模型旨在促进新闻图和用户图之间的有效特征交互。通过有效的对偶图特征交互,可以实现准确的新闻-用户表示匹配。
这里图的更新是通过上一层的表示以及另外一个图的上下文表示来进行更新的。以新闻节点嵌入更新为例:
\(\hat{h}_{n,i}=\hat{\mathbf{W}}_n^lh_{n,i}^{(l)}+\hat{\mathbf{b}}_n^l\)
为了学习与用户图交互的新闻节点嵌入,我们将用户图上下文\(c_u^{(l)}\)纳入到新闻图的注意力计算中。对于新闻节点i和节点j,我们将用户图上下文\(c_u^{(l)}\)纳入到计算注意键向量\(K_{i,j}\)中。经过计算得到图注意力系数。
\(K_{i,j}=\mathrm{FFN}_n^{(l)}\Big(\Big[c_u^{(l)};h_{n,i}^{(l)};h_{n,j}^{(l)}\Big]\Big)\\\alpha_{i,j}=\frac{\exp\left(\text{LeakyReLU}\left(\mathbf{a}_n^TK_{i,j}\right)\right)}{\sum_{k\in\mathcal{N}_i^n}\exp\left(\text{LeakyReLU}\left(\mathbf{a}_n^TK_{i,k}\right)\right)}\)
最后,我们用注意系数αi,j聚合相邻节点的嵌入,然后是ReLU激活。残余连接应用于缓解深度图层中的梯度消失:
\(h_{n,i}^{(l+1)}=\text{ReLU}\bigg(\sum_{j\in\mathcal{N}_i^n}\alpha_{i,j}\hat{h}_{n,j}\bigg)+h_{n,i}^{(l)}\)
新闻和用户图上下文\(c_n^{(l)}\)和\(c_u^{(l)}\)从l层图节点嵌入中提取。最后总的嵌入节点的更新方式如下,分为新闻节点和用户节点:
\(h_{n,i}^{(l+1)}=\Phi_n^{(l)}\Big(c_u^{(l)},h_{n,i}^{(l)},\left\{h_{n,j}^{(l)}\right\}_{j\in\mathcal{N}_i^n}\Big)\)
\(h_{u,i}^{(l+1)}=\Phi_u^{(l)}\Big(c_n^{(l)},h_{u,i}^{(l)},\Big\{h_{u,j}^{(l)}\Big\}_{j\in\mathcal{N}_i^u}\Big)\)
双图交互可被视为一个迭代过程,它执行
(1)用户图上下文感知关注以更新新闻节点嵌入
(2)新闻图上下文感知关注以更新用户节点嵌入。我们用 L 层堆叠来模拟双重交互。新闻和用户图上下文的最终层\(c_n^L\)和 \(c_u^L\)被用作新闻和用户图表示 rn 和 ru,它们通过深度特征交互来完善新闻和用户图信息。
用户-物品交互图的算法如下:
点击预测和模型训练
通过用户和新闻的表示,我们的目的是预测一个匹配的分数\(\hat{s}_{n,u}=r_n^Tr_u.\)
最后这里采用传统的NCE损失函数
\(\mathcal{L}=-\sum_{i=1}^{|\mathcal{D}|}log\frac{\exp(\hat{s}_i^+)}{\exp(\hat{s}_i^+)+\sum_{j=1}^S\exp(\hat{s}_{i,j}^-)}\)
总结
最后整理一下,也是按照示意图那样依次总结一下
首先是新闻图的一个构建,先通过多头自注意力网络(MSA)来获取新闻的表示,然后根据新闻相似性来构建图结构,选相似度在前M个节点的进行构建,然后以原始节点的K跳内的新构建的节点为中心,再次进行构建。之后我们再使用MSA来获取图上所有节点的表示。获取了之后,我们就根据这些来获取整个图的表示,在文中称为“上下文”。
然后是用户图的一个构建,将边分为三种类型,新闻-新闻,新闻-主题和主题-主题,连接方式也比较巧妙,详细见文章。然后每个节点的嵌入是由新闻嵌入和主题嵌入组合而成,之后继续采用注意网络,先提取主题的表示,之后根据主题的表示获取用户图的表示
最后就是进行双图的交互,图的卷积的权重利用注意力网络来计算,并且采用残差连接的方式。也就是更新的时候会同时用到上一层的另外图的上下文,该节点表示以及邻居节点的表示。