开源内容:https://github.com/TommyZihao/zihao_course/tree/main/CS224W
子豪兄B 站视频:https://space.bilibili.com/1900783/channel/collectiondetail?sid=915098
斯坦福官方课程主页:https://web.stanford.edu/class/cs224w
图嵌入-概述
图表示学习的目标
目标:通过图机器学习学习与下游任务无关的特征
- 低维:向量维度远小于节点数
- 连续:每个元素都是实数
- 稠密:每个元素都不为0
图嵌入的目标
任务:将节点嵌入到d维空间
- 向量相似度反映节点的相似性
- 嵌入向量包含网络的连接信息
- 图嵌入可以用于很多潜在的下游任务
图嵌入的基本框架(编码器-解码器)
为了简化表示,我们仅利用节点的连接信息,没有利用节点的属性信息
节点相似度表示
节点的相似度表示要人为的去定义
我们可以从以下几个方面来考虑两个节点的相似性
- 直接相连
- 间接相连
- 相同功能角色
编码器
最简单的编码器:查表
最简单的编码方式:编码器进行嵌入式查找
每个节点表示为一个嵌入向量,我们可以对节点组成的嵌入向量矩阵
Z
Z
Z进行优化,常见的优化方法有:Deepwalk和node2vec等
框架总结
- 这是一种无监督/自监督学习节点嵌入的方式
- 没有使用节点的类别标签
- 没有使用节点的属性特征
- 直接优化嵌入向量
- 与下游任务无关
- 节点嵌入不是为了特定的下游任务训练的,它们能用于任何任务
图嵌入——基于随机游走的方法
图机器学习的问题可以和NLP问题进行对应
图机器学习->NLP
图->文章
随机游走序列->句子
节点->单词
Deepwalk->Ship-Gram
Node Embeding->Word Embeding
-
DeepWalk
• 首个将深度学习和自然语言处理的思想用于图机器学习。
• 在稀疏标注节点分类场景下,嵌入性能卓越。
• 均匀随机游走,没有偏向的游走方向。(Node2Vec)
• 需要大量随机游走序列训练。
• 基于随机游走,管中窥豹。距离较远的两个节点无法相互影响。看不到全图信息。(图神经网络)
• 无监督,仅编码图的连接信息,没有利用节点的属性特征。
• 没有真正用到神经网络和深度学习。 -
Node2Vec 图嵌入算法
• Node2Vec解决 图嵌入 问题,将图中的每个节点映射为一个向量(嵌入)。
• 向量(嵌入)包含了节点的语义信息(相邻社群和功能角色)。
• 语义相似的节点,向量(嵌入)的距离也近。
• 向量(嵌入)用于后续的分类、聚类、Link Prediction、推荐等任务。
• 在DeepWalk完全随机游走的基础上,Node2Vec增加p、q参数,实现有偏 随机游走。不同的p、q组合,对应了不同的探索范围和节点语义。
• DFS深度优先探索,相邻的节点,向量(嵌入)距离相近。
• BFS广度优先探索,相同功能角色的节点,向量(嵌入)距离相近。
• DeepWalk是Node2Vec在p=1,q=1的特例。
总结
本篇文章讨论了图表示学习,一种可以学习节点和图的嵌入用于下游任务而不需要人工特征工程的方法。采用了编码器-解码器的框架,编码器进行嵌入查找,解码器对嵌入预测得分来计算节点的相似度,讨论了节点相似度方法DeepWalk和Node2vec。