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
- Features of node v v v
- Labels of the nodes in v v v’s neighborhood
- Features of the nodes in v v v’s neighborhood
semi-supervised
给定了graph中部分node的label,要求预测剩余node的label
训练数据中只有一部分有lable就是半监督
task的应用
- Document classification
- Part of speech tagging
- Link prediction
- Optical character recognition
- Image/3D data segmentation
- Entity resolution in sensor networks
- 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:
-
Local Classifier
作用:Used for initial label assignment
涉及的信息:only node attributes/features and Does not use network information
方法:Standard classification task
-
Relational Classifier
涉及的信息:用到了node和其 neighbors的label和feature
作用:用 correlations between nodes 给node重新分类
方法:也是一个分类器
-
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的原因:
-
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
-
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
步骤:
-
For labeled nodes v v v , initialize label Y v Y_v Yv with ground-truth label Y v ∗ Y_v^* Yv∗
-
For unlabeled nodes, initialize Y v = 0.5 Y_v = 0.5 Yv=0.5
-
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)∈E∑Av,u(v,u)∈E∑Av,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′=α⋅D−21AD−21Y+(1−α)Y
其中
D
−
1
2
D^{-\frac{1}{2}}
D−21
Iterative classification
利用了node neighbor’s label,以及 node feature/attributes
两个classifier
-
ϕ 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 ( 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,例如如下几种方法
- Histogram(直方图) of the number (or fraction) of each label in N v N_v Nv (用一个向量表示 N v N_v Nv中各个label的数量)
- Most common label in N v N_v Nv
这个分类器的作用和Relational classifiers里的计算邻接节点label的概率是一样的,区别是还利用了node feature
每一次迭代都要用到
方法
- 用labeled node 数据 train classifier ϕ 1 ( f v ) \phi_1 (f_v) ϕ1(fv)
- 用 ϕ 1 ( f v ) \phi_1 (f_v) ϕ1(fv)预测unlabeled node 的 Y v Y_v Yv
- 计算所有节点的
z
v
z_v
zv
包括labeled node和unlabeled node,labeled和unlabeled node的neighbor都即可能是labeled,也可能是unlabeled - 用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)
- 用 ϕ 2 ( f v , z v ) \phi_2 (f_v, z_v) ϕ2(fv,zv)预测unlabeled node 的 Y v Y_v Yv
- 更新所有节点的 z v z_v zv
- 重复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)k∈Nb∏mk→b(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) mk→b(Yi): node k 传递给 node b的message,message代表了node k 对 node b属于label Y i Y_i Yi 可能性的估计,可能性越大则值越大
- neighbor对节点属于某个label的estimate越大,则belief越大
- node的对某个label的prior belief越大,则belief 越大
message
计算node a 传递给 node b的message时,对所有
Y
j
∈
L
Y_j \in \mathcal{L}
Yj∈L (
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)
ma→b(Yj)=Yi∈L∑ψ(Yi,Yj)ϕa(Yi)k∈Na\b∏mk→a(Yi)
Label-label potential matrix ψ \psi ψ:
- 一个size为(label_num, label_num)的矩阵,用来代表两个节点之间的label的条件概率,
- ψ ( 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的可能性,
- ψ ( Y i , Y j ) \psi(Y_i, Y_j) ψ(Yi,Yj)不是概率,但是值正比于概率,条件概率越大,值越大
- ψ \psi ψ和具体的节点无关,表示的是两个label之间的条件概率
- ψ \psi ψ对角线上的元素会很大,因为对角线元素表示两个node属于同一个类别,即邻居具有某个类别,自己也更有可能属于这个类别
k ∈ N a \ b k\in N_a \backslash b k∈Na\b表示除去b以外的node a的neighbor
理解:
-
ψ
(
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)
k∈Na∏mk→a(Yi)三部分都不是概率,但是和概率成正比,
- ∏ k ∈ N a m k → a ( Y i ) \prod\limits_{k\in N_a}m_{k \rightarrow a}(Y_i) k∈Na∏mk→a(Yi)和 ϕ a ( Y i ) \phi_a(Y_i) ϕa(Yi)越大,node a属于label Y i Y_i Yi的可能性越大
- ψ ( Y i , Y j ) \psi(Y_i, Y_j) ψ(Yi,Yj)越大node b属于label Y j Y_j Yj可能性越大
- 三项合起来就是node a属于label Y i Y_i Yi的可能性以及由此带来的node b属于label Y j Y_j Yj可能性
- ∑ Y i ∈ L \sum\limits_{Y_i \in \mathcal{L}} Yi∈L∑表示遍历node a属于所有可能label的情况,并将所有情况导致的node b属于label Y j Y_j Yj可能性求和,得到node a对于node b属于label Y j Y_j Yj的影响
- 一个node传给另一个node的message包括label num个值,表示对接收node属于各个label的belief 的estimate
计算方式
- Initialize all messages to 1
- Repeat for each node
计算完成后即可得到 B e l i e f b ( Y i ) Belief_b(Y_i) Beliefb(Yi)
- Start from arbitrary nodes
- Follow the edges to update the neighboring nodes
问题:
- 计算方式不够清楚,message怎么初始化为1?一个node给另一个node属于各个label的belief 的estimate都为1?
- 先验概率怎么得到?Label-label potential matrix怎么得到?
- 要迭代超过1遍吗?
- node feature是怎么利用的?
- node之间的边是怎么利用的?
其他
不保证收敛,尤其是有环时
有环时因为会不停的循环,所以环内会增强,belief 可能不会收敛
但是可以应用在有环的情况
面对实际的复杂问题时,Loopy BP 是一个很好的启发式方法,因为实际的数据会有很多树型,环形较少,所以影响较小
不保证收敛,所以trick是运行少量的step
问题
- i传给j的信息为什么可以估计j属于什么类别?
- 需要迭代吗?还是只要计算一轮?
- 需要找一个明确的例子推导一遍来理解
- 试着比较一下baysian belief network和本方法的异同
- 思考一下知识网络里有的知识点掌握了,有的没有,是不是可以用这个方法?
问题
- 如何定义convergence?
node的值在2次迭代中不变或者变化小于阈值,或者node的label不再变化