CS224W Lecture5笔记

news/2024/7/20 20:20:23 标签: 算法, 深度优先

Message Passing and Node Classification

lecture 5主要介绍的是一种用于结点分类的Framework: Message Passing。在结点分类中,我们的任务其实是semi-supervised:已知部分结点的label,预测未知结点的label。而Message Passing是一种利用了图的同质性的模型,简言之,就是通过neighbor来预测未知结点,遵循的思想就类似于“近朱者赤近墨者黑”

Homophily

Message Passing框架的前提假设就是Homophily: Individuals have tendency to associate with similar others,比如有相同爱好的人相互之间联系更紧密、在同一个领域做研究的人相互之间认识的可能性更大等等。

在这里插入图片描述

上面这张图就是一个例子。那么反过来,个体之间的联系也会对个体产生影响。基于以上两点,我们就可以设计Message Passing的模型了。

Collective Classification

lecture中介绍的方法叫做collective classification。collective classification是一种利用结点之间correlation的概率模型,它通常分为三个部分:

  • Local Classifier:用于给每个结点赋一个initial label
  • Relational Classifier:用于捕获结点之间的correlation
  • Collective Inference:用于在网络中传递Relational Classifier所获取到的correlation

具体来说,有三种不同的模型:

  1. Relational Classification
  2. Iterative Classification
  3. Belief Propagation

Relational Classification

Relational Classification是最简单的一种,它的核心思想就是对结点的neighbor取一个平均。对于每个结点 u u u和label c(二分类, c ∈ { 0 , 1 } c \in \{0,1\} c{0,1}), u u u的label Y u Y_u Yu等于 c c c的概率为:
p ( Y u = c )   =   1 ∑ ( u , v ) ∈ E A u v ∑ ( u , v ) ∈ E A u v p ( Y v = c ) p(Y_u=c)\ =\ \frac{1}{\sum_{(u,v) \in E}{A_{uv}}}\sum_{(u,v) \in E}A_{uv}p(Y_v=c) p(Yu=c) = (u,v)EAuv1(u,v)EAuvp(Yv=c)
但是这个方法是不能保证一定converge,并且很明显这里没有用到任何结点的feature。

Iterative Classification

Iterative Classification做了一些改进,它将node feature考虑进来,因此我们现在是基于结点特征 f u f_u fu和结点类别 z u z_u zu(这里的 z u z_u zu也是一个vector,计算的方式有很多,可以自行设置,比如 N u N_u Nu中每种label的数量等)进行分类。我们训练两个分类器 ϕ 1 , ϕ 2 \phi_1,\phi_2 ϕ1,ϕ2 ϕ 1 \phi_1 ϕ1的输入是node feature f u f_u fu,输出是label,因此 ϕ 1 \phi_1 ϕ1的作用是根据node feature预测label; ϕ 2 \phi_2 ϕ2的输入是node feature f u f_u fu和邻居label summary z u z_u zu,输出也是label,因此 ϕ 2 \phi_2 ϕ2的作用是根据 f u f_u fu z u z_u zu来预测label。算法分为两个阶段:

  1. Phase 1:在训练集上,我们训练这两个分类器 ϕ 1 \phi_1 ϕ1 ϕ 2 \phi_2 ϕ2
  2. Phase 2:在测试集上,我们把 ϕ 1 \phi_1 ϕ1当作Local Classifier,用于给待预测结点赋初始标签;把 ϕ 2 \phi_2 ϕ2当作Relational Classifier,结合每个结点的邻居的label summary z u z_u zu u u u的label进行更新。每次更新过后,不要忘记更新收到影响的 z z z。不断重复迭代直至收敛。

这种方法解决了Relational Classification中没有利用node feature的问题,但依然无法保证收敛。

Belief Propagation

Belief Propagation is a dynamic programming approach to answering probability queries in a graph (e.g. probability of node 𝑣 belonging to class 1)

Belief Propagation 更多是在考虑结点之间的“交流”。首先明确几个概念:

  • label-to-label potential matrix ψ \psi ψ: ψ ( Y i , Y j ) \psi(Y_i,Y_j) ψ(Yi,Yj)正比于已知 i i i的邻居结点 j j j的label为 Y j Y_j Yj i i i 的label为 Y i Y_i Yi的概率
  • Prior belief ϕ \phi ϕ ϕ ( Y i ) \phi(Y_i) ϕ(Yi)正比于结点 i i i的label为 Y i Y_i Yi的概率(类似于先验)
  • m i → j ( Y j ) m_{i \rightarrow j}(Y_j) mij(Yj):表示 i i i对于 j j j的label为 Y j Y_j Yj的信息/估计

在这里插入图片描述

以上图的结构为例,此时我们要预测的结点为 j j j,我们的转移方程为:
m i → j ( Y j )   =   ∑ Y i ψ ( Y j , Y i ) ϕ ( Y i ) ∏ k ∈ N ( i ) − { j } m k → i ( Y i ) m_{i \rightarrow j}(Y_j)\ =\ \sum_{Y_i} \psi(Y_j, Y_i)\phi(Y_i)\prod_{k \in N(i)-\{j\}}m_{k \rightarrow i}(Y_i) mij(Yj) = Yiψ(Yj,Yi)ϕ(Yi)kN(i){j}mki(Yi)
式子中 ϕ ( Y i ) ∏ k ∈ N ( i ) − { j } m k → i ( Y i ) \phi(Y_i)\prod_{k \in N(i)-\{j\}}m_{k \rightarrow i}(Y_i) ϕ(Yi)kN(i){j}mki(Yi)这一项其实就是结点 i i i label为 Y i Y_i Yi的一个总信息(概率),因此这里的 ψ ( Y j , Y i ) \psi(Y_j,Y_i) ψ(Yj,Yi)可以看作是一个transition probability

收敛后,我们就可以计算每个结点不同label的belief:
b u ( Y u )   =   ϕ ( Y u ) ∏ v ∈ N ( u ) m v → u ( Y u )           Y u   ∈ { Y 1 , Y 2 , … , Y m } b_u(Y_u) \ =\ \phi(Y_u)\prod_{v \in N(u)}m_{v \rightarrow {u}}(Y_u) \ \ \ \ \ \ \ \ \ Y_u \ \in \{Y_1, Y_2, \dots,Y_m\} bu(Yu) = ϕ(Yu)vN(u)mvu(Yu)         Yu {Y1,Y2,,Ym}
从转移方程我们可以看出,我们做了条件独立性假设,也就是neighbor对于当前节点的信息传递是互相独立的。因此,BP在遇到的时候会失效


http://www.niftyadmin.cn/n/1241181.html

相关文章

Day638.IO文件操作问题 -Java业务开发常见错误

IO文件操作问题 Hi,阿昌来也,今天学习记录的是关于Java针对IO文件操作可能会出现的问题:编码不一致、资源关闭、缓冲区。 如果你对文件操作相关的 API 不够熟悉,可以查看官方API地址。 一、文件读写需要确保字符编码一致 一个案…

C语言LNK2019错误怎么解决,LNK2019错误c未解析的外部符号

我收到了以下错误消息:错误1错误LNK2019:未解析的外部符号“public:void __thiscall ArrayIntStorage :: sortOwn(void)”(?sortOwn ArrayIntStorage QAEXXZ)在函数_main G中引用:\ 08227 \ ACW \ MAIN \ 08227_ACW2…

C语言坐标黑白棋,C语言黑白棋游戏[转载]

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼else if(k75&&x>100) {CoverBlock(x,y);x-10;PicBlock(x,y);}else if(k72&&y>100) {CoverBlock(x,y);y-10;PicBlock(x,y);}else if(k80&&y<290) {CoverBlock(x,y);y10;PicBlock(x,y);}else if(k1…

CS224W Lecture6-8笔记

Graph Neural Network lecture 6,7,8详细介绍了图表示学习中的深度学习方法。之前介绍过Node Embedding&#xff0c;但是都是基于一些很“shallow”的特征&#xff0c;GNN可以帮助我们更高效地学习到更好的node、link、graph embedding。课程中所讲到的GNN都是spatial-based&a…

Day639.序列化和反序列化问题 -Java业务开发常见错误

序列化和反序列化问题 Hi&#xff0c;阿昌来也&#xff0c;今天记录分享学习内容是序列化和反序列化问题 序列化是把对象转换为字节流的过程&#xff0c;以方便传输或存储。反序列化&#xff0c;则是反过来把字节流转换为对象的过程。 在文件 IO问题 的时候&#xff0c;提到…

c语言之编码,C语言编码整理之一

1、内存操作(1)释放内存操作释放内存并将指针置空#define FREE(ptr) if(NULL ! ptr) \free(ptr); \ptr NULL;(2)内存操作memcpymemsetmemmovemalloccallocmemcmp2、c语言整型数和字符串的转换(1)字符串到整型数int atoi(const char *nptr);(2)整型数到字符串&#xff0c;可用s…

洛谷P1031题解

洛谷P1031题解 有N堆纸牌&#xff0c;编号分别为1,2,…,N。每堆上有若干张&#xff0c;但纸牌总数必为N的倍数。可以在任一堆上取若干张纸牌&#xff0c;然后移动。 移牌规则为&#xff1a;在编号为1堆上取的纸牌&#xff0c;只能移到编号为2的堆上&#xff1b;在编号为NN的堆上…

c语言常用知识点,C语言常用知识点

C语言条件预处理命令1 /*2 格式&#xff1a;3 #ifdef 标识符4 程序15 #else6 程序27 #endif8 标识符已经定义时&#xff0c;程序段1才参加编译9 应用&#xff1a;如调试版本&#xff0c;发行版本&#xff0c;便于调试1011 */12 #include 13 intmain()14 {15 #ifdef ABC // #def…