深度学习:图神经网络——在推荐系统中的应用

PinSage是工业界应用图神经网络完成推荐任务的第一个成功案例,其从用户数据中构造图(graph)的方法和应对大规模图而采取的实现技巧都值得我们学习。PinSage被应用在图片推荐类Pinterest上。在Pinterest中,每个用户可以创建并命名图板(board),并将感兴趣的图片(pins)添加进图板。推荐系统的任务是为每个图片生成高质量的表示向量,并据此为每位用户推荐其可能感兴趣的图片。

1.PinSage的模型设计和实现细节

PinSage的输入数据是一张根据用户行为和各类特征生成的大规模网络(graph)。网络的构造主要包含两个步骤:第一步是网络结构方面,如何定义边;第二步是节点特征方面,各种复杂的特征如何表示。

  • 对于第一步,Pinterest的应用场景很自然地对应一个二部图,一部分节点是图片(pins),另一部分节点是用户定义的各种图板(boards),二部图的边对应着图片被添加进图板。通过这种方式,全体用户的行为被一个巨大的二部图表示出来。
  • 对于第二步,每个图片对应多种特征,包括图片本身的视觉特征、与图片内容相关的文本标注信息、图片的流行度、图板的文本标注信息等。PinSage利用深度神经网络、预训练的词向量等技术将这些特征整合成节点表示向量。值得注意的是,上述的特征提取器是所有图片共享的,因此对于那些没有出现在训练过程中的“新图片”来说,我们也可以利用训练好的特征提取模型来计算该图片的向量表示。换句话说,PinSage不需要在这个巨大的二部图的全图上进行训练,只需要在一个规模较小的子图上进行训练即可。

PinSage基本遵循GraphSAGE的框架,但在以下三个地方有独特的设计:

  1. 每个节点领域的定义。由于网络规模巨大,如果按照GraphSAGE那样将每个节点的所有邻居节点特征进行融合,则计算量太大。PinSage通过随机游走的方式从每个节点的K度邻居中抽取出T个重要的节点,其中的“重要性”定义为从目标节点出发的随机游走访问到邻居节点的概率。
  2. aggregate操作的具体实现。具体来说,以加权平均的方式来实现aggregate操作。这里,每个邻居节点的“权重”即为其相对于目标节点的重要性。这一操作为模型效果带来了46%的提升。
  3. 训练过程中负样本的选取。在训练过程中,PinSage优化一个最大间隔函数(max-margin loss),尽可能地使正样本和负样本的差距大于预设的间距。出于效率的考虑,PinSage为每个正样本抽取500个负样本。不过500个负样本对于庞大的图片集(200万的规模)来说太过渺小,抽取出的负样本与正样本有很大概率完全不相关,这使得学习的过程过于简单,模型的训练效果不好。PinSage采用课程学习(Curriculum Learning)的方式进行训练,在每轮训练中选取难以分辨的负样本。这一操作为模型效果带来了12%的提升。

基于图的机器学习任务主要有:点分类、边预测和图分类3大类。记h_i\in \mathbb{R}^{1\times d}为节点 i 最终的融合特征,下面分别是这三类任务具体形式化的例子。

  • 点分类:p(v_i)=\mbox{Softmax}(h_i)
  • 边预测:p(A_{ij})=\sigma(h_ih_j^T)
  • 图分类:p(G)=\mbox{Softmax}(\sum_{i\in V}h_i)

除了PinSage模型,图神经网络目前在工业界的应用还不多。不过,学术界对图神经网络在多个领域中的应用已经做出了一些探索,表3-2列出了一些代表性的应用论文,供感兴趣的读者继续探索。

另一个与图神经网络技术十分相关的话题是网络表示学习(Network Representation Learning),也就是为图(graph)中每个节点生成一个固定维数的向量表示,使得节点在图上的临近关系可以通过向量距离表现出来。感兴趣的读者可以进一步思考网络表示学习技术和图神经网络的关系。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【angular教程240105】02绑定属性 绑定数据、条件判断、加载图片、【ngClass】 【ngStyle】、Angular管道

【angular】02绑定属性 绑定数据、条件判断、加载图片、【ngClass】 【ngStyle】、Angular管道 0 一些基础的概念 标记为可注入的服务 在Angular中,一个服务是一个通常提供特定功能的类,比如获取数据、日志记录或者业务逻辑等。标记为可注入的服务意味着…

推荐 5 款强大好用的日志管理工具

日志管理是现代 IT 环境中不可或缺的一部分,它有助于监视和维护应用程序、系统和网络的正常运行,帮助诊断问题,追踪事件以及确保安全性。 在日志管理领域,有不少功能强大的工具,本文将为你介绍这些工具。 1、Graylog …

Vue2:通过ref获取DOM元素

一、场景描述 我们在页面的开发过程中&#xff0c;经常需要操作dom元素&#xff0c;来实现我们需要的效果。 以往js中&#xff0c;我们是通过给dom添加id&#xff0c;然后&#xff0c;通过js代码document来获取这个dom 简写代码案例&#xff1a; <h2 id"test"&…

Mysql之子查询、连接查询(内外)以及分页查询

目录 一.案例&#xff08;接上篇博客&#xff09; 09&#xff09;查询学过「张三」老师授课的同学的信息 10&#xff09;查询没有学全所有课程的同学的信息 11&#xff09;查询没学过"张三"老师讲授的任一门课程的学生姓名 12&#xff09;查询两门及其以上不及格课程…

【数据结构】栈的基本知识详解

栈的基本概念与基本操作 导言一、栈的基本概念1.1 栈的定义1.2 栈的重要术语1.3 栈的数学性质 二、栈的基本操作结语 导言 大家好&#xff0c;很高兴又和大家见面了&#xff01;&#xff01;&#xff01; 今天开始&#xff0c;咱们将正式进入【数据结构】第三章的内容介绍。在…

第二证券:主力为什么要砸盘?

砸盘就是在股票的某个阶段有许多卖出单&#xff0c;这些许多的卖出单不断的成交使股票价格出现快速下跌。一般是受到主力资金洗盘或者出货所影响形成的。 1、洗盘 个股通过长时间上涨之后&#xff0c;盘中的散户较多&#xff0c;主力为了洗掉盘中的散户&#xff0c;在低位吸筹…

nodejs+vue+ElementUi音乐分享社交网站77l8j

本文介绍的系统主要分为两个部分&#xff1a;一是前台界面&#xff1a;用户通过注册登录可以实现音乐播放、新闻浏览、留言评论等功能&#xff1b;另一个是后台界面&#xff1a;音乐网站管理员对用户信息进行管理&#xff0c;上传更新音乐资源&#xff0c;发布最新音乐资讯等功…

SpringBoot 中 @Transactional 注解的使用

一、基本介绍 事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。本篇只说明声明式注解。 1、在 spring 项目中, Transactional 注解默认会回滚运行时异常及其子类&#xff0c;其它范…

目标检测再升级!YOLOv8模型训练和部署

YOLOv8 是 Ultralytics 开发的 YOLO&#xff08;You Only Look Once&#xff09;物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型&#xff0c;它建立在先前YOLO成功基础上&#xff0c;并引入了新功能和改进&#xff0c;以进一步提升性能和灵活性。它可…

揭秘阿里自研搜索引擎 Havenask 在线检索服务

作者&#xff1a;谷深 Havenask 是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎&#xff0c;深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了 Havenask 的在线服务&#xff0c;它具备高可用、高时效、低成本的优势&#xff0c;…

【软考中级-软件设计师】day4:数据结构-线性表、单链表、栈和队列、串

大纲 线性结构 顺序存储和链式存储区别 单链表的插入和删除 真题 栈和队列 真题 串

微创新与稳定性的权衡

之前做过一个项目&#xff0c;业务最高峰CPU使用率也才50%&#xff0c;是一个IO密集型的应用。里面涉及一些业务编排&#xff0c;所以为了提高CPU使用率&#xff0c;我有两个方案&#xff1a;一个是简单的梳理将任务可并行的采用并行流、额外线程池等方式做并行&#xff1b;另外…

2019年认证杯SPSSPRO杯数学建模A题(第一阶段)好风凭借力,送我上青云全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 纸飞机在飞行状态下的运动模型 A题 好风凭借力&#xff0c;送我上青云 原题再现&#xff1a; 纸飞机有许多种折法。世界上有若干具有一定影响力的纸飞机比赛&#xff0c;通常的参赛规定是使用一张特定规格的纸&#xff0c;例如 A4 大小的纸张…

计操进程同步(信号量pv灵魂三问法狂练版)

文章目录 解题秘诀-灵魂三问法一 同步问题1.1 围棋问题1.2 数据采集问题1.3 三进程文件打印问题1.4 司机售票员问题 二 同步互斥问题2.1 果盘问题 三 同步资源管控问题3.1 兔子问题3.2 数据写入和读取问题3.3 图书馆问题3.4 超市问题3.4.1 解法一3.4.2 解法二 解题秘诀-灵魂三问…

(Matlab)基于CNN-Bi_LSTM的多维时序回归预测(卷积神经网络-双向长短期记忆网络)

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码展示&#xff1a; 四、完整代码数据下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平…

【idea】idea 开发快捷键

在Java开发中&#xff0c;有一些常用的快捷键和工具&#xff0c;可以提高开发效率。以下是一些常见的Java开发常用到的功能和快捷键&#xff1a; IDE快捷键&#xff1a; 代码大小写切换&#xff1a; ctrlshiftu 格式化代码&#xff1a;Ctrl Alt L&#xff0c;会让代码更整…

程序员必知!备忘录模式的实战应用与案例分析

备忘录模式允许在不破坏封装性下捕获并在外部保存对象状态&#xff0c;支持状态恢复&#xff0c;常用于撤销、历史记录等功能。例如在线文档编辑器的撤销操作&#xff0c;编辑器作为原发起人记录状态并提供保存与恢复方法&#xff0c;历史记录或撤销为管理者&#xff0c;保存备…

Nodejs+express后端学习笔记(1)

1 Node.js安装 1、下载安装包&#xff1a;进入官网&#xff08;https://nodejs.org/en&#xff09;&#xff0c;下载左侧的稳定版。 2、选择安装位置&#xff0c;不用勾选自动安装必要工具。 其他都默认Next。 配置环境&#xff0c;具体参考本文章&#xff1a; https://blo…

Linux系统——nmap安装与使用

一、安装nmap 1、安装nmap 【操作命令】 yum install nmap 2、查看nmap版本 【操作命令】 nmap -version 【操作实例】 3、卸载nmap 【操作命令】 yum remove nmap 二、简单使用方法 1、扫描指定ip 【操作命令】 nmap 192.168.1.1 2、扫描指定端口 【操作命令】 …

数据库管理-第130期 JSON二元性(20240109)

数据库管理130期 2024-01-09 第130期 JSON二元性&#xff08;20240109&#xff09;1 简介2 关系型表和JSON存储的优劣3 Oracle JSON关系型二元性视图总结 第130期 JSON二元性&#xff08;20240109&#xff09; 上周&#xff0c;又双叒飞了一趟上海&#xff0c;也是2024年第一飞…