CS224W笔记-第七课:图表征学习
前面几次课在不同程度上介绍了在图结构数据上的机器学习任务。总体而言,图上的机器学习包括(但不限于)下面3大任务:
- 点分类/回归
- 边预测/分类/回归
- 整图分类/回归
总传统的机器学习管道而言,一般都会有从原始数据到模型输入数据的特征工程的步骤,而这一步骤对于机器学习的性能影响巨大。因此,在现在的深度学习所擅长的一个点就是自动学习和获取这些特征。在图里,这就是图表征的学习。
图表征的目的:
高效地对图学习到不依赖于下游任务的特征。
图向量基本思想:
对于图,把基于邻接矩阵的节点的分布式表征(类似于one-hot编码),学习到隐性的低维度的稠密的表征(向量/嵌入),并用于下游的任务。
点表征学习
点表征学习(点向量)的目的:
学习到点的低维度向量,且若点-点它们在原始图中相似,则在向量空间里的点和点的向量也相似,即向量点积高。
数学表示: s i m i l a r i t y ( u , v ) ≈ z v ⊤ z u \mathrm{similarity}(u, v) \approx {\mathrm{z}_v}^{\top}\mathrm{z}_u similarity(u,v)≈zv⊤zu
在这里,产生点向量的步骤就变成了3步:
- 定义一个编码器,由它完成点向量的生成;
- 定义相似度函数 s i m i l a r i t y \mathrm{similarity} similarity,计算原始图中的点的相似度;
- 通过损失函数,优化编码器的参数,完成最终的学习。
通过这个方式,可以看到,最重要的组件就是编码器和相似度函数。
其中,编码器的表示就是: E N C ( v ) = Z v \mathrm{ENC}(v)=\mathrm{Z}_v ENC(v)=Zv。
这个编码器可以像word2vec那样的仅仅是一个浅层的查找矩阵。但是对于图结构数据,还有其他的最新的方法,比如deepwalk,node2vec,TransE等。
同时,对于如何定义图中两个点的相似度也是一个充满创意的研究热点,不同的方法给出了不同的计算。
随机游走(Random Walk)构建点向量算法
随机游走的定义:
给定一个图和一个起始点,随机选择它的一个邻居节点,移动到这个邻居,然后再随机选择一个邻居。这个过程被称为图中的随机游走。
根据随机游走的定义,可以认为:如果两个点 u u u和 v v v出现在一次随机游走中,则它们是相似的。这就是随机游走进行图表征学习的基本思路,即如果两个点在各自的邻居范围内,那么它们的相似度就高。而邻居范围的定义则是通过一个策略 R R R获得的。
随机游走算法
定义:
- 在图 G ( V , E ) G(V, E) G(V,E)中,学习一种映射 z : u → R d \mathrm{z}: u \to \mathbb{R}^d z:u→Rd,目标是获取最大化的对数似然。 max z ∑ u ∈ V l o g P ( N R ( u ) ∣ z u ) \max_{z}\displaystyle\sum_{u\in V}\mathrm{logP}(N_R(u)|\mathrm{z}_u) zmaxu∈V∑logP(NR(u)∣zu)
其中, N R ( u ) N_R(u) N