讲座笔记:Representation Learning on Networks

news2024/11/18 6:03:41

1 传统机器学习

 

  • 传统机器学习需要进行很多的特征工程
    • 我们希望模型自动学习特征,而不是用人为特征工程的方式

 1.1 目标

 1.2 难点

  • graph更复杂,CNN和RNN很难直接应用
    • ——>复杂的拓扑结构(不像CNN有网格的概念)
    • ——>没有固定的节点的顺序,一般情况下也没有参照点(这会导致同构图问题)
    • ——>图经常是动态的
    • ——>图经常有多模态的特征

 2 Node embedding

2.1 目标

将graph上的点嵌入至d维向量,使得相似的点有相近的embedding

 

2.2 问题配置

  • 图G
  • 节点集合V
  • 邻接矩阵A(在这里假定是0-1矩阵)
  • 不使用其他的信息(比如点特征)

2.3 定义encoder

将点map到embedding上去

 2.3.1 look-up table

一种简单的encoding方式:一张embedding查询表(V是一个one-hot向量)

 

 

 2.4 定义相似函数

 2.4.1 基于邻接的相似度

Ahmed et al. 2013. Distributed Natural Large Scale Graph Factorization .WWW.

所有点对 的 相似度和邻接性之间的差异

不足之处

  • O(|V|^2)的时间复杂度
    • 每一对点都需要考虑一次
    • 有些算法可以只考虑有连边的点对,此时复杂度可以降至O(|E|)
  • O(|V|d)个参数
    • 每一个学习的向量(每一个点的向量),都是一个d维向量
  • 只考虑直连边

2.4.2  多跳相似度

•Cao et al. 2015. GraRep : Learning Graph Representations with Global Structural Information . CIKM.
•Ou et al. 2016. Asymmetric Transitivity Preserving Graph Embedding .KDD.

k跳邻居,就是邻接矩阵的k次幂

 

 2.4.4 另一种多跳相似度:邻居之间的重合程度

This technique is known as HOPE (Yan et al., 2016).

Asymmetric Transitivity Preserving Graph Embedding

  •  Jaccard similarity
  • Adamic-Adar score

    • 这里N(x)表示x的邻居 

    • 公式表示i,j的共有邻居,每个的邻居数量取log+倒数的和 

2.4.5 Random Walk

• Perozzi et al. 2014. DeepWalk : Online Learning of Social Representations . KDD.
• Grover et al. 2016. node2vec: Scalable Feature Learning for Networks . KDD

 2.4.5.1随机游走的好处

  • expressivity:灵活的随机节点相似度定义,这种方法结合了局部和高阶邻域的信息
  • efficiency:training的时候,不需要考虑所有的点对,只需要考虑在随机游走上同时出现的点对即可

2.4.5.2 随机游走算法

  • 根据某种策略R,从图上的每个点,执行一些随机游走
  • 对图上的每个点u,收集相对应的点集N_R(u)
    • N_R(u)是从u点出来的各条随机游走路径上的点集
    • N_R(u)中可能会有重复的元素 
  • 根据对数概率,优化embedding
    • 目标:最小化损失函数L
      • ——>最大化在N_R(u)中的v与u之间的log(P(v|Z_u))
      • ——>最大化在u随机游走路径上的v与u之间的P(v|Z_u)
      • ——>在u随机游走路径上的v,尽量地和u相似(Z_u^TZ_v)

 2.4.5.3 随机游走算法优化

上述算法有一个问题,就是我计算P(v|Z_u)时,分母还是需要每一对node 都计算一边,那么还是O(|V|^2)的时间复杂度

 解决方法:负采样

  •   分母改为随机采样k个点
    • 每个点负采样概率正比于这个点的度数

2.4.5.4 随机游走策略

  • 最简单的策略:从每个点跑固定长度,没有bias的随机游走(DeepWalk: Online Learning of Social Representations)
  • node2Vec:使用灵活的、有bias的随机游走,在网络的局部和整体视图之间进行权衡。

    • 在有bias的随机游走中,需要两个参数
      • return parameter p
      • walk away parameter q
      • 他们的作用如下:
  • 从w到s1——>相对于起始点u来说,距离变小了——>离u更近,所以是return

  • 从w到s2——> 相对于起始点u来说,距离不变

从w到s3——>相对于其实点u来说,距离变大了——>离u更远,所以是walk away

  •  所以如果需要BFS类型的随机游走(围绕在起始点u周围一圈的),那么p值就要小,1/p相应地大,从w到s1的概率就大
  • 如果需要DFS类型的随机游走(从u向远处拓展),那么q值就要小,1/q相应地大,从w到s3的概率就大

 

  • 其他的一些随机游走
    •  

2.5 总结 

  • 没有一种方法在所有情况下都是最优的
    • Graph Embedding Techniques, Applications, and Performance: A Survey中提到:

      • node2vec在点分类任务中效果更好;

      • multi-hop在边预测任务中效果更好

    • 随机游走效率上相对好一些(O(|E|) VS O(|V|^2)

       

 3 GNN

3.1 配置

  • 图G
  • 节点集V
  • 邻接矩阵A(0-1矩阵)
  • 点特征矩阵X \in R^{m \times |V|}

3.2  Neighborhood Aggregation

核心思想是使用类似于神经网络之类的模型将邻居的embedding信息加总到 目标点上

  •  不同neighborhood aggregation的区别在于,如何对邻居信息进行整合?

3.2.1 最基本方法:邻居的均值

最基本的方法是:对邻居的信息求平均,然后使用一个神经网络

 

 这里Wk和Bk都是可训练的参数

3.2.1.1 好处 

这样设计模型的一个好处是,模型的参数Wk和Bk对所有的点都是共享的 

另一个好处是,训练好的模型可以延申到新的graph中去

 

 3.3 GCN

Semi-Supervised Classification with Graph Convolutional Networks

3.3.1 neighborhood aggregation

不是简简单单的平均,这里通过点的度数进行normalization

 

 

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

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

相关文章

国家队入场,中国数字资产交易市场或将迎来新一轮“洗牌”

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业数字化已经成为中国文化产业的催化剂,一大批文化资源在数字技术的赋能下焕发了崭新的生机。随着数字化的升级与科技进步,数字经济正在成为改变全球竞争格局的关键力量,各国家都争先出台相…

【微服务】Nacos 健康检查机制

目录 一、前言 二、注册中心的健康检查机制 三、Nacos 健康检查机制 四、临时实例健康检查机制 五、永久实例健康检查机制 六、集群模式下的健康检查机制 七、小结 💖微服务实战 💖 Spring家族及微服务系列文章 一、前言 在前文中,…

使用 Helm 安装 MQTT 服务器-EMQX

EMQX ℹ️ Info: 使用 EMQX 通过 Helm3 在 Kubernetes 上部署 EMQX 4.0 集群 | EMQ emqx/deploy/charts/emqx at main-v4.4 emqx/emqx (github.com) emqx/values.yaml at main-v4.4 emqx/emqx (github.com) emqx/emqx-operator: A Kubernetes Operator for EMQ X Broker (git…

Arch Linux/Manjaro安装pycharm

首先换清华源以加快速度 (已经换源的小伙伴可以跳过这一步) 首先安装vim,用来编辑文件,已经安装过的可以跳过这一步。 sudo pacman -S vim 然后使用vim编辑配置文件 sudo vim /etc/pacman.d/mirrorlist 打开文件以后按inser…

Javaweb——第二章 Jsp和Servlet

目录 2.1 JSP概述 2.2 Servlet概述 2.3 jsp和servlet的区别和联系: ​编辑 2.4 Jsp的生命周期 2.4.1 JSP编译 2.4.2 JSP初始化 2.4.3 JSP执行 2.4.4 JSP清理 2.5 Servlet 2.5.1 Servlet的工作模式 2.5.2 Servlet创建方式 2.5.3 Servlet生命周期 2.1 JS…

JAVA之网络编程学习

文章目录一 java网络编程初识1.1 概述1.2 C/S 架构&B/S架构认识1.2.1 C/S架构1.2.2 B/S架构1.3 网络通信两个要素1.4 IP(Inet Adderss)1.5 InetAddress演示1.6 端口号1.7 InetSocketAddress使用1.8 网络通信协议二 TCP网络编程2.1 信息通信案例2.1.1 TcpClientDemo2.1.2 Tc…

聊聊接口文档的事儿

1、前言 大家好,欢迎来到我的吉鹿(记录)空间。 最近在做一个前后端分离的项目时,由于后端提供的 API 接口文档实在是一言难尽,导致了开发的效率大大降低。于是我出手了,我决定薅完我20几年的头发来肝一下…

TC275——10GPT12_PWM_Generation

产生PWM的方式有很多,这里尝试使用TC275的GPT12模块,来产生具有固定频率和可变占空比的PWM信号。 GPT12就是General Purpose Timer Unit通用定时器模块,它包含5个16位定时器,被分给GPT1和GPT2。 这里使用GPT1(T2、T3…

LinuxQQ3.0体验和下载方式

体验 2022年12月31日推出了LinuxQQ3.0版本,2.0版本特别复古 3.0特别丝滑 支持QQ空间 管理界面与WindowsQQ一致 支持截图和表情,传输文件图片很方便 下载方式 下载链接 im.qq.com/linuxqq/index.shtml 选择合适的版本下载即可 从下载文件夹中可以找到…

.Net 6实现旋转验证码

前几篇文章,介绍了.Net 6实现的滑动验证码功能,最近把滑动验证码的ImageSharp替换成了SkiaSharp,其中抠图部分参考了pojianbing大神的代码。滑动验证码完成之后,心想着。做一个旋转验证码。其实旋转验证码跟滑动验证码及其类似。 …

跨系统实时同步数据解决方案

数据量太大,单存储节点存不下,就只能把数据分片存储。 数据分片后,对数据的查询就没那么自由。如订单表按用户ID作为Sharding Key,就只能按用户维度查询。我是商家,我想查我店铺的订单,做不到。&#xff0…

ubuntu18.04下mysql数据库C语言API操作总结

通过C/C去操作数据库需要调用mysql客户端api,常用api和调用举例见后面。 目录 一.常用api 1.环境初始化 2.连接 mysql 的服务器 3.增删改查操作 4.事务处理 5.处理查询数据集合 6.释放资源,关闭连接 7.字符集相关 8.获取错误信息 二.api调用举…

Linux杂谈之sudo

一 sudo配置文件/etc/sudoers介绍 ① 什么是sudo 1) sudo 的英文全称是 super user do,即以超级用户root 用户的方式执行命令2) /etc/sudoers 是一个文本文件,只有root用户有该命令的执行权限 1) 允许普通用户以特权用户的权限去执行某些特权命令,访问和使用本…

优秀国土空间规划设计网络评选投票投票怎么进行小程序免费使用

如果通过一个小程序免费制作一个微信投票活动呢?文章详细讲解如何利用一款免费好用的微信小程序“活动星投票”小程序来制作投票活动,无需注册即可免费制作,非常的方便快捷,可以实现视频投票、分组投票、隐藏选手票数、导出投票数…

【Linux】进程概念(下)

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉进程状态&…

手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)

导 读 本文将手把手教你用Python和OpenCV搭建一个半自动标注工具(包含详细步骤 源码)。 背景介绍 样本标注是深度学习项目中最关键的部分,甚至在模型学习效果上起决定性作用。但是,标注工作往往非常繁琐且耗时。一种解决方案是…

【苹果家庭群发推】创作AppleScript脚本来控制MacOS附有的iMessage客户端停止考据,近似于组iMessage

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

ENVI_IDL:如何对文件名的日期进行格式化输出?

目录 00 前言 01 第一步,使用file_basename()函数路径中的获取文件名 02 第二步,使用strmid()函数获取文件名的日期 03 第三步,将获取的日期进行类型转换 04 第四步,将日期进行整理 05 第五步,进行格式化输出 …

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

分享IJCV2021上发表的一篇文章BiSeNetv2,这是BiSeNet的升级版本。开源代码地址:https://github.com/open-mmlab/mmsegmentation/tree/master/configs/bisenetv2 1.动机 语义分割是指为每个像素分配一个标签,它广泛用于场景理解、自动驾驶、人…

uniapp中app真机模拟以及小程序编译后css样式异常失效问题原因及解决方案

前言 最近写使用uniapp写app,开发的时候写样式都是使用浏览器h5进行调试一切正常,但是最后进行手机真机调试的时候css样式出现了异常,本文归纳常见的问题 比如在h5页面显示正常: 但是在真机调试app的实现则显示: H5正…