cs224w 图神经网络 学习笔记(七)Message Passing and Node Classification 信息传播与节点分类

本文主要是介绍cs224w 图神经网络 学习笔记(七)Message Passing and Node Classification 信息传播与节点分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程链接:CS224W: Machine Learning with Graphs
课程视频:【课程】斯坦福 CS224W: 图机器学习 (2019 秋 | 英字)

目录

    • 1. 前言
    • 2. 图节点分类的思想——Collective classification
      • 2.1 概述
      • 2.2 Probabilistic Relational Classifier
      • 2.3 Iterative classification
      • 2.4 Loopy belief propagation 环路置信传播

1. 前言

这节课需要解决的问题是:Given a network with labels on some nodes, how do we assign labels to all other nodes in the network? 给定一个网络,网络上的部分节点打好了标签,如何给剩下的节点分配标签?——节点分类问题。

在这里插入图片描述
对于这个问题,我们从网络中的“相关性(Correlations)”开始。首先,先介绍图节点分类的思想——Collective classification,然后介绍三种分类的算法:

  • Relational classification
  • Iterative classification
  • Belief propagation 置信度传播算法

节点分类被应用于很多领域,如:Document classification(文献分类)、Part of speech tagging(词性标注)、Link prediction(链路预测)、Optical character recognition(OCR识别)、Image/3D data segmentation (图像/三维数据分割)、Entity resolution in sensor networks、Spam and fraud detection(垃圾邮件和欺诈检测)等。

2. 图节点分类的思想——Collective classification

2.1 概述

Correlations exist in networks——网络中天生就存在关系。我们先从社交网络看起,个人行为和外部环境的影响是息息相关的,主要有以下三种类型的关系:

Homophily 同质性Influence 影响型Confounding 混合型
在这里插入图片描述在这里插入图片描述在这里插入图片描述
物以类聚,人以群分橘生淮南则为橘,橘生淮北则为枳时势造英雄,英雄造时势

对节点进行分类的一个很重要的想法就是:Guit-by-association——Similar nodes are typically close together or directly connected (相似的节点通常紧密相连或直接连接)。节点 O O O的标签(分类)取决于以下三个因素:

  • Features of O O O 节点 O O O的特征
  • Labels of the objects in O O O's neighborhood 节点 O O O的邻居节点的标签
  • Features of the objects in O O O's neighborhood 节点 O O O的邻居节点的特征

在这里插入图片描述
因此,我们可以将问题进行更加数学化的描述:定义 n × n n \times n n×n矩阵 W W W为图 G G G的邻接矩阵;定义向量 Y = { − 1 , 0 , 1 } n Y=\{-1,0,1\}^n Y={1,0,1}n表示 n n n个节点的标签,由于这里只考虑二分类问题, y i = 0 y_i=0 yi=0为unlabeled node,是待分类的节点, y i = 1 y_i=1 yi=1为positive node, y i = − 1 y_i=-1 yi=1为negtive node。我们需要解决的问题就是unlabeled node中有多少个节点大概率是positive node。

我们引入Markov Assumption(马尔科夫假设)来描述这种内在联系的思想:
P ( Y i ∣ i ) = P ( Y i ∣ N i ) P(Y_i|i)=P(Y_i|N_i) P(Yii)=P(YiNi)

那么,整个问题就转变成计算未知节点 i i i的标签为 Y i Y_i Yi的概率:

在这里插入图片描述

总的来说collective classification包括三个步骤:

(1)Local classifier——用于给节点分配初始标签

  • 通过节点的属性/特点预测节点标签
  • 是一个标准分类任务
  • 因为没有用到网络信息,所以是“本地分类器”

(2)Relational Classifier——基于网络(结构)捕捉节点之间的关系

  • 学习一个分类器,基于节点自身及其邻居节点的属性/特征对节点进行分类
  • 在这一步会使用到网络的信息

(3)Collective Inference——通过网络传播相关性

  • 将Relational Classifier迭代应用于每个节点,直到相邻节点的非一致性最小化为止
  • 实质上,网络的结构会影响到最终的预测

需要说明的是,要精确地完成这些步骤进行推理一个NP难度的问题,只有在网络结构满足特定的条件时,才能得到最精确的结果。所以,在实际应用中,我们主要关注的是近似解法——Relational classifiers/ Iterative classification/ Belief propagation。这些算法都是迭代算法(iterative algorithms)。

2.2 Probabilistic Relational Classifier

基本思想:Class probability of Y i Y_i Yi is a weighted average of class probabilities of its neighbors. P ( Y i ) P(Y_i) P(Yi)是其邻居节点的标签为 Y i Y_i Yi的加权平均。对于已经有标签的节点,其 Y Y Y值就是其真实的标签;对于没有标签的节点,将其 Y Y Y值统一进行初始化。按随机顺序更新所有节点,直到收敛或达到最大迭代次数。

对每个节点 i i i及其标签 c c c,重复进行如下运算(加权平均,权重应该是表示邻居节点对其的影响):
P ( Y i = c ) = 1 ∑ ( i , j ) ∈ E W ( i , j ) ∑ ( i , j ) ∈ E W ( i , j ) P ( Y j = c ) P(Y_i=c)=\frac {1} {\sum_{(i,j) \in E}W(i,j)} \sum_{(i,j) \in E} W(i,j)P(Y_j=c) P(Yi=c)=(i,j)EW(i,j)1(i,j)EW(i,j)P(Yj=c)
其中 W ( i , j ) W(i,j) W(i,j)表示从节点 i i i到节点 j j j的权重。

下面通过一个例子来感受一下这个算法:

步骤具体操作例子
初始化对于已经有标签的节点,其 Y Y Y值就是其真实的标签;对于没有标签的节点,将其 Y Y Y值统一进行初始化。在这里插入图片描述
第一轮迭代随机选择节点3, N 3 = { 1 , 2 , 4 } N_3=\{1,2,4\} N3={1,2,4},则 P ( Y = 1 P(Y=1 P(Y=1| N 3 ) = 1 3 ( 0 + 0 + 0.5 ) = 0.17 N_3)=\frac {1}{3}(0+0+0.5)=0.17 N3)=31(0+0+0.5)=0.17在这里插入图片描述
第一轮迭代随机选择节点4, N 4 = { 1 , 3 , 5 , 6 } N_4=\{1,3,5,6\} N4={1,3,5,6},需要注意的是此时节点3的 P ( Y = 1 ) = 0.17 P(Y=1)=0.17 P(Y=1)=0.17在这里插入图片描述
第一轮迭代随机选择节点5, N 5 = { 4 , 6 , 7 , 8 } N_5=\{4,6,7,8\} N5={4,6,7,8}在这里插入图片描述
第一轮迭代结束在这里插入图片描述
第二轮迭代结束在这里插入图片描述
第三轮迭代结束在这里插入图片描述
第四轮迭代结束在这里插入图片描述
五次迭代后,网络趋于稳定在这里插入图片描述

不过,Probabilistic Relational Classifier算法有两个不足:第一,算法并不能保证收敛;第二,该算法模型并没有使用节点信息。

2.3 Iterative classification

基本思想

通过节点 i i i自身的属性及其邻居节点的标签来进行分类。首先,对每个节点 i i i,定义一个平面向量 α i \alpha_i αi;接着,训练一个基于向量 α i \alpha_i αi的分类器;每个节点都有不同数量的邻居,我们可以根据下面这些指标再进一步进行聚类(aggregate)——count (数量), mode(模式), proportion(比例),mean(均值), exists(存在性), 等等。

基本架构
(1)Bootstrap phase

  • 将每个节点 i i i转换成平面向量 α i \alpha_i αi
  • 使用局部分类器 f ( α i ) f(\alpha_i) f(αi)(例如SVM、kNN等)来得到 Y i Y_i Yi的最佳值

(2)Iteration phase——迭代直至收敛

  • 对每个节点 i i i重复以下操作:更新节点向量 α i \alpha_i αi,根据局部分类器 f ( α i ) f(\alpha_i) f(αi)更新 Y i Y_i Yi的值。
  • 迭代直到标签稳定或达到最大迭代次数

需要指出的是,Iterative classification算法同样不能保证收敛,一般会设置最大迭代次数最为迭代终止的条件。

2.4 Loopy belief propagation 环路置信传播

Belief Propagation 算法(BP算法)是将概率论应用到图结构中的一种动态规划的算法。在迭代过程中,相邻的节点相互交换“信息”(passing message)。当相邻节点“达成共识(When consensus is reached)”,计算最后的置信值(belief)。

在这里插入图片描述
BP算法解决的第一个任务就是传递信息(message passing),传递信息的一个原则是每个节点值接收或传递其邻居节点的信息。

图的样式传递模式
straight line graph(直线图),每个节点只接收传入的消息在这里插入图片描述 在这里插入图片描述
Tree(树结构),每个节点从树的所有分支接收信息在这里插入图片描述

但是,这样的方法无法用于带环的图。

我们再来看一下信息传递的定义——节点 i i i给节点 j j j传递的信息取决于节点 i i i的所有邻居节点 k k k传递给节点 i i i的信息以及每个邻居节点 k k k对节点 i i i目前的置信状态的影响

为此,我们定义以下符号:

  • Label-label potential matrix ψ \psi ψ,表示节点与其邻居之间的依赖关系。 ψ ( Y i , Y j ) \psi_(Y_i,Y_j) ψ(Yi,Yj)为给定节点 i i i处的状态为 Y i Y_i Yi的情况下,节点 j j j处状态为 Y j Y_j Yj的可能性,即 P ( Y j ∣ Y i ) P(Y_j|Y_i) P(YjYi)
  • Prior belief ϕ \phi ϕ ϕ i ( Y i ) \phi_i(Y_i) ϕi(Yi)表示节点 i i i处于状态 Y i Y_i Yi的可能性。
  • m i → j ( Y i ) m_{i \to j}(Y_i) mij(Yi)表示节点 i i i对节点 j j j处于状态 Y j Y_j Yj的估计
  • L \mathcal{L} L是所有状态的集合

Loopy BP算法的步骤如下:

(1)首先将所有的信息初始化为1。

(2)对每个节点重复以下操作:
在这里插入图片描述
m i → j ( Y i ) = α ∑ Y i ∈ L ψ ( Y i , Y j ) ϕ i ( Y i ) ∏ k ∈ N i ∖ j m k → i ( Y i ) m_{i \to j}(Y_i)=\alpha \sum_{Y_i \in \mathcal{L}} {\psi(Y_i,Y_j) \phi_i(Y_i) \prod_{k \in \mathcal{N}_i \setminus j}m_{k \to i}(Y_i)} mij(Yi)=αYiLψ(Yi,Yj)ϕi(Yi)kNijmki(Yi)
在这里插入图片描述
(3)收敛后,可以通过下面这个式子计算节点 i i i处于状态 Y i Y_i Yi的置信度:
在这里插入图片描述
最后是Loopy BP算法的一些优缺点:

在这里插入图片描述

这篇关于cs224w 图神经网络 学习笔记(七)Message Passing and Node Classification 信息传播与节点分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414027

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no