1.什么是图嵌入
- 将图中的每个节点映射为一个低维的向量表示,映射后的向量应尽可能多的保留原图中节点的关键信息,以便更好地进行下游任务。
2.哪些信息需要被保留?
- 不同的图嵌入算法信息保留的侧重点也不一样,根据不同的下游任务,原图中需要保留的信息重要性程度也不一样(例如节点的邻域信息,结构角色,社区信息等)。
3.如何保留关键信息?
- 大多数技术共同思想就是(个人理解:先给节点一个随机表示,定义一个损失函数,不断迭代优化损失函数来学习节点表示),利用嵌入域中的节点表示,重构出要保留的图域信息(因为良好的节点表示应该能够重构出希望保留的原图关键信息),所以整个节点嵌入的学习过程就是,最小化重构误差来学习这个映射。
4.图嵌入通用框架
- 映射函数:将节点从图域映射到嵌入域
- 信息提取器:提取图域中需要保留的关键信息Q
- 重构器:利用嵌入域的嵌入信息,重构图的关键信息Q,重构后的信息为Q’
- 优化:以提取的关键信息Q和重构的信息Q’为目标优化(定义损失函数),学习映射函数及重构器涉及的参数
5.DeepWalk嵌入算法–保留节点共现关系
-
映射函数
得到每个节点的映射(每个节点的one-hot编码e与训练出的权重矩阵W相乘,结果即此节点映射,权重矩阵每一行表示一个节点的映射),one-hot维度1×N,权重矩阵W维度N×d,映射后向量维度1×d。权重矩阵系统会给一个初值,通过优化损失函数来学习权重矩阵,权重矩阵得到之后,意味着每个节点的嵌入表示也得到。
-
信息提取器:根据随机游走提取节点的共现信息
随机游走(Randow walk):给定一个图节点,从它的邻居节点中随机选取一个并前进到这个节点,接着从选中的节点中重复此过程,直至访问T个节点。这些被访问的节点组成的序列,即图上长度为T的随机游走。为每个节点生成γ个长度为T的随机游走序列。
Random Walk & Skip-gram:随机游走看成自然语言中的句子,节点集是句子中的词汇表,中心节点和其上下文节点(Vcon,Vcen)视为一个共现元组。遍历每个随机游走序列中的节点,将提取到的共现元组添加到信息提取器中。第二步信息提取器的工作完成(提取有共现关系的元组)
-
重构器:根据嵌入信息重构原图共现信息
对于原图中的共现元组,一个良好的嵌入,应该能够推断出原图的信息。这里原图的重要信息就是共现元组,所以重构器对元组出现的概率进行建模,认为共现元组出现的概率要尽可能大,这样学习到的嵌入意味着尽可能的保存了原图中的共现信息。
图注:每个节点有两种映射(中心节点映射+上下文节点映射)