基于飞桨图学习框架实现的城市地点动态关系挖掘

图片

李双利

飞桨开发者技术专家(PPDE),百度研究院商业智能实验室研究实习生,中国科学技术大学在读博士生。

主要进行时空数据挖掘和图深度学习的相关研究工作。曾获2021年百度研究院年度优秀实习生,有多篇基于飞桨完成的论文,发表于KDD、AAAI等计算机顶级会议。

图片

周景博

飞桨开发者高级技术专家(高级PPDE),现任百度研究院商业智能实验室资深研究员。主要从事数据挖掘和机器学习相关的研究和应用工作,包括时空大数据、深度几何学习、知识图谱和AI辅助药物设计等,PaddleSpatial技术负责人,基于飞桨完成论文多篇,发表于KDD、AAAI、TKDE等计算机顶级会议和期刊上。

背景&概述

研究城市区域的多种动态地点关系具有重要意义。传统的关系预测研究工作大都假设城市中的区域地点关系是静态的,然而在城市区域中用户的行为活动往往是动态变化的,例如人们习惯在午饭时间在餐馆之间作出选择,在晚上则会在酒吧等休息娱乐场所之间进行选择,因此区域地点之间存在动态变化的关联性,不同时间(例如早上和晚上)的城市区域地点关系可能会不同。研究细粒度的城市区域动态关系对于商业广告、城市资源规划和基于知识增强的出行地点推荐等应用都有重要价值。然而如何从有限的城市关系数据中挖掘预测出完整的动态地点关系存在一定的挑战性。一方面,区域地点之间存在时空关联性,基于深度学习框架进行捕捉城市空间中的动态性和多种关系复杂性是十分有必要的。此外,由于在真实场景下观测到的城市关系数据是极其少量的,如何基于稀疏关系进行有效学习是另一个重要的挑战。为了应对这些挑战,我们基于飞桨的图学习框架实现了一种新型的深度学习框架来研究城市中区域地点的动态关系挖掘。

图片图1 城市区域地点的动态关系发现示例

在本文中,我们提出了一个空间演化图神经网络框架对城市区域地点的动态关系图进行建模学习。具体来说,从空间关系图的消息传递机制和自监督训练机制两个角度出发,通过PGL (Paddle Graph Learning) 图学习框架提供的 SEND-RECV 模式可以高效便捷地对图结构信息进行学习,同时飞桨框架提供了丰富的深度学习训练优化接口来实现城市区域的自监督学习,从而缓解关系稀疏性的问题。最后通过在四个城市数据集上的充分实验,验证了飞桨框架实现的动态关系挖掘模型的有效性。

方法框架

如图2所示,基于多个时间段下的区域地点动态关系图  到  ,首先对图数据进行处理得到PGL定义的HeterGraph形式,通过基于PGL图消息传递机制的网络模块有效学习表征,将输出的动态表征输入到(b)空间演化自监督学习模块(简称SE-SSL),通过高效自监督学习任务更新(a)表征学习模块提升模型的表达能力,最后进行关系图学习的微调,针对多时间感知的关系预测任务进行第二阶段模型训练,从而对城市区域动态关系实现精准预测。图片图2 空间演化图神经网络框架

动态图首先经过距离编码模块进行空间距离的表征学习。考虑到两个地点的相对位置关系是一个数值,模型难以充分捕捉地理空间信息,因此我们提出对距离进行离散化编码,即把距离划分到不同的区间然后进行距离表征向量。得到所有空间距离表征之后,我们提出了时间内部时间之间两个阶段的消息传递过程来实现对关系的动态依赖和空间信息捕捉。

阶段1——时间内部的异构空间关系图学习

针对每个时间内部的多关系图,在该阶段首先进行二阶邻居的高效挖掘,然后实现基于二阶空间信息和关系依赖进行学习的图神经网络聚合框架。具体而言,如下图所示实现代码,我们在聚合阶段同时考虑一个地点周边的一阶和二阶邻居信息,根据三个节点之间  →   →  的二阶关系依赖可以确定  →   的二阶关系模式。针对每一种模式,我们通过飞桨丰富的图接口定义了二阶邻居集合,并按照所示代码进行复杂关系和空间信息的聚合,通过空间关系门控机制下的聚合函数来融合二阶邻域范围内的丰富信息。最后,在对每一种关系模式都进行了聚合操作之后,我们进一步进行二级关系聚合,来综合所有关系模式,进而提升模型的表达能力,得到经过时间内部图学习的区域地点表征。图片
代码1 基于PGL的时间内部异构空间关系图学习

阶段2——时间之间的空间演化上下文图学习

城市中区域地点在空间和时间上都存在复杂关联性,在第二阶段我们考虑了时间之间的信息交互。首先我们对地点表征在时间维度上进行更新,通过平均融合相邻时间段的表征,更新得到了节点表征。接着基于PGL高效的图学习机制,我们实现了空间演化传播层来考虑上下文信息融合。如下图代码所示,在图的消息发送阶段,我们首先进行了跨时间的邻居节点采样。如图3所示,针对每一条传递的消息,我们在多个时间段上考虑其周边的邻居,并借助于PGL提供的采样接口便捷地进行随机采样。在采样得到集合之后我们实现了空间上下文向量的计算,考虑周围邻居的空间分布可以使得模型感知复杂的空间演化信息。最后,在该阶段的传播过程中融合上下文信息并通过PGL的发送机制实现最终节点表征的更新。

图片图3 基于时间的节点采样策略和空间上下文学习图例

图片代码2 基于PGL的空间演化上下文图学习

空间演化自监督训练

在模型训练阶段,为了缓解城市区域动态关系的稀疏性问题,我们基于飞桨框架设计了全局和局部两个角度的自监督学习任务来进行预训练,从而实现从少量的数据关系融合演化关系模式和动态空间信息依赖。如下图代码所示,一方面,我们从全局学习的角度提出了全局空间互信息最大化自监督任务,并基于PaddlePaddle的双线性判别函数和交叉熵计算高效实现了全局学习损失的计算,通过该任务的学习可以实现基于网格化空间动态性来捕捉全局演化模式。另一方面,从局部的角度来看多时间下的区域地点关系依然是动态演化的。因此我们引入了关系级别的局部学习任务,通过飞桨的判别函数接口可以等价实现判断在相邻时间段内关系是否发生演化,从而引入了关系演化信息。通过基于飞桨的联合学习局部和全局任务,可以高效对动态关系图进行自监督学习。

最后,对模型进行预训练之后,模型框架可以很好地融合动态空间演化特性,最后进行多时间段的动态关系预测输出。给定一对节点,通过飞桨实现时间感知的双线性打分函数来对每个时间段的关系可能性进行计算,从而完成城市地点的动态关系挖掘。

图片代码3 基于飞桨实现的空间演化自监督学习

实验

在实验阶段,我们在四个城市的关系数据集上进行了效果验证。表1的实验结果表明我们基于飞桨实现的空间演化图神经网络(SEENet)在关系挖掘任务上取得了显著的提升,通过考虑复杂的空间性和动态演化特性,模型优于最新的图学习模型和关系预测方法。
图片表1 城市区域地点关系挖掘效果对比

此外,我们还进行了模型的消融实验来验证设计模块的有效性。如表2所示,通过移除时间内部和时间之间的图学习部分,预测效果出现了较为明显的下降。此外,局部和全局的预测任务对模型学习能力也得到了显著增强。总体而言,我们基于飞桨和PGL实现的图学习框架可以充分捕捉空间演化特性,进而提升模型的预测能力。

图片表2 模型消融实验

总结

本文提出了一个新的图神经网络框架来解决城市中区域关系的动态挖掘问题,基于飞桨设计的图学习框架可以融合二阶异构空间关系和动态上下文信息,并通过空间演化自监督学习来进一步提升模型的学习能力。在多个城市关系数据集上的实验结果证明了提出方法的有效性和合理性。相关代码已经开源在PaddleSpatial时空计算平台上。PaddleSpatial是基于百度飞桨深度学习框架开发的时空大数据计算工具和平台,融合了百度领先的区域分割、时空迁移学习、时间序列预测等时空能力,可支持多种时空计算场景的应用。

相关地址

  • 论文:
    https://arxiv.org/abs/2306.08921

  • 代码:

    https://github.com/PaddlePaddle/PaddleSpatial/tree/main/research/SEENet

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

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

相关文章

error_Network Error

此页面为订单列表,是混合开发(页面嵌入在客户端中) 此页面为订单列表,此需求在开发时后端先将代码发布在测试环境,我在本地调试时调用的后端接口进行联调没有任何问题。 此后我将代码发布在测试环境,在app中打开页面&#xff0c…

smardaten实战丨谁说无代码不能开发出漂亮的门户首页?

一、需求背景 门户首页对于一个公司或组织来说是一个极其重要的网站页面,它可以作为访问者了解和获取相关信息的入口,同时也是展示品牌形象和吸引目标受众的重要工具。 开发一个门户首页需要开发团队在向访问者展示关于公司或组织基本信息的基础上&…

Qt自定义对话框

介绍 自定义框主要通过对现有对话框QDialog类的派生,根据需求编写成员函数、重载信号函数、槽函数,进而实现在主QWidget中点击某个按钮后,一个对话框的弹出 流程 简化创建派生类 最后点击完成即可。 自定义ui界面,编写成员函数…

Netty:用ByteBufUtil的函数将字节数组、或者ByteBuf的内容转换为十六进制表示的字符串

用ByteBufUtil的hexDump(byte[] array)函数将字节数组的内容转换为十六进制表示的字符串 package com.thb;import io.netty.buffer.ByteBufUtil;public class Demo {public static void main(String[] args) {byte[] b new byte[] {0x68, 0x16, 0x03, 0x04, (byte)0xae};Stri…

ASR 语音识别接口封装和分析

这个文档主要是介绍一下我自己封装了 6 家厂商的短语音识别和实时流语音识别接口的一个包,以及对这些接口的一个对比。分别是,阿里,快商通,百度,腾讯,科大,字节。 zxmfke/asrfactory (github.c…

前后端分离------后端创建笔记(07)表单验证

1、我输入数据,然后关闭,重新打开会发现残存的数据仍然保留着 2、点了这个x号,数据就全部被清理了 3、点这三个地方,数据全部都清理掉 4、这里先写一个方法 4.1 定义一个方法 4.2 这里表单的数据在哪里,就是这个 4.3 …

Qt扫盲-QWidget理论使用总结

QWidget理论使用总结 一、概述二、顶层 控件 和子 控件三、复合控件四、自定义控件和绘制五、大小提示和大小策略六、事件七、一组函数和属性八、QWidget样式表九、透明度和双缓冲十、创建半透明窗口 一、概述 widget 是用户界面的最小单位:它从window系统接收鼠标…

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材 下载地址:https://download.csdn.net/download/Highning0007/88204017

Jmeter-压测时接口按照顺序执行-临界部分控制器

文章目录 临界部分控制器存在问题 临界部分控制器 在进行压力测试时,需要按照顺序进行压测,比如按照接口1、接口2、接口3、接口4 进行执行 查询结果是很混乱的,如果请求次数少,可能会按照顺序执行,但是随着次数增加&a…

《零基础实践深度学习》(第2版)学习笔记,(二)机器学习和深度学习综述

文章目录 1. 人工智能、机器学习、深度学习的关系2. 机器学习2.1 实现原理2.2 如何实施 3. 深度学习神经网络核心概念 1. 人工智能、机器学习、深度学习的关系 **人工智能(Artificial Intelligence,AI)**是研发用于模拟、延伸和扩展人的智能…

helm安装harbor + nerdctl 制作push 镜像

参考 文章:Helm部署Harbor_helm harbor_风向决定发型丶的博客-CSDN博客 安装好后使用 nerd containerd对接harbor_containerd 容器 insecure-registries 配置_柠是柠檬的檬的博客-CSDN博客 推送镜像 Containerd 对接私有镜像仓库 Harbor - 知乎 接下来我们来…

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

8月16日,盛夏的北京将迎来第九届WAVE SUMMIT深度学习开发者大会。在峰会主论坛正式开启前,让我们先用一份精美的元气早餐,和一场“Arm虚拟硬件交流会”,唤醒各位开发小伙伴的开发魂! 8月16日,WAVE SUMMIT大…

【注解使用】使用@Autowired后提示:Field injection is not recommended(Spring团队不推荐使用Field注入)

问题发生场景: 在使用 IDEA 开发 SpringBoot 项目时,在 Controller 类中使用注解 Autowired 注入一个依赖出现了警告提示,查看其他使用该注解的地方同样出现了警告提示。这是怎么回事?由于先去使用了SpringBoot并没有对Spring进行…

三、性能测试场景设计

性能测试场景设计 一、引言:如果公司要求你去做性能测试,遇到这些场景,我们要如何设计?二、6种常见设计方法1、普通性能场景设计2、负载测试性能场景3、压力测试场景4、面向目标性能场景 一、引言:如果公司要求你去做性…

W6100-EVB-PICO 做UDP Server进行数据回环测试(七)

前言 前面我们用W6100-EVB-PICO 开发板在TCP Client和TCP Server模式下,分别进行数据回环测试,本章我们将用开发板在UDP Server模式下进行数据回环测试。 UDP是什么?什么是UDP Server?能干什么? UDP (User Dataqram P…

海量数据迁移,亚马逊云科技云数据库服务为大库治理提供新思路

1.背景 目前,文档型数据库由于灵活的schema和接近关系型数据库的访问特点,被广泛应用,尤其是游戏、互联网金融等行业的客户使用MongoDB构建了大量应用程序,比如游戏客户用来处理玩家的属性信息;又如股票APP用来存储与时…

Jmeter常用功能-参数化介绍

JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现。 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。 这个时…

RabbitMQ简单使用

RabbitMq是一个消息中间件:它接收消息、转发消息。你可以把它理解为一个邮局:当你向邮箱里寄出一封信后,邮递员们就能最终将信送到收信人手中。 RabbitMq、消息相关术语如下: 生产者:生产者只发送消息,发…

React(5)

1.受控组件案例 1.1之前的影院案例改写 import React, { Component } from react import axios from axios import BetterScroll from better-scroll import ./css/02_tab.cssexport default class Cinema extends Component {constructor() {super();this.state {cinemaLis…

Jmeter进阶使用:BeanShell实现接口前置和后置操作

一、背景 我们使用Jmeter做压力测试或者接口测试时,除了最简单的直接对接口发起请求,很多时候需要对接口进行一些前置操作:比如提前生成测试数据,以及一些后置操作:比如提取接口响应内容中的某个字段的值。举个最常用…