GERL论文阅读笔记

Graph Enhanced Representation Learning for News Recommendation论文阅读笔记

这篇文章是2020年的,也算是比较老的了,但是比较经典,这里来读一下

Abstract

存在的问题:

​ 现有的新闻推荐方法通过从新闻内容和用户与新闻的直接交互(如点击)中建立精确的新闻表征来实现个性化,但忽略了用户与新闻之间的高阶相关性。

解决方法:

​ 我们提出了一种新闻推荐方法,通过在图环境中对用户和新闻的相关性建模,加强用户和新闻的表征学习。

​ 在我们的方法中,用户和新闻都被视为根据历史用户点击行为构建的双向图中的节点。在新闻表征方面,我们首先利用转换器架构来构建新闻语义表征。然后,我们通过图注意网络将其与图中相邻新闻的信息结合起来。在用户表征方面,我们不仅根据用户的历史点击新闻来表征用户,而且还将其邻居用户的表征信息纳入图中。

Introduction

​ 我们的工作源于几个观察结果。首先,从用户与新闻的互动中可以建立一个双方图。在这个图中,用户和新闻都可以看作是节点,它们之间的互动可以看作是边。其中,一些新闻是由同一个用户浏览的,因此被定义为邻居新闻。同样,特定用户可能会分享共同点击的新闻,也被称为邻居用户。第三,图谱中的相邻用户可能有一些类似的新闻偏好。纳入这些相似性可进一步丰富目标用户表征。

​ 在本文中,我们建议结合用户和新闻的图相关性,以增强他们对新闻推荐的表示学习。首先,我们利用Transformer从文本内容中构建新闻语义表示。通过这种方式,多头自我注意网络对短距离和长距离的标题中的单词依赖性进行了编码。我们还添加了新闻的主题嵌入,因为它们可能包含重要的信息。然后通过图注意网络聚合邻居新闻,进一步增强了新闻表示能力。为了丰富邻居的新闻表示,我们同时利用了它们的语义表示和ID嵌入。对于用户表示,除了从他们的ID嵌入和历史上点击的新闻中仔细地构建用户表示外,我们的方法还利用了图形信息。我们使用注意机制来聚合邻居用户的ID嵌入。最后,通过选取用户和新闻表示之间的点积来进行推荐。

Method

​ 在本节中,我们将介绍图增强表示学习(GERL)方法,如图 2 所示,该方法由一跳交互学习模块和二跳图学习模块组成。一跳交互学习模块从历史点击新闻中代表目标用户,并根据文本内容代表候选新闻。两跳图学习模块利用图注意力网络学习新闻和用户的邻接嵌入。

pkWcDtf.png

用于上下文理解的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 和文本内容都被用来丰富邻居嵌入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/740412.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根轨迹不受增益的影响

%fileName:figure10_57.m s=tf(s); K=[25 125 250 500]; sysD=500*(s+4); rlocus(sysD); grid on sysGq=0.4*(s+0.25)/((s-1.6+2.8*j)*(s-1.6-2.8*j)*(s+3.4)*(s+20)); rlocus(sysGq); grid on %sysGz=feedback(series(sysD,sysGq),1); %应该是开环传递函数的根轨迹,这个闭环的…

Spring Boot3整合Mybatis Plus,数据库为MySQL

项目结构如下:注意不需要任何XML文件 1.导入依赖 除了Spring Boot创建时自带的依赖,还需要加入: <!-- Mybatis Plus依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId>…

将.nuget文件夹从C盘移到其它盘,再也不用担心的C盘爆红了

将.nuget文件夹从C盘移到其它盘,再也不用担心的C盘爆红了 命令 查看缓存文件夹的具体路径 dotnet nuget locals all --list第一步 在文件资源管理器输入%AppData%\NuGet\NuGet.Config ,默认存放NuGet.Config的路径,具体情况可能根据你的电脑来操作。 增加配置<config>…

网络测速

网络测速🥏 https://speed.cloudflare.com/

新知识get,vue3是如何实现在style中使用响应式变量?

这篇文章我们来讲讲vue是如何实现在style中使用script模块中的响应式变量前言 vue2的时候想必大家有遇到需要在style模块中访问script模块中的响应式变量,为此我们不得不使用css变量去实现。现在vue3已经内置了这个功能啦,可以在style中使用v-bind指令绑定script模块中的响应…

Address Sanitizer

Address Sanitizer Introduction ​ Address Sanitizer是一款内存检测器,它可以检测在堆栈,全局变量等地方的溢出。后来被整合到了GCC等编译器中,Address Sanitizer由两部分组成:一个Instrumentation模块和一个运行时库。Instrumentation模块修改代码来检查每个内存访问的影…

暂停windows更新方法

暂停windows更新方法暂停windows更新方法 打开注册表进入 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings右键新建DWORD的32位,输入名称:FlightSettingsMaxPauseDays选择十进制,输入3650天网站:http://shibowl.topgithub:https://github.com/ha…

航空航天单位保密网文件导出管理难点在哪里?如何解决?

航空航天单位的重要性不言而喻,它们在国家安全、科技进步、经济发展以及国际合作等多个领域都扮演着至关重要的角色。为了保护工作内容中的重要数据,遵守保密规定,对涉密人员、保密要害部门单位、涉密载体、涉密信息传输和涉密活动进行严格管理,采用物理隔离的方式将网路隔…

【转载】App Inventor 开发BLE应用

1. 文章1:搭建环境的介绍: 【深海王国】小学生都能做的APP?AppInventor、BLE蓝牙、Arduino联合开发你的第一个手机远程控制程序(1) 链接:https://blog.csdn.net/D13162580021/article/details/139026624?spm=1001.2014.3001.55022. 文章2:BLE基本知识的介绍: 【深海王…

从 Helm 到 Operator:Kubernetes应用管理的进化

🧰Helm 的作用 在开始前需要先对 kubernetes Operator 有个简单的认识。 以为我们在编写部署一些简单 Deployment 的时候只需要自己编写一个 yaml 文件然后 kubectl apply 即可。apiVersion: apps/v1 kind: Deployment metadata: labels: app: k8s-combat name: k8s-…

RAG工程实践拦路虎之一:PDF格式解析杂谈

背景 PDF(Portable Document Format)是一种广泛用于文档交换的文件格式,由Adobe Systems开发。它具有跨平台性、固定布局和易于打印等特点,因此在商业、学术和个人领域广泛应用。然而,PDF文件的解析一直是一个具有挑战性的问题,因为其内部结构的复杂性和多样性,使得提取…

PHP转Go系列 | ThinkPHP与Gin框架之API接口签名设计实践

数据安全一直是个热门的话题,API 接口在数据的传输上扮演着至关重要的角色。大家好,我是码农先森。 回想起以前用模版渲染数据的岁月,那时都没有 API 接口开发的概念。PHP 服务端和前端 HTML、CSS、JS 代码混合式开发,也不分前端、后端程序员,大家都是全干工程师。随着前后…