0
点赞
收藏
分享

微信扫一扫

GNN-CS224W: 5 Label Propagation for Node Classification

天行五煞 2022-03-19 阅读 34
人工智能

Task

全文都在解决这一个Task: Given a network with labels on some nodes, how do we assign labels to all other nodes in the network?

本文涉及的是Probabilistic framework,不涉及深度学习。

用到的信息

Classification label of a node v v v in network may depend on

  1. Features of node v v v
  2. Labels of the nodes in v v v’s neighborhood
  3. Features of the nodes in v v v’s neighborhood

semi-supervised

给定了graph中部分node的label,要求预测剩余node的label

训练数据中只有一部分有lable就是半监督

task的应用

  1. Document classification
  2. Part of speech tagging
  3. Link prediction
  4. Optical character recognition
  5. Image/3D data segmentation
  6. Entity resolution in sensor networks
  7. Spam and fraud detection

Markov Assumption

为了简化问题,假设一个node的状态只和与node直接相连的node的状态有关

Collective classification

这里讲Collective classification的意思是本文涉及的具体方法都属于Collective classification,都使用类似的步骤。

Simultaneous classification of interlinked nodes using correlations. 意思是同时给所有node分类就是Collective classification

做Collective classification需要如下 3 steps:

  1. Local Classifier

    作用:Used for initial label assignment

    涉及的信息:only node attributes/features and Does not use network information

    方法:Standard classification task

  2. Relational Classifier

    涉及的信息:用到了node和其 neighbors的label和feature

    作用:用 correlations between nodes 给node重新分类

    方法:也是一个分类器

  3. Collective Inference

    做的事:Apply relational classifier to each node iteratively,Propagate the correlation (将从node correlation中获取的信息一个接一个节点的传到到整个网络中)

    Iterate until the inconsistency between neighboring labels is minimized

方法

方法的Intuition

Correlation: nearby nodes have the same color (belonging to the same class)

下面是node之间有Correlation的原因:

  1. Homophily: The tendency of individuals to associate and bond with similar others,

    例如:物以类聚,人以群分;Researchers who focus on the same research area are more likely to establish a connection;People with the same interest are more closely connected due to homophily

  2. Influence: Social connections can influence the individual characteristics of a person.

    例如:I recommend my musical preferences to my friends, until one of them grows to like my same favorite genres!

这个intuition体现在graph上就是:Similar nodes are typically close together or directly connected in the network。如果两个node直接连接或者距离近,那它们更可能相似。

Relational classifiers

这是一个非常简单的方法,只利用了node之间的邻接关系

Idea: Class probability Y v Y_v Yv of node v v v is a weighted average of class probabilities of its neighbors

步骤:

  1. For labeled nodes v v v , initialize label Y v Y_v Yv with ground-truth label Y v ∗ Y_v^* Yv

  2. For unlabeled nodes, initialize Y v = 0.5 Y_v = 0.5 Yv=0.5

  3. Update all nodes in a random order until convergence or until maximum number of iterations is reached
    update node label的方法如下:
    P ( Y v = c ) = ∑ ( v , u ) ∈ E A v , u P ( Y u = c ) ∑ ( v , u ) ∈ E A v , u P(Y_v = c)=\frac{\sum\limits_{(v,u) \in E} A_{v,u} P(Y_u = c)}{\sum\limits_{(v,u) \in E} A_{v,u}} P(Yv=c)=(v,u)EAv,u(v,u)EAv,uP(Yu=c)

    其中 ( v , u ) ∈ E (v,u) \in E (v,u)E表示节点 v v v的所有边 ( v , u ) (v,u) (v,u) A A A为邻接矩阵, A v , u A_{v,u} Av,u可以是表示连接或不连接的1和0,也可以是边的权重

    这一步要多次迭代graph的所有节点,一次迭代是给所有unlabeled node计算概率。
    问题:权重从哪来?

Convergence is not guaranteed

实现

pytorch geometric 里一次循环的公式为:
Y ′ = α ⋅ D − 1 2 A D − 1 2 Y + ( 1 − α ) Y Y' = \alpha \cdot D^{-\frac{1}{2}} A D^{-\frac{1}{2}} Y + (1-\alpha) Y Y=αD21AD21Y+(1α)Y
其中 D − 1 2 D^{-\frac{1}{2}} D21

Iterative classification

利用了node neighbor’s label,以及 node feature/attributes

两个classifier

  1. ϕ 1 ( f v ) \phi_1 (f_v) ϕ1(fv) = Predict node label based on node feature vector f v f_v fv

    作用是给unlabeled node指定一个相对靠谱的初始label,仅仅使用一次

  2. ϕ 2 ( f v , z v ) \phi_2 (f_v, z_v) ϕ2(fv,zv) = Predict label based on node feature vector f v f_v fv and summary z v z_v zv of labels of v v v’s neighbors.

    z v z_v zv 是 node v v v 邻居的 label 的 summary,定义 z v z_v zv的方法可以有很多,核心是要对neighbor 的label 做summary,例如如下几种方法

    1. Histogram(直方图) of the number (or fraction) of each label in N v N_v Nv (用一个向量表示 N v N_v Nv中各个label的数量)
    2. Most common label in N v N_v Nv

    这个分类器的作用和Relational classifiers里的计算邻接节点label的概率是一样的,区别是还利用了node feature

    每一次迭代都要用到

方法

  1. 用labeled node 数据 train classifier ϕ 1 ( f v ) \phi_1 (f_v) ϕ1(fv)
  2. ϕ 1 ( f v ) \phi_1 (f_v) ϕ1(fv)预测unlabeled node 的 Y v Y_v Yv
  3. 计算所有节点的 z v z_v zv
    包括labeled node和unlabeled node,labeled和unlabeled node的neighbor都即可能是labeled,也可能是unlabeled
  4. 用labeled node的 f v f_v fv z v z_v zv训练分类器 ϕ 2 ( f v , z v ) \phi_2 (f_v, z_v) ϕ2(fv,zv)
  5. ϕ 2 ( f v , z v ) \phi_2 (f_v, z_v) ϕ2(fv,zv)预测unlabeled node 的 Y v Y_v Yv
  6. 更新所有节点的 z v z_v zv
  7. 重复4、5、6直到 class labels stabilize or max number of iterations is reached

Convergence is not guaranteed

如果随着迭代不收敛,则定义一个最多的迭代次数,到了就停,迭代次数一般不是很大,可以选择选择10、50、100等

Loopy belief propagation

这个方法课程里只是粗略的讲解了,很多细节没讲清楚。这个方式是概率图模型,不涉及深度学习,有可能是一种比较早的方法,现在可能会有更好的方法,所以暂时先不看更多的细节,有需要了再回来看。

Loopy表示可能会应用在有环的图上

方法是用来计算graph的节点属于某个类别的概率

计算

belief

当迭代完成后可以按如下方法计算各个node属于各个label的belief

B e l i e f b ( Y i ) = ϕ b ( Y i ) ∏ k ∈ N b m k → b ( Y i ) Belief_b(Y_i)=\phi_b(Y_i)\prod\limits_{k\in N_b}m_{k \rightarrow b}(Y_i) Beliefb(Yi)=ϕb(Yi)kNbmkb(Yi)

B e l i e f b ( Y i ) Belief_b(Y_i) Beliefb(Yi)表示node b属于label Y i Y_i Yi的belief

Prior belief ϕ b ( Y i ) \phi_b(Y_i) ϕb(Yi): 先验的belief,值的大小表示节点 b b b属于label Y i Y_i Yi的可能性,不是概率,值大小正比于概率

m k → b ( Y i ) m_{k \rightarrow b}(Y_i) mkb(Yi): node k 传递给 node b的message,message代表了node k 对 node b属于label Y i Y_i Yi 可能性的估计,可能性越大则值越大

  1. neighbor对节点属于某个label的estimate越大,则belief越大
  2. node的对某个label的prior belief越大,则belief 越大

message

计算node a 传递给 node b的message时,对所有 Y j ∈ L Y_j \in \mathcal{L} YjL ( L \mathcal{L} L is the set of all classes/labels),计算下式:
m a → b ( Y j ) = ∑ Y i ∈ L ψ ( Y i , Y j ) ϕ a ( Y i ) ∏ k ∈ N a \ b m k → a ( Y i ) m_{a \rightarrow b}(Y_j)=\sum\limits_{Y_i \in \mathcal{L}}\psi(Y_i, Y_j) \phi_a(Y_i) \prod\limits_{k\in N_a \backslash b}m_{k \rightarrow a}(Y_i) mab(Yj)=YiLψ(Yi,Yj)ϕa(Yi)kNa\bmka(Yi)

Label-label potential matrix ψ \psi ψ:

  1. 一个size为(label_num, label_num)的矩阵,用来代表两个节点之间的label的条件概率,
  2. ψ ( Y i , Y j ) \psi(Y_i, Y_j) ψ(Yi,Yj)大小代表了node的neighbor 的label是 Y i Y_i Yi的情况下node的label是 Y j Y_j Yj的可能性,
  3. ψ ( Y i , Y j ) \psi(Y_i, Y_j) ψ(Yi,Yj)不是概率,但是值正比于概率,条件概率越大,值越大
  4. ψ \psi ψ和具体的节点无关,表示的是两个label之间的条件概率
  5. ψ \psi ψ对角线上的元素会很大,因为对角线元素表示两个node属于同一个类别,即邻居具有某个类别,自己也更有可能属于这个类别

k ∈ N a \ b k\in N_a \backslash b kNa\b表示除去b以外的node a的neighbor


理解:

  1. ψ ( Y i , Y j ) \psi(Y_i, Y_j) ψ(Yi,Yj) ϕ a ( Y i ) \phi_a(Y_i) ϕa(Yi) ∏ k ∈ N a m k → a ( Y i ) \prod\limits_{k\in N_a}m_{k \rightarrow a}(Y_i) kNamka(Yi)三部分都不是概率,但是和概率成正比,
    1. ∏ k ∈ N a m k → a ( Y i ) \prod\limits_{k\in N_a}m_{k \rightarrow a}(Y_i) kNamka(Yi) ϕ a ( Y i ) \phi_a(Y_i) ϕa(Yi)越大,node a属于label Y i Y_i Yi的可能性越大
    2. ψ ( Y i , Y j ) \psi(Y_i, Y_j) ψ(Yi,Yj)越大node b属于label Y j Y_j Yj可能性越大
    3. 三项合起来就是node a属于label Y i Y_i Yi的可能性以及由此带来的node b属于label Y j Y_j Yj可能性
  2. ∑ Y i ∈ L \sum\limits_{Y_i \in \mathcal{L}} YiL表示遍历node a属于所有可能label的情况,并将所有情况导致的node b属于label Y j Y_j Yj可能性求和,得到node a对于node b属于label Y j Y_j Yj的影响
  3. 一个node传给另一个node的message包括label num个值,表示对接收node属于各个label的belief 的estimate

计算方式

  1. Initialize all messages to 1
  2. Repeat for each node

计算完成后即可得到 B e l i e f b ( Y i ) Belief_b(Y_i) Beliefb(Yi)

  1. Start from arbitrary nodes
  2. Follow the edges to update the neighboring nodes

问题:

  1. 计算方式不够清楚,message怎么初始化为1?一个node给另一个node属于各个label的belief 的estimate都为1?
  2. 先验概率怎么得到?Label-label potential matrix怎么得到?
  3. 要迭代超过1遍吗?
  4. node feature是怎么利用的?
  5. node之间的边是怎么利用的?

其他

不保证收敛,尤其是有环时

有环时因为会不停的循环,所以环内会增强,belief 可能不会收敛

但是可以应用在有环的情况

面对实际的复杂问题时,Loopy BP 是一个很好的启发式方法,因为实际的数据会有很多树型,环形较少,所以影响较小

不保证收敛,所以trick是运行少量的step

问题

  1. i传给j的信息为什么可以估计j属于什么类别?
  2. 需要迭代吗?还是只要计算一轮?
  3. 需要找一个明确的例子推导一遍来理解
  4. 试着比较一下baysian belief network和本方法的异同
  5. 思考一下知识网络里有的知识点掌握了,有的没有,是不是可以用这个方法?

问题

  1. 如何定义convergence?
    node的值在2次迭代中不变或者变化小于阈值,或者node的label不再变化
举报

相关推荐

0 条评论