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

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.mzph.cn/news/607633.shtml

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

相关文章

TikTok电商年度洞察:出海到底“卖什么”?各国多类目爆款洞察,迅速掌握市场领先优势

很多卖家在尝试出海时,常面临两大核心痛点:一是“卖什么”,即选择何种商品进行销售;二是“怎么卖”,即如何通过有效的营销策略将商品销售出去。TikTok主打的内容电商模式,通过短视频和直播等形式&#xff0…

StampedLock锁探究

该锁提供了三种模式的读写控制,当调用获取锁的系列函数时,会返回一个long型的变量,我们称之为戳记(stamp),这个戳记代表了锁的状态。 其中try系列获取锁的函数,当获取锁失败后会返回为0的stamp 值。 当调用释放锁和转换锁的方法…

汽车中的ECU、VCU、MCU、HCU

一、ECU是汽车电脑,刷汽车电脑可以提高动力,也可以减低动力,看需求。 简单原理如下。 1.汽车发动机运转由汽车电脑(即ECU)控制。 2.ECU控制发动机的进气量,喷油量,点火时间等,从而…

成功解决使用git clone下载失败的问题: fatal: 过早的文件结束符(EOF) fatal: index-pack 失败

一.使用 http 可能出现的问题和解决 1.问题描述 ~$ git clone https://github.com/oKermorgant/ecn_baxter_vs.git 正克隆到 ecn_baxter_vs... remote: Enumerating objects: 13, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (…

强直性脊柱炎=“不死的癌症”?这些常识你不可不知→

对强直性脊柱炎这个疾病,大家最常听说的是:强直性脊柱炎症状重、治疗难,会逐渐引发关节畸形、功能丧失,甚至残疾,被称为「不死的癌症」。 然而,近来越来越多患有强直性脊柱炎的明星活跃在荧幕上&#xff0c…

材料表征的微观探测器——台阶高度测量技术概述

一、引言 表面特征是材料、化学等领域的不可或缺的主要研究内容,合理地评价表面形貌、表面特征等,对于相关材料的评定、性能的分析和加工条件的改善都具有重要的意义。 表面台阶高度测量在材料表面研究中有十分重要的作用。一方面,表面测量…

x-cmd pkg | busybox - 嵌入式 Linux 的瑞士军刀

目录 简介首次用户功能特点竞品和相关作品 进一步阅读 简介 busybox 是一个开源的轻量级工具集合,集成了一批最常用 Unix 工具命令,只需要几 MB 大小就能覆盖绝大多数用户在 Linux 的使用,能在多款 POSIX 环境的操作系统(如 Linu…

避免重复扣款:分布式支付系统的幂等性原理与实践

这是《百图解码支付系统设计与实现》专栏系列文章中的第(6)篇。 本文主要讲清楚什么是幂等性原理,在支付系统中的重要应用,业务幂等、全部幂等这些不同的幂等方案选型带来的收益和复杂度权衡,幂等击穿场景及可能的严重…

k8s源码阅读环境配置

源码阅读环境配置 k8s代码的阅读可以让我们更加深刻的理解k8s各组件的工作原理,同时提升我们Go编程能力。 IDE使用Goland,代码阅读环境需要进行如下配置: 从github上下载代码:https://github.com/kubernetes/kubernetes在GOPATH目…

CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】

文章目录 沙箱逃脱prtcl题HITCON CTF 2017 Quals Impeccable Artifactflag文件对应prctl函数检查源码思路exp 沙箱逃脱prtcl题 HITCON CTF 2017 Quals Impeccable Artifact flag文件 此时的flag文件在本文件夹建一个即可 此时的我设置的flag为 对应prctl函数 第一条是禁止…

JavaScript解构赋值完全手册

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ 目录 ✨ 前言 第一节:解构赋值的基本用法 第二节:对象解构赋值 第三节:数组解构赋值 第四节:参数…

Fluids —— MicroSolvers DOP

目录 Gas SubStep —— 重复执行对应的子步 Switch Solver —— 切换解算器 Gas Attribute Swap —— 交换、复制或移动几何体属性 Gas Intermittent Solve —— 固定时间间隔计算子解算器 Gas External Forces —— 计算外部力并更新速度或速度场 Gas Particle Separate…

【linux】tcpdump 使用

tcpdump 是一个强大的网络分析工具,可以在 UNIX 和类 UNIX 系统上使用,用于捕获和分析网络流量。它允许用户截取和显示发送或接收过网络的 TCP/IP 和其他数据包。 一、安装 tcpdump 通常是默认安装在大多数 Linux 发行版中的。如果未安装,可…

竞赛保研 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

prometheus 黑盒监控

黑盒监控 “白盒监控” 是需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源以及状态的数据采集工作 ”黑盒监控“ 是不需要把Exporter程序部署到被监控的目标主机上,比如全球的网络质量的稳定性,通常用ping操作&am…

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

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

数据结构——队列(Queue)

目录 1.队列的介绍 2.队列工程 2.1 队列的定义 2.1.1 数组实现队列 2.1.2 单链表实现队列 2.2 队列的函数接口 2.2.1 队列的初始化 2.2.2 队列的数据插入(入队) 2.2.3 队列的数据删除(出队) 2.2.4 取队头数据 2.2.5 取队…

python匹配问题

脏数据匹配 一般数据建模步骤中,数据清洗耗时占比80%以上,因为现实中接触到的数据相当脏,无法直接简单的用pandas的merge函数解决。下面以QS大学排名的匹配为例,简单介绍脏数据匹配中会遇到的问题和主要步骤。 1 问题描述 给定…

Vue.js设计与实现阅读2

Vue.js设计与实现阅读-2 1、前言2、框架设计的核心要素2、1 提升用户体验2、2 控制代码体积2、3 Tree-Shaking2、4 特性开关2、5 错误处理 1、前言 上一篇我们了解到了 命令式和声明式的区别,前者关注过程,后者关注结果了解了虚拟dom存在的意义&#x…

Java后端开发——SSM整合实验

文章目录 Java后端开发——SSM整合实验一、常用方式整合SSM框架二、纯注解方式整合SSM框架 Java后端开发——SSM整合实验 一、常用方式整合SSM框架 1.搭建数据库环境:MySQL数据库中创建一个名称为ssm的数据库,在该数据库中创建一个名称为tb_book的表 …