[学习笔记]DeepWalk图神经网络论文精读

news2024/11/26 0:56:59

参考资料:DeepWalk【图神经网络论文精读】

word2vec

相关论文:
Efficient Estimation of Word Representations in Vector Space
Distributed Representations of Words and Phrases and their Compositionality

随机游走Ramdom Walk简述

通过随机游走可以采样出一个序列。

序列好比一句话,节点好比一个单词。

随机游走的假设是类似word2vec的,假设相邻单词应该相似。于是可以构造skip-gram问题,输入中心节点,预测周围邻近节点。这样就能完全套用word2vec。

Deepwalk官方ppt介绍

https://dl.acm.org/doi/10.1145/2623330.2623732

核心思想:随机游走=句子

Deepwalk的优势

  • 可扩展-在线学习算法,来了一个新数据,不需要从手开始训练。
  • 可以把随机游走当成句子,直接套用NLP中的语言模型
  • 在稀疏标注的图分类任务上,效果不错

语言模型

在NLP领域,有一个现象,称为“word frequency”:有一些词出现的特别频繁,有一些不频繁。
在图里,特别是无标度图网络里,也有类似的现象:“Vertex frequency”:有一些网站被访问的特别频繁,有一些不频繁。

流程

在这里插入图片描述

  1. 输入图
  2. 采样出随机游走序列
  3. 用随机游走序列训练word2vec
  4. 使用层次softmax
  5. 得到每个节点的向量表示

2.随机游走

  • 每个节点产生 γ \gamma γ个随机游走序列。
  • 每个随机游走的最大长度是 t t t
  • 同概率地选择节点的下一个节点
  • 如: v 46 → v 45 → v 71 → v 24 → v 5 → v 1 → v 17 v_{46} \rightarrow v_{45} \rightarrow v_{71} \rightarrow v_{24} \rightarrow v_5 \rightarrow v_1 \rightarrow v_{17} v46v45v71v24v5v1v17

3.用随机游走序列构造skip-gram任务,训练word2vec

在这里插入图片描述

4.使用层次softmax

在这里插入图片描述

学习参数:节点表示、分类器的权重
使用随机梯度下降,同时优化

评估

属性预测(节点分类问题)
在这里插入图片描述
这是一个稀疏标注的问题。将Deepwalk和spectralclustering,edgecluster,modularity,wvRN比较。

  • BlogCatalog
    在这里插入图片描述
  • Flicker
    在这里插入图片描述

deepwalk表现非常好,特别是在标签非常少的情况下。

可并行

并行不影响表示质量。

展望

  • Streaming:不需要整个图的信息。动态更新。
  • “不随机”游走:可以携带一定的倾向性。
  • 图和语言,相辅相成,两个领域的突破可以互相借鉴。
    在这里插入图片描述

论文精读

数据集:空手道俱乐部

问题定义

G = ( V , E ) G=(V,E) G=(V,E)
G L = ( V , E , X , Y ) G_L=(V,E,X,Y) GL=(V,E,X,Y)
X ∈ R ∣ V ∣ × S X \in \mathbb{R}^{|V| \times S} XRV×S:每个节点有S维特征
Y ∈ R ∣ V ∣ × ∣ Y ∣ Y \in \mathbb{R}^{|V| \times|\mathcal{Y}|} YRV×Y:每个节点有 Y \mathcal{Y} Y个标签

任务:relational classification(不满足独立同分布假设)
目标:学到 X E ∈ R r ∣ V ∣ × d X_E \in \mathbb{R}_r^{|V| \times d} XERrV×d:d是词嵌入后的维度

反映连接信息的embedding+反映节点本身的特征=>机器学习分类(欺诈检测)

希望学到的特性

  • 适应性:在线学习算法
  • 反映社群聚类信息:原图中相近的节点,嵌入后依然接近
  • 低维数:防止过拟合
  • 连续:方便拟合出平滑的决策边界

3.1 随机游走

起点: v i v_i vi
随机游走: W v i \mathcal{W}_{v_i} Wvi W v i 1 , W v i 2 , … , W v i k \mathcal{W}_{v_i}^1, \mathcal{W}_{v_i}^2, \ldots, \mathcal{W}_{v_i}^{k} Wvi1,Wvi2,,Wvik:右上角表示第k步
随机游走已经被用于内容推荐、社群检测,作为相似性测量的方法。
随机游走也是一些output sensitive算法的基石(至少要遍历一遍全图)。
随机游走的优点:
1.并行采样生成随机游走序列
2.在线学习:当网络有新节点、新关系时候,不需要把全图信息重新计算,只需把跟新节点、新关系采样出来,迭代在线增量训练即可。

3.2幂律分布(Power laws)

  • 随机网络
    如果是随机网络,那么节点的度普遍偏小,没有某些节点度远大于其他节点
    度的分布大致呈现出正态曲线。
    在这里插入图片描述

  • 无标度网络(Scale-free network)
    在这里插入图片描述

  • Zipf定律
    一个单词的词频与词频排序名次的常数次幂成反比。即只有极少数的词(节点)被经常使用。

3.3 语言模型

语言模型的目标是估计一个特定序列的词出现的似然概率。更正式地:
给定一个词序列 W 1 n = ( w 0 , w 1 , ⋯   , w n ) W_1^n=\left(w_0, w_1, \cdots, w_n\right) W1n=(w0,w1,,wn),希望最大化概率:
Pr ⁡ ( w n ∣ w 0 , w 1 , ⋯   , w n − 1 ) \operatorname{Pr}\left(w_n \mid w_0, w_1, \cdots, w_{n-1}\right) Pr(wnw0,w1,,wn1)

即已知前 n n n个词,预测第 n + 1 n+1 n+1个词的概率。

论文用前 i − 1 i-1 i1个节点,预测第 n n n个节点。
引入 Φ : v ∈ V ↦ R ∣ V ∣ × d \Phi:v \in V \mapsto \mathbb{R}^{|V| \times d} ΦvVRV×d映射,通过查表,将节点映射到向量。
于是问题转化为(用前i-1个节点的embedding预测第i个节点):
Pr ⁡ ( v i ∣ ( Φ ( v 1 ) , Φ ( v 2 ) , ⋯   , Φ ( v i − 1 ) ) ) \operatorname{Pr}\left(v_i \mid\left(\Phi\left(v_1\right), \Phi\left(v_2\right), \cdots, \Phi\left(v_{i-1}\right)\right)\right) Pr(vi(Φ(v1),Φ(v2),,Φ(vi1)))
但是将它转化为条件概率,会越乘越小,导致游走到很远的时候,概率变很小。

参考word2vec

word2vec是自监督模型,且周围词的顺序无关。

skip-gram的损失函数: minimize ⁡ Φ    − log ⁡ Pr ⁡ ( { v i − w , ⋯   , v i + w } \ v i ∣ Φ ( v i ) ) \underset{\Phi}{\operatorname{minimize}}\ \ -\log \operatorname{Pr}\left(\left\{v_{i-w}, \cdots, v_{i+w}\right\} \backslash v_i| \Phi\left(v_i\right)\right) Φminimize  logPr({viw,,vi+w}\vi∣Φ(vi))

随机游走生成的图,顺序本就没有意义。
模型较小,一次输入一个节点,预测周围节点。

4.方法

4.2 算法:deepwalk

算法分为两部分:
1.随机游走生成器
2.更新步骤

  • deepwalk伪代码

在这里插入图片描述

  • skipgram伪代码
    在这里插入图片描述

可以设置随机游走序列在走一定路之后传送回起始节点的概率,但预实验的结果是没有明显影响。

4.2.1 skipgram

在这里插入图片描述

4.2.2 分层softmax

原来直接做softmax,计算配分函数(partition function)太昂贵。
在这里插入图片描述

在这里插入图片描述
所以,deepwalk是要训练两套权重:
1.词嵌入矩阵
2.N-1个逻辑回归的权重,(N个叶子节点有N-1个逻辑回归)

  • 整体流程图
    在这里插入图片描述

4.2.3 优化

参数是上面提到的两套权重,大小是 O ( d ∣ V ∣ ) O(d|V|) O(dV)

4.3 多线程异步并行

4.4 算法变种

4.4.1 streaming

保证学习率不变,且较小。

4.4.2 不随机的游走

用户交互往往有偏向。这样不仅可以考虑到连接的存在性,还可以考虑到连接的权重。句子事实上也可以看作是有偏向的采样序列。

5.实验设计

数据集:
在这里插入图片描述

5.2 对比算法

在这里插入图片描述

6.实验

6.1 多类别节点分类

T R T_R TR:标注节点的比例
评估指标: M a c r o − F 1 Macro-F1 MacroF1(每一类F1取平均)和 M i c r o − F 1 Micro-F1 MicroF1(总体的TP、FN、FP、TN计算总体的F1)
这里用one-vs-rest逻辑回归实现分类器。

关于one-vs-rest可以参考资料

下面展示了效果。
图中展示的结果:
1. T R T_R TR会影响最优的维度d, T R T_R TR越大,最优的d也越大
2. γ \gamma γ越大,效果越好,但存在边际
3. T R T_R TR越大,效果越好
4.不同大小的图,不同 γ \gamma γ的相对影响是一致的
在这里插入图片描述

7.相关工作

1.embedding通过自监督(无监督)学习得到的。
2.只考虑graph中的连接信息。后续可以用embedding和标注训练有监督的分类模型。
3.在线学习。

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

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

相关文章

LLMs之Falcon 180B:Falcon 180B的简介、安装、使用方法之详细攻略

LLMs之Falcon 180B:Falcon 180B的简介、安装、使用方法之详细攻略 导读:Falcon-180B是一个由TII发布的模型,它是Falcon系列的升级版本,是一个参数规模庞大、性能优越的开放语言模型,适用于各种自然语言处理任务&#x…

Net跨平台UI框架Avalonia入门-样式详解

设计器的使用 设计器预览 在window和usercontrol中,在代码中修改了控件,代码正确情况下,设计器中就可以实时看到变化,但是在样式(Styles)文件中,无法直接看到,需要使用设计器预览D…

uni-app 前面项目(vue)部署到本地win系统Nginx上

若依移动端的项目:整合了uview开源ui框架, 配置后端请求接口基本路径地址: 打包复现到nginx下: 安装个稳定版本的:nginx-1.24.0 部署配置: 增加了网站:8083端口的, 网站目录在ngi…

Reactor

1.epoll底层工作原理 creat: 红黑树 就绪队列 回调机制 control: 用户告诉内核做什么事情,就是操作红黑树 wait: 操作就绪队列 2.LT ET模式 3.Reactor 4.前摄式

懒汉式逆向APK

作者:果然翁 通过各方神仙文档,以及多天调试,整理了这篇极简反编译apk的文档(没几个字,吧).轻轻松松对一个apk(没壳的)进行逆向分析以及调试.其实主要就是4个命令. 准备 下载apktool :https://ibotpeaches.github.io/Apktool/install/下载Android SDK …

被问到: http 协议和 https 协议的区别怎么办?别慌,这篇文章给你答案

前言 作为软件测试师,大家都知道一些常用的网络协议是我们必须要了解和掌握的,比如 HTTP 协议,HTTPS 协议就是两个使用非常广泛的协议,所以也是面试官问的面试的时候问的比较多的两个协议;因为这两个协议有相似和关联的…

CSP 202209-1 如此编码

答题 题目就是字多 #include<iostream>using namespace std;int main() {int n,m;cin>>n>>m;int a[n],c[n1];c[0]1;for(int i0;i<n;i){cin>>a[i];c[i1]c[i]*a[i];}for(int i0;i<n;i){cout<<(m%c[i1]-m%c[i])/c[i]<< ;} }

基于 Flink CDC 高效构建入湖通道

摘要&#xff1a;本文整理自阿里云 Flink 数据通道负责人、Flink CDC 开源社区负责人&#xff0c; Apache Flink PMC Member & Committer 徐榜江&#xff08;雪尽&#xff09;&#xff0c;在 Streaming Lakehouse Meetup 的分享。内容主要分为四个部分&#xff1a; 1. Flin…

2.4 选择结构语句

选择结构语句根据是否满足某个条件确定执行哪些操作&#xff0c;分为if条件语句和switch条件语句。 1. 单分支if语句 &#xff08;1&#xff09;if语句是指如果满足某种条件&#xff0c;就进行某种处理&#xff0c;格式如下。 if(条件) {// 执行语句 } 根据上述格式中&…

有限状态机的概念

一、有限状态机的概念 有限状态机简称状态机&#xff0c;是表示有限个状态&#xff0c;以及在状态之间的转移和动作等行为的数学模型。状态机的要素有状态和状态转移两个。 在Unity中&#xff0c;动画状态机最重要的属性就是节点和连线&#xff0c;其中每个节点都是一个动画片…

zotero的使用教程

1. zotero安装 1.1 下载 官网下载地址:Zotero 1.2 安装 建议自定义安装路径,不要安装在C盘。如以下步骤: 2. 插件安装 一般安装以下四种插件,即茉莉花(Jasminum)、zotfile、zotero-scihub、zotero-pdf-translate。以安装茉莉花插件为例进行说明,如图1所示,其余插件安…

Linux mac Windows三系统 局域网文件共享方法

主要工具&#xff1a; Samba是一个开源的软件套件&#xff0c;允许Linux系统与Windows系统之间共享文件和打印机。 一、首先是Linux共享的设置 ①安装 sudo apt-get install samba ②创建共享文件夹 sudo mkdir /home/share ③配置用户 sudo smbpasswd -a kequan ④修改…

软件测评的必要性,第三方软件测试机构推荐

软件测评报告 1、什么是软件测评报告&#xff1f; 测试报告是指把测试的过程和结果写成文档&#xff0c;对发现的问题和缺陷进行分析&#xff0c;为纠正软件的存在的质量问题提供依据&#xff0c;同时为软件验收和交付打下基础。 2、软件测评报告的作用 一份详细的测试报告…

git打tag和版本控制规范

我们在开发中经常会遇到要打tag的情况&#xff0c;但这个tag应该如何打呢&#xff1f;我不知道大家平时是怎么打的&#xff0c;但我基本就是从1.0.0开始进行往上递增&#xff0c;至于如何递增&#xff0c;基本凭感觉。今天同事新打了一个tag进行发版&#xff0c;然后被架构点名…

计算机竞赛 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …

AJAX学习总结+Axios异步框架+Filter拦截器学习+JSON介绍+Listener监听器介绍

壹、AJAX 一、AJAX介绍 AJAX&#xff08;Asynchronous JavaScript And XML&#xff09;&#xff1a;异步的JavaScript和XML AJAX作用&#xff1a; 1. 与服务器进行数据交换&#xff1a;通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的数据。&#xff08;原先…

过于依赖性的危机:探索品牌代理商背后的实质含义

据IDC中国报道称&#xff1a;2023年中国低代码与零代码软件市场规模将达到34.7亿元人民币&#xff0c;同比增长32.4%。预计到2027年市场规模将达到106.3亿元人民币&#xff0c;未来5年市场年复合增长率&#xff08;CAGR&#xff09;为32.3%。 随低代码市场规模不断扩大&#xf…

【计算机网络】 确认应答机制与超时重传

文章目录 ACK机制——确认应答机制超时重传 ACK机制——确认应答机制 当我们客户端发送了一个数据&#xff0c;seq是1100&#xff0c;那么服务端在收到时就会回一个ack101的ACK包&#xff0c;代表101之前的包我都收到了&#xff0c;下面请你从101继续发送。然后客户端就会发送1…

无涯教程-JavaScript - IMARGUMENT函数

描述 IMARGUMENT函数返回参数$\theta $(theta),以弧度表示的Angular,如- $$x yi \left | x yi \right | e ^ {i \theta} \left | x yi \right |(\cos \theta \sin \theta)$$ 语法 IMARGUMENT (inumber)争论 Argument描述Required/OptionalInumberA complex number f…

【C++基础】7. 控制语句

文章目录 【 1. 循环 】1.1 循环类型1.2 循环控制语句break 语句continue 语句goto 语句 1.3 无限循环 【 2. 选择 】switch 语句&#xff1f;&#xff1a;语句 【 1. 循环 】 1.1 循环类型 循环类型描述while 循环当给定条件为真时&#xff0c;重复语句或语句组。它会在执行…