《图机器学习》-Node Embeddings
创始人
2024-05-09 22:40:54
0

Node Embeddings

  • 一、Graph Representation Learning
  • 二、Node Embeddings:Encoder and Decoder
  • 三、Random Walk Approaches for Node Embeddings

一、Graph Representation Learning

在传统的图机器学习中,依赖于手工特征工程(即由特征工程师去设计节点、边、图的features);给定一个输入图,依靠人工去提取节点、链接和图级特征,学习将特征映射到标签的模型(SVM、神经网络等)。流程表示如下图:

在这里插入图片描述

为了去掉手工特征工程这一步,提出了图表示学习(Graph Representation Learning);换句话说:图表示学习移除了每次都进行特征工程的需要。

在这里插入图片描述

Graph Representation Learning的目标:
输入一张图GGG,能够学习一个函数fff将节点vvv映射到一个ddd维的空间。即将图GGG嵌入到一个ddd维空间。

在这里插入图片描述

这个映射后的ddd维向量称为feature representation或embedding。


Embedding的任务:
将节点映射到embedding space中,即将节点统一映射到一个ddd维空间。

  • 嵌入后,在ddd维空间中节点间的相似性能够表示节点在图中的相似性。

    • 如:将一个简单网络映射到二维空间中,在二维空间中相同类的节点在距离上是比较接近的。
      在这里插入图片描述
  • 可以使用Encode network来实现映射

  • 映射后的ddd维向量可以直接用于下游任务的预测

    • 在这里插入图片描述
  • 第一小节主要讲的是,希望能够避免人工的去设计feature,而是由模型自动完成。所以提出了Graph Representation Learning,任务是输入一张图的信息,如邻接矩阵,然后通过模型(编码器)将图GGG的节点映射到一个新的空间,在使用这个节点在新空间所代表的向量来实现实际的任务。
  • 上述内容不理解,可以先看一下吴恩达老师的词嵌入视频,都是类似的。【笔记指路】

二、Node Embeddings:Encoder and Decoder

假设我们有一张图GGG:

  • VVV是顶点集
  • AAA是邻接矩阵

在这里插入图片描述

节点嵌入的目标:
对节点进行编码,以便嵌入空间中的相似性接近图中的相似性;

如下图,在图上的相似度在新的嵌入空间中也能够体现。
在这里插入图片描述

在embedding space上的相似度可以使用向量的内积来表示,所以我们的目标可写成:
similarity(u,v)≈zvTzusimilarity(u,v)≈z_v^Tz_usimilarity(u,v)≈zvT​zu​
在这里插入图片描述

为什么内积可作为新空间的相似度度量?(个人见解)
每个节点都在新空间上都由一个ddd维的向量表示,向量的每个原始都表示节点的一个属性,该属性越明显,则该值就越大。若两个节点之间都具有这个属性,那么内积的结果就会越大。(类似CNN的卷积)


学习节点嵌入的方法:

  • 训练一个编码器(Encoder,ENC)将节点映射到embedding space
  • 定义一个节点相似度函数(即原始网络中相似度的度量)
  • 训练一个解码器(Decoder,DEC)将embeddings映射为相似度得分
  • 优化编码器的参数,使:
    similarity(u,v)≈zvTzusimilarity(u,v)≈z_v^Tz_usimilarity(u,v)≈zvT​zu​

个人理解:
内积可能不是能够很好的表示两个节点在新空间的相似度,所以训练了一个解码器用于输出两节点在新空间的相似性,上式可写成:
similarity(u,v)≈DEC(zvTzu)similarity(u,v)≈DEC(z_v^Tz_u)similarity(u,v)≈DEC(zvT​zu​)


实际运用中,先定义一个矩阵Z∈Rd×∣V∣Z∈R^{d\times |V|}Z∈Rd×∣V∣,ddd维表示embedding space的维度,∣V∣|V|∣V∣表示节点的数量。即ZZZ中的每一列都代表这一个节点的embedding。

在这里插入图片描述

对于原始图中的节点表示,可以使用one-hot编码来表示;在我们训练模型学习到最佳的矩阵ZZZ后,编码器只是一个嵌入查找:

ENC(v)=zv=Z⋅vENC(v)=z_v=Z\cdot vENC(v)=zv​=Z⋅v

这种方式的缺点:
ZZZ的维度与节点数成正比,因此难以运用于大图中。

获取矩阵ZZZ的方式有很多种,经典的有:

  • Deep Walk
  • node2vec

三、Random Walk Approaches for Node Embeddings

符号规定:

  • zuz_uzu​:
    一个列向量,表示节点u的u的u的embeddingembeddingembedding

  • P(v∣zu):P(v|z_u):P(v∣zu​):
    从uuu节点开始随机游走,游走过程中遍历到vvv节点的(预测的)概率。

  • σ(z)σ(z)σ(z)
    Softmax函数,σ(z)[i]=ez[i]∑j=1Kez[j]σ(z)[i]=\frac{e^{z[i]}}{\sum_{j=1}^{K}e^{z[j]}}σ(z)[i]=∑j=1K​ez[j]ez[i]​

  • S(x)S(x)S(x):
    Sigmoid函数,S(x)=11+e−xS(x)=\frac{1}{1+e^{-x}}S(x)=1+e−x1​


RandomWalk:Random\ Walk:Random Walk:

给定一个图和一个起点,随机选择它的一个邻居,并移动到这个邻居;然后我们随机选择这个点的一个邻居,并移动到它,迭代进行下去。以这种方式访问的点的(随机)序列成为在图上的随机游走。

在这里插入图片描述


随机游走路径上的节点在图中的距离是比较近的,所以相似度会较大,则路径上的顶点对的embedding内积也会相对较大,而embedding的内积是节点对在embedding space上的相似度。

因此可以得到下式:

zuTzv≈u和v节点共同出现在一条随机游走路径上的概率z_u^Tz_v≈u和v节点共同出现在一条随机游走路径上的概率zuT​zv​≈u和v节点共同出现在一条随机游走路径上的概率

我们希望出现在一条随机游走路径上的节点对的embedding的内积值会较大。


Random-Walk Embeddings流程:

  • 估计从节点uuu为起点,以随机行走策略RRR随机行走中访问节点vvv的概率PR(v∣u)P_R(v|u)PR​(v∣u)
    在这里插入图片描述

  • 优化embeddings以最大化PR(v∣u)P_R(v|u)PR​(v∣u),优化embeddings的过程也相当于优化encoder了。
    在这里插入图片描述


WhyRandomWalks?Why\ Random\ Walks?Why Random Walks?

  • Expressivity:
    节点相似度的定义灵活随机,且结合了局部和高阶邻域的节点信息。

    • Idea:
      如果从节点u开始的随机游走以高概率访问v,则u和v相似(高阶多跳信息)
  • Efficiency:
    训练时不需要考虑所有节点对;只需要考虑在随机行走中同时出现的对


Random-Walk来寻找Node Embeddings,可以看作是一个半监督的feature learning。

  • 目标:
    找到在d维空间中保留相似性的节点嵌入。

  • 要求:
    学习Node Embeddings,使图中邻近的节点在d维空间中靠得很近

给定一个节点uuu,如何定义uuu在图中的邻近的节点呢?

以uuu为起点,用随机游走策略RRR进行游走,过程中访问到的节点可以当作uuu的邻近节点NR(u)N_R(u)NR​(u)。


embedding feature的优化:

  • 给定一个图G(V,E)G(V,E)G(V,E)

  • 我们的目标是学习一个映射函数f:u→Rd:f(u)=zuf:u→R^d:f(u)=z_uf:u→Rd:f(u)=zu​

  • Log-likelihood objective:
    在这里插入图片描述

    • NR(u)N_R(u)NR​(u):以游走策略RRR游走uuu的邻近节点
    • 该式含义(个人理解):
      邻近节点在原始图中距离较近,相似度会较大。在新的空间中,希望能够保持这个信息。P(NR(u)∣Zu)P(N_R(u)|Z_u)P(NR​(u)∣Zu​)通过d维空间的向量zuz_uzu​来预测邻近节点出现在随机游走路径上的概率,希望这个概率越大越好。越大说明我能够通过zuz_uzu​来确定这几个邻近节点,这表明保留了原来的信息。
  • 给定节点u,可以通过预测邻近节点的在随机游走路径中出现的概率来学习u的embedding feature。


RandomWalkOptimization:Random\ Walk\ Optimization:Random Walk Optimization:

  • 使用随机漫步策略R,从图中的每个节点uuu开始运行较短的固定路径长度的随机游走。

  • 对每个顶点uuu,收集其邻近顶点NR(u)N_R(u)NR​(u)

  • 优化embeddings通过:给定一个节点uuu,预测它的邻近节点NR(u)N_R(u)NR​(u)。即最大化下式:
    在这里插入图片描述

  • 定义损失函数:
    上式添加负号,变成最小化,即希望该值越小越好。
    在这里插入图片描述
    最小化LLL,即优化嵌入特征z,以最大化随机游走过程中,uuu和vvv共同出现的可能性

  • 将P(v∣zu)P(v|z_u)P(v∣zu​)使用softmax进行定义:
    在这里插入图片描述
    分母的作用:标准化。
    最大化这个概率,可以理解为,在预测所有顶点对同时出现在同一条游走概率的时候,多分配些概率给uuu和vvv。

  • 综上,我们要最小化的式子为:
    在这里插入图片描述
    优化 random walk embeddings=找到最小化LLL的embeddings zuz_uzu​

  • 采用随机梯度下降最小化函数LLL。


有一个问题:
P(v∣zu)P(v|z_u)P(v∣zu​)定义中,其分母需要遍历整张图的顶点对来计算,代价太大了。

在这里插入图片描述

希望能够采取某种策略计算出一个值,来近似接近这个值。

解决方案:NegtiveSamplingNegtive\ SamplingNegtive Sampling(负采样)

表征学习过程中,应尽量使每个中心节点与其邻居彼此靠近(嵌入向量相似)并远离所有其他节点。其他节点很多 ,为了减少计算成本,负采样 (NS)随机采样少量非邻居节点(负样本),中心节点只需要远离负样本即可。

即随机抽取kkk个样本来进行标准化,替代使用所有顶点对进行标准化。如下图:

在这里插入图片描述

  • 抽样k个负节点,节点的被抽取的概率与其度成比
  • 如何选取kkk?
    • k越高,估计值越可靠
    • k越高,负样本上的偏差bias越高
    • 在实际中,k的选取为5-20

RandomWalkRandom\ WalkRandom Walk策略:

  • 最简单的想法:从每个节点开始进行固定长度、无偏倚的随机行走。
    • 代表:DeepWalk,存在的问题:相似度概念受限
  • node2vecnode2vecnode2vec:
    • 优点:有弹性的网络邻居NR(u)N_R ( u )NR​(u)定义使 uuu的embedding更丰富,因此使用有偏的二阶随机游走策略biased2ndorderrandomwalkbiased\ 2^{nd}\ order\ random\ walkbiased 2nd order random walk以产生NR(u)N_R(u)NR​(u)

node2vec:BiasedWalksnode2vec:Biased\ Walksnode2vec:Biased Walks

思想:
使用灵活的、有偏差的随机游走,可以选择全局游走DFSDFSDFS或者局部游走BFSBFSBFS,生成信息更丰富的embeddings。

在这里插入图片描述

两种生成邻近节点的策略:

全局视角(DFS)和局部视角(BFS),BFS会汇聚局部邻域内节点的信息,而DFS会汇聚更远距离的顶点的信息。如下图:

在这里插入图片描述
BFSvs.DFSBFS\ vs.\ DFSBFS vs. DFS:
在这里插入图片描述

定义两个参数:

  • return parameter ppp:
    回到前一个节点的概率的控制参数
  • in-out parameter qqq:
    往外游走(DFS)和往内游走(BFS)的比值,即选择BFS和DFS的概率的控制参数。

node2vec是一个二阶随机游走策略:
node2vec会记住刚有走过的边(s1,w)(s_1,w)(s1​,w)和现在所处的顶点www。

即每一步游走都会关注两个信息:1.当前位置、2.从哪条路来的。根据这两个信息可以进行下一步决策:

  • 回到之前的位置
  • BFS
  • DFS

在这里插入图片描述

对于下一步随机游走的路径选择,如下图所示:
在这里插入图片描述
为不同的边赋上不同的权重,得到一个未归一化的概率矩阵ProbProbProb,通过将其归一化后根据概率选择其中一条边进行游走。

如果想要BFS-like walk,那么把p的值设小些;
如果想要DFS-like walk,那么把q的值设小些;


node2vec algorithm步骤:

在这里插入图片描述
上面三个步骤都是线性时间的复杂度,且可以独立并行的完成。


相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...