cs224w(图机器学习)2021冬季课程学习笔记3: Node Embeddings

简介: cs224w(图机器学习)2021冬季课程学习笔记3: Node Embeddings

1. 章节前言


  1. 图表示学习graph representation learning:学习到图数据用于机器学习的、与下游任务无关的特征,我们希望这个向量能够抓住数据的结构信息。

这个数据被称作特征表示feature representation或嵌入embedding。

image.png


  1. Why embedding?

任务:将节点映射到embedding space

  • embedding的相似性可以反映原节点在网络中的相似性,比如定义有边连接的点对为相似的点,则这样的点的embedding应该离得更近
  • embedding编码网络信息
  • embedding可用于下游预测任务


  1. node embedding举例:Zachary’s Karate Club network1 的二维节点嵌入可视化(将不同类的节点很好地分开了)

image.png

图源:Perozzi et al. DeepWalk: Online Learning of Social Representations. KDD 2014


2. Node Embeddings: Encoder and Decoder


  1. 图 G ,节点集合 V ,邻接矩阵 A (二元的)(简化起见:不考虑节点的特征或其他信息)


  1. 节点嵌入:目标是将节点编码encode为embedding space中的向量embedding,使embedding的相似度(如点积2)近似于图中节点的相似度(需要被定义)

image.png


  1. Encoder:将节点映射为embedding

定义一个衡量节点相似度的函数(如衡量在原网络中的节点相似度)

Decoder DEC 将embedding对映射为相似度得分

image.png


  1. two key components

image.png

d一般是64-1000维


  1. “shallow” encoding

image.png

image.png

Z每列是一个节点所对应的embedding向量。v是一个其他元素都为0,对应节点位置的元素为1的向量。通过矩阵乘法的方式得到结果。

这种方式就是将每个节点直接映射为一个embedding向量,我们的学习任务就是直接优化这些embedding。

缺点:参数多,很难scale up3到大型图上。

优点:如果获得了Z,各节点就能很快得到embedding。

有很多种方法:如DeepWalk,node2vec等


  1. Encoder + Decoder Framework Summary
  • Shallow encoder: embedding lookup
  • 优化参数:Z(包含每个节点对应的node embedding)
  • 在Lecture 6将介绍deep encoders(已完成对应章节的笔记,见cs224w(图机器学习)2021冬季课程学习笔记7 Graph Neural Networks 1: GNN Model)
  • Decoder: based on node similarity
  • 目标:对于相似点对 (u,v),最大化其embedding点积


  1. 节点相似的不同定义
  • 有边
  • 共享邻居
  • 有相似的structural roles
  • 本节课:随机游走random walk定义的节点相似度


  1. Note on Node Embeddings
  • 无监督/自监督unsupervised/self-supervised:不用节点的标签和特征,直接估算得到节点的一系列坐标(如embedding),这一系列坐标在某种程度上可以保留网络结构(由DEC捕获)
  • task independent


3. Random Walk Approaches for Node Embeddings


  1. 统一符号表示notation

image.png

image.png


  1. random walk:从某一节点开始,每一步按照概率选一个邻居,走过去,重复。停止时得到一系列节点

image.png


  1. random walk embeddings

image.png


  1. Why random walks?
  • Expressivity: Flexible stochastic definition of node similarity that incorporates both local and higher-order neighborhood information

Idea: if random walk starting from node 𝒖 visits 𝒗 with high probability, 𝒖 and 𝒗 are similar (high-order multi-hop information)

  • Efficiency: Do not need to consider all node pairs when training; only need to consider pairs that co-occur on random walks


  1. unsupervised feature learning

image.png


  1. feature learning as optimization

image.png


  1. random walk optimization

image.png

把最大似然估计翻过来,拆开,就成了需被最小化的损失函数L:

image.png

image.png

image.png

我们发现问题就在于用于softmax归一化的这个分母:

image.png


  1. 为了解决这个分母,我们使用negative sampling6的方法:简单来说就是原本我们是用所有节点作为归一化的负样本,现在我们只抽出一部分节点作为负样本,通过公式近似减少计算

image.png

这个随机分布不是uniform random,而是random in a biased way:概率与其度数成比例。


负样本个数k的考虑因素:

  • 更高的k会使估计结果更鲁棒robust(我的理解是方差↓)
  • 更高的k会使负样本上的偏差bias更高(其实我没搞懂这是为什么)
  • 实践上的k常用值:5-20


  1. 优化目标函数(最小化损失函数)的方法:随机梯度下降SGD


  1. random walks: summary

image.png


  1. random walk策略
  • Simplest idea: Just run fixed-length, unbiased random walks starting from each node

举例:DeepWalk7

问题:相似度概念受限

  • node2vec8

image.png

image.png

image.png

image.png

image.png

image.png


  • 其他随机游走方法:

image.png


  1. Summary so far
  • 节点嵌入:使embedding的向量距离能够反应原网络中的节点相似度
  • 衡量节点相似度的指标

Naive: 节点间有边

Neighborhood overlap (在Lecture 212 讲过)

random walk approaches(本节课所讲)

  • 需要根据具体情况来选择算法。node2vec在节点分类任务上表现更好,不同的方法在不同数据的链接预测任务上表现不同13。random walk approaches整体上更有效。


4. Embedding Entire Graphs


image.png

任务示例:

  • 分类有毒/无毒分子
  • 识别异常图


也可以视为对节点的一个子集的嵌入


  1. 方法1:聚合(加总或求平均)节点的嵌入

image.png

示例:Duvenaud D, Maclaurin D, Aguilera-Iparraguirre J, et al. Convolutional networks on graphs for learning molecular fingerprints[J]. arXiv preprint arXiv:1509.09292, 2015. 用图结构对分子进行分类。虽然方法很简单但是表现挺好。


  1. 方法2:创造一个假节点(virtual node),用这个节点嵌入来作为图嵌入

这个virtual node和它想嵌入的节点子集(比如全图)相连

image.png

示例:Li Y, Tarlow D, Brockschmidt M, et al. Gated graph sequence neural networks[J]. arXiv preprint arXiv:1511.05493, 2015.


  1. 方法3:anonymous walk embeddings14(以节点第一次出现的序号(是第几个出现的节点)作为索引)

image.png

这种做法会使具体哪些节点被游走到这件事不可知(因此匿名)

image.png

  • anonymous walks的个数随walk长度指数级增长:

image.png


  • anonymous walks的应用1:模拟图上长为 l ll 的匿名随机游走,将图表示为walks的概率分布向量(我感觉有点bag-of-anonymous walks、有点像GDV那些东西,总之都是向量每个元素代表其对应object的出现概率/次数)

image.png


  • sampling anonymous walks(图中这个m我还不知道是从哪来的)

image.png


  • anonymous walks的应用2:walk embeddings

image.png

image.png

image.png

image.png

image.png


  • Summary

image.png


  • Lecture 8中会讲到Hierarchical Embeddings方法,分层级聚合图中节点获得全图嵌入向量


5. 本章总结


  1. 如何使用节点嵌入:聚类、社区发现,节点分类,链接预测(通过concatenate、哈达玛积、取平均、求和、计算距离来得到链接嵌入)图分类(聚合节点嵌入或使用匿名随机游走获得图嵌入)

image.png

哈达玛积、sum/avg、L2距离在无向图上表现好,因为它们是commulative的(就是交换参数对结果没有影响);如果是有向图的话concatenate就会好


  1. Summary

image.png


相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
38 0
|
5月前
|
JavaScript
DOM 属性列表(命名节点图 Named Node Map)
`DOM`中的`Named Node Map`是元素节点属性的列表,自动更新增删操作。代码示例载入"books.xml",获取第一个`<book>`元素的属性列表,`x.length`显示属性数量,`x.getNamedItem("category").nodeValue`输出"category"属性值,如"cooking",并显示属性总数1。
|
6月前
|
JavaScript
DOM 属性列表(命名节点图 Named Node Map)
`DOM`的`Named Node Map`是元素节点的属性列表,类似节点列表但有区别。当属性增删时,列表自动更新。示例代码加载"books.xml",获取第一个`<book>`元素的属性节点列表,`x.length`表示属性数量,`x.getNamedItem("category").nodeValue`显示"category"属性值。输出为:`cooking`和`1`,表示类别为烹饪且有1个属性。
|
5月前
|
存储 JavaScript
DOM 属性列表(命名节点图 Named Node Map)
`DOM`的`Named Node Map`代表元素的属性列表,当属性增删时会自动更新。示例展示了如何加载"books.xml",获取第一个`<book>`元素的属性。变量`x`存储属性列表,`x.length`显示属性数量,`x.getNamedItem("category")`返回"category"属性值。代码输出属性值"cooking"和属性数量1。
|
5月前
|
机器学习/深度学习 搜索推荐 PyTorch
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
1150 2
|
5月前
|
JavaScript
DOM 属性列表(命名节点图 Named Node Map)
`DOM`的`Named Node Map`是属性节点列表,由元素的`attributes`属性返回。它自动更新增删属性。示例代码加载"books.xml",获取第一个`<book>`元素的属性列表,`x.getNamedItem("category").nodeValue`显示"cooking",`x.length`显示属性数量1。
|
6月前
|
JavaScript
DOM 属性列表(命名节点图 Named Node Map)
该文段介绍了DOM中的命名节点图(Named Node Map),它是元素节点属性的列表,会自动更新以反映属性变化。示例展示了如何通过`loadXMLDoc()`加载"books.xml",获取第一个`<book>`元素的属性节点列表,使用`x.getNamedItem("category").nodeValue`显示"category"属性值,`x.length`显示属性数量。输出为"cooking 1"。
|
5月前
|
JavaScript
DOM 属性列表(命名节点图 Named Node Map)
**DOM的NamedNodeMap概括:**它表示元素的属性节点列表,如`<book>`的`attributes`。这个映射自动更新,添加或删除属性时响应变化。代码示例加载"books.xml",获取首个`<book>`的属性,`x.getNamedItem("category").nodeValue`显示类别,`x.length`显示属性数。输出示例:类别为"cooking",属性计数为1。
|
6月前
|
JavaScript
DOM 属性列表(命名节点图 Named Node Map)
`DOM`的`Named Node Map`代表元素的属性列表,它是一个自动更新的节点集合。当属性增删时,列表随之变化。以下代码示例加载"books.xml",获取第一个`<book>`元素的属性节点列表,`x.length`表示属性数量,`x.getNamedItem("category").nodeValue`显示"category"属性值,如"cooking",并输出属性总数1。
|
5月前
|
数据采集 存储 编解码
技术笔记:Node.jsmm131图片批量下载爬虫1.01增加断点续传功能
技术笔记:Node.jsmm131图片批量下载爬虫1.01增加断点续传功能
95 0