笔记总目录
课程为斯坦福大学CS224W 2021年冬季课程。
B站视频
斯坦福大学CS224W silide 03-nodeemb
图表示学习减轻了每次进行特征工程的需要。传统机器学习对于输入的图信号会进行一系列的特征提取工作,如第二章所示。而图表示学习则是淡化了特征提取工作。
图表示学习的目标:对图机器学习希望得到一个高效,且任务独立的特征学习方法。
作用:将节点映射到一个embedding空间中。
下面是embedding的性质和作用:
下图为网络embedding的实例。网络中节点在embedding之后被映射到2维空间上,其中网络中性质相似的节点,在2D空间中坐标临近。
给定一个图,
是顶点集,
是图邻接矩阵,为了简化问题,不考虑节点特征和其他的额外信息。
节点嵌入:
如下图所示
上图的目的是为了让embedding空间中的相似性近似图中的相似性,其中embedding空间一般是D维空间,相似性可以用向量和
的内积来衡量。如下图所示,节点在图中国的相似性等于节点embedding之后的相似性,不过节点在图中的相似性需要定义。
Node Embedding涉及到的过程:
两个重要的部分:
Encoder:将每一个节点都映射为一个低维的向量。
相似性函数或解码:刻画向量空间的关系如何映射到网络空间中。
最简单的编码方式:仅仅是一个嵌入查找,即一个编码集中找一个作为节点的编码。
其中是一个矩阵,每一列是一个节点编码。
是一个指示向量,指示节点
处为1,其他为零,这个指标集的维数为
,即节点个数。
最简编码处理方式:每个节点被分配一个唯一的Embedding vector,我们可以直接优化每个节点的嵌入向量。大致做法为先优化整个embedding矩阵,然后使用指示向量获得所需节点的Embedding。下图为浅编码的框架总结:
定义节点相似性的可能猜想,如果节点是相似的那么
后面将会用随机游走算法(random walks)来定义图节点的相似性,然后优化编码方式以近似图节点的相似结果。
节点嵌入的注意事项:
符号说明:
向量:节点
的embedding,这是我们要找的。
概率:表示从节点
出发以随机游走的方式访问到节点
的概率.
下面两个分线性函数被用来生成预测概率:
Softmax函数:将K个实值组成的向量变成一个和为1的由K个概率组成的概率向量:
Sigmoid函数:是一个S形状的函数,能够将实值映射成(0,1)区间的值,此函数写作:
随机游走:给定一个图和一个开始节点
,我们随机挑选这个节点的邻居节点
,然后移到这个邻居节点
,以这个邻居节点作为开始点重复这个过程。到达一定次数之后这个过程结束。在整个过程中访问的节点序列就是图上的随机游走。如下图所示:
随机游走嵌入:表示
和
同时出现在图的随机游走过程的概率。
随机游走Embedding的执行步骤:
2.优化这些embedding来编码随机游走统计参数。用embedding 空间中的相似性(这个相似性需要专门的二元函数来计算,如简单的内积)来编码节点经过随机游走算法得出来的”相似性“.
随机游走算法的好处:
无监督特征学习:
Feature Learning as Optimization
4.给定节点,我们想要在随机游走过程中取得的邻居节点集
中学习节点预测特征表示。
随机游走优化过程:
大致思路:
等价于:
这里(1)变成(2)仅仅是将集合 写成单个元素点的形式。
Intuition: 优化嵌入 来最大化似然co-occurrences随机游走。
使用softmax函数来参数化
为什么使用softmax:我们希望节点是所有N个节点中与节点
最相近的,而
,即与节点
最相近的占主导。
最优化随机游走嵌入等于找到使最小的
,即是的在图中与节点
最相似的节点在embedding空间中内积最大使得
.但是这个双重求和的时间复杂度为
.
下面借用负采样[1]来降低复杂度问题,具体推导过程"负采样推导过程"。
有两个关于负样本的个数k的考量
在取得目标函数之后采用梯度或随机梯度下降法来解优化函数。梯度下降是使用所有样本来计算梯度,计算时间长,计算量大。随机梯度下降是使用一个样本来计算梯度,时间消耗短,但是梯度计算的随机性大;一般采样mini-batch梯度下降,即梯度和随机梯度的一个折中,主要思想是从样本中抽样一定数量样本进行梯度计算。此外梯度下降使用反向传播算法来更新参数值。
随机游走算法的总结:
到目前为止,我们讨论了对于给定的随机游走策略,如何优化所需的embedding.但是并没有说明如何执行随机游走算法!最简单的想法:对每一个节点执行定长,无偏随机游走,即DeepWalk from Perozzi et al., 2013,但是这种执行方式好像不太好,有局限性。这有个扩展Perozzi et al. 2014.
Node2vector
有偏游走:
思路:使用灵活、有偏能够平衡网络中的局部和全局概念。
下面说明两个经典的定义节点的网络邻域
的算法,即广度优先搜索和深度优先搜索:
两种方法的特点:
下面介绍对于BFS和DFS两个重要的参数
参数应用:使用有偏的2阶随机游走研究网络邻居。如下图
Key idea: 记住游走过程的上一个节点。
随机游走在上游荡,现在在
节点处,下一步怎么走?(其中
是前面提到的模型转换概率)答:使用BFS和DFS算法
BFS和DFS算法在随机游走的性质是什么?参数应该怎么选择?
随机游走算法步骤:
上述算法的特点:
其他的随机游走算法:
Node2vec总结
总的来看随机游走算法在大多数情况下拥有比较好的性能。
目标:将子图或者整张图嵌入embedding空间。Graph embedding: .
任务:
最简单的方法:使用上面的节点嵌入方式得到所有的节点嵌入;然后对所有的节点嵌入求合或者求平均(被Duvenaud et al., 2016用来做分子分类):
引入一个虚拟节点然后执行一个标准的图节点嵌入,将求得的虚拟节点嵌入作为整个图的嵌入(proposed by Li et al., 2016 as a general technique for subgraph embedding)。
匿名随机游走(Anonymous walk embeddings,Anonymous Walk Embeddings, ICML 2018 )
匿名游走中的状态对应于我们在随机漫步中第一次访问该节点的索引。
匿名随机游走例子:
Step 1: node A node 1
Step 2: node B node 2 (different from node 1)
Step 3: node C node 3 (different from node 1, 2)
Step 4: node B node 2 (same as the node in step 2)
Step 5: node C node 3 (same as the node in step 3)
Random walk2表示了同样的匿名随机游走结果。
游走内容的数量的大小与游走的路径长度有关。如游走长度为3,游走内容
的数量为5:
匿名游走的简单使用:
随机游走的采样
存在一个关键问题:我们应该采样多少次,即随机游走数量 应该为多少?
New idea:learn walk embeddings
不同于简单的将游走发生的次数作为不同游走的表示,这节学习匿名游走的嵌入
.
学习图嵌入 的同时学习所有匿名游走的嵌入
,其中
表示采样随机游走的个数。
如何嵌入walks?
思路:要得要嵌入walks要解决预测walks的任务,即给出一定数量某个节点的walks,然后利用这些walks预测下一步的walk(Anonymous Walk Embeddings, ICML 2018)。
步骤如下:
下面结合Anonymous Walk Embeddings, ICML 2018对上面一些我认为难理解的部分进行解释:
在得出图嵌入之后,我们可以使用 来进行其他的操作如图分类
我们讨论了图嵌入的3个概念:
[1] https://arxiv.org/pdf/1402.3722.pdf