cs224w图神经网络-03Node Embeddings-课程笔记

Node Embeddings

  • 一、 Node Embeddings
    • 1. Graph Representation Learning (GPL)
    • 2.Node Embeddings: Encoder and Decoder
  • 二、 Random Walk Approaches for Node Embeddings
    • 1. 符号表示
    • 2. Random Walk定义
    • 3. simliarity定义
    • 4. Why random walks?
    • 5. optimization
    • 6. random walk总结
    • 7 其他random walk方法
  • 三、Embedding Entire Graphs
    • 1. 求和方法
    • 2. 引入virtual 节点:
    • 3. anonymous walk embeddings
    • 4.anonymous walk embeddings的改进
    • 本节总结
    • 学习到的embedding有什么用?
  • 四、本章总结

一、 Node Embeddings

1. Graph Representation Learning (GPL)

上章讲了如何使用手工设计的features结合传统机器学习方法,来做图机器学习。这一过程是这样的:

cs224w图神经网络-03Node Embeddings-课程笔记_第1张图片

以往的多数工作都在第一阶段,即特征工程这一步。这一步是为了找出最好的描述这个图的features。由此引出了GPL的想法:能否让机器自己学习图的特征?这样,上述步骤变成了如下:
cs224w图神经网络-03Node Embeddings-课程笔记_第2张图片
目标即学习一个map函数,将每一个节点嵌入到低维空间,其向量相似度特征表示了图中节点的特征。
cs224w图神经网络-03Node Embeddings-课程笔记_第3张图片

2.Node Embeddings: Encoder and Decoder

然后便是如何做的问题。这里采用的是Encoder and Decoder 方法完成上述任务。回顾一下目标:节点对应的向量之间的相似度,应该尽可能表示了真实节点的相似度。
cs224w图神经网络-03Node Embeddings-课程笔记_第4张图片
需要定义的两个部分分别是(1)ENC:将节点嵌入到向量空间(2)DEC:将向量对映射为相似度得分。这里采用的定义如下:
cs224w图神经网络-03Node Embeddings-课程笔记_第5张图片
cs224w图神经网络-03Node Embeddings-课程笔记_第6张图片
其中,ENC只是一个查找表。学习一个Z矩阵,其中每一列对应了一个节点的表示。DEC就是点积。
cs224w图神经网络-03Node Embeddings-课程笔记_第7张图片

然后就该定义相似度函数了。这里采用random walks方法。注意这是一个无监督学习过程,不需要标签,也没有关于图中节点的attribute。

二、 Random Walk Approaches for Node Embeddings

1. 符号表示

cs224w图神经网络-03Node Embeddings-课程笔记_第8张图片
其中, z u \mathbf{z}_{u} zu为节点 u u u的嵌入表示, P ( v ∣ z u ) P(v|\mathbf{z}_{u}) P(vzu)为以 u u u为起点,能游走到 v v v的可能性。也即相似度。
这里提到了 s o f t m a x softmax softmax函数。这是一个soft版的max函数。

2. Random Walk定义

给定一个起始点,随机从其一阶邻居中找一个作为下一个起始点,然后重复这个操作。序列长度就等于random walk的次数。
cs224w图神经网络-03Node Embeddings-课程笔记_第9张图片

3. simliarity定义

u u u v v v的相似度,为上面已定义好的概率 P ( v ∣ z u ) P(v|\mathbf{z}_{u}) P(vzu)
cs224w图神经网络-03Node Embeddings-课程笔记_第10张图片
这样,就可以定义算法的过程:首先进行随机游走操作,得出许多sequence,然后据此计算出 P ( v ∣ z u ) P(v|\mathbf{z}_{u}) P(vzu),然后就可以优化(优化目标是让向量之间的点积和上述概率大小相同)
cs224w图神经网络-03Node Embeddings-课程笔记_第11张图片

4. Why random walks?

两个优点:

  1. 表现力好。能捕获一阶和多阶邻居
  2. 高效。因为不必对所有节点进行训练。
    cs224w图神经网络-03Node Embeddings-课程笔记_第12张图片

5. optimization

课程中反复出现idea这个词。每个idea其实支撑一种算法的“philosophy”。这里无监督训练背后的“philosophy”便是:向量空间的相似度,表征着原数据的相似度。那么,在原图中,哪些邻居节点被定义为相似的?这里被定义为random walk所能游走到的点:
在这里插入图片描述

定义的目标函数是:
在这里插入图片描述
目标函数使得模型能预测出random walk游走出的邻居节点。比如预测出 v v v的所有random walk邻居节点。
上式等价于:
在这里插入图片描述cs224w图神经网络-03Node Embeddings-课程笔记_第13张图片
上图的解释很漂亮。可以看出,只要 v v v出现在 N R ( u ) N_{R}(u) NR(u)中了,那么目标就是让 u 和 v u和v uv的点积得分最大化。
但是,上述目标函数计算代价很昂贵: O ( N 2 ) O(N^{2}) O(N2)。原因在于分母上的归一化因子计算复杂度高。好在有负采样方法来近似这个分母:
cs224w图神经网络-03Node Embeddings-课程笔记_第14张图片
右上角的小绿字,是解释为啥这个负采样方法是有效的。(这是个难题,也许现在不需要了解)。负采样NCE的一种方法,用来近似softmax函数的值。关键点应该是近似。采用负采样方法后,就将目标函数中规模庞大的分母,替换为计算复杂度小的一项。即,对于节点 u u u,我们不把剩余所有节点当作负节点,而只是将一部分(比如 k k k个)当做负节点。这样就将分母的计算复杂度限制了。
这时,负样例的选择是很关键的。这里采用的是被选择的概率正比于节点的度。负样本采样多少也是一个问题。采样太多,就引入了更大的偏差(因为不是均匀采样,比如度高的点被采样概率高,这就引入了人为偏差)。通常人们选取 k = 5 − 20 k=5-20 k=520。(很惊讶。即使对于100万节点的图,也可以用这么小的k来完成任务。这效率提高了太多了(课程中老师这么说的"much much much more)))。
然后就是老生常谈的随机梯度下降法SGD做优化。

6. random walk总结

本节讲述了random walk算法。其分为三步:

  1. 进行random walk游走
  2. 对于每一个节点 u u u,将以 v v v为起始点游走到的节点序列都放在 N ( u ) N(u) N(u)中,表示 u u u的近邻节点。
  3. 优化目标函数(使用负采样方法)
    cs224w图神经网络-03Node Embeddings-课程笔记_第15张图片

7 其他random walk方法

前面只是用了最简单的random walk方法。即固定长度的游走序列。这种方法的相似度表示很受限。因此有了其他扩展方法,如node2vec:
核心idea是,可以权衡random walk的局部view 和全局view。分别对应着广搜和深搜。用两个参数p和q控制游走策略。p为返回本节点的概率,q控制BFS和DFS的相对概率。cs224w图神经网络-03Node Embeddings-课程笔记_第16张图片
cs224w图神经网络-03Node Embeddings-课程笔记_第17张图片
被称为 B i a s e d 2 n d − o r d e r r a n d o m w a l k s Biased \quad2^{nd}-order \quad random \quad walks Biased2ndorderrandomwalks
cs224w图神经网络-03Node Embeddings-课程笔记_第18张图片
cs224w图神经网络-03Node Embeddings-课程笔记_第19张图片
如何选取自己需要的算法?依然是没有最好的一个算法。node2vec在分类任务做得好,但是其他算法在链路预测做的更好。因此选择适合自己问题特性的算法,才是最好的。

三、Embedding Entire Graphs

问题描述:将整个图嵌入到向量空间中。比如用于分子毒性预测
cs224w图神经网络-03Node Embeddings-课程笔记_第20张图片

1. 求和方法

  1. 用random walk方法,然后求和(很简单的思想,但是很有效)
    在这里插入图片描述

2. 引入virtual 节点:

cs224w图神经网络-03Node Embeddings-课程笔记_第21张图片

3. anonymous walk embeddings

先游走,然后不直接使用游走序列,而是给每个节点分配一个唯一的编号。第一个出现的节点编号为1,第二个为2,以此类推。这样,不同的游走序列可能对应着同一个编码串。这样,每个节点都不知道游走到的是谁,因此称为“anonymous”。
cs224w图神经网络-03Node Embeddings-课程笔记_第22张图片
很自然的问题,有多少种不同的长度为k的编码串?
cs224w图神经网络-03Node Embeddings-课程笔记_第23张图片
然后采用如下方式表示整个图。
选择一个随机游走的长度 l l l,然后数一下图中出现的不同的长度为 l l l的匿名游走的个数,作为表示:
cs224w图神经网络-03Node Embeddings-课程笔记_第24张图片
选择多少random walk,由以下定理给出:
在这里插入图片描述

4.anonymous walk embeddings的改进

上述是匿名化random walk,这里可以直接embed random walk:(node2vec一样,不同点就在于这里嵌入的是random walk
cs224w图神经网络-03Node Embeddings-课程笔记_第25张图片
没怎么懂,但是主要思想和random walks是一样的:random walk算法中,邻居节点是节点,而这里邻居节点是anonymous walk。损失函数没看懂:
cs224w图神经网络-03Node Embeddings-课程笔记_第26张图片

本节总结

讲了三种图嵌入的方式
cs224w图神经网络-03Node Embeddings-课程笔记_第27张图片

学习到的embedding有什么用?

作用可太多了:
其中Hadamard对无向图很好,因为可交换
cs224w图神经网络-03Node Embeddings-课程笔记_第28张图片

四、本章总结

本章讲了如何让机器自己学习图的表示。讲了Encoder-decoder framework,然后是节点相似性度量,然后讲了如何将这些节点的表示扩展到整个图上。
cs224w图神经网络-03Node Embeddings-课程笔记_第29张图片

你可能感兴趣的:(Graph,cs224w)