图的结构熵
What Is The Problem ?
衡量图的熵值有好多种方式,比如吉布斯熵、香农熵、冯·诺依曼熵等。
如果我们通过一个网络模型去优化得到一个图模型,那么这个图模型的熵可以这么算:
H S = − ∑ G ∈ S p ( G ) l o g p ( G ) H_S=-\sum_{G\in S}p(G)logp(G) HS=−∑G∈Sp(G)logp(G), 称为:网络模型的结构熵(Structural Entropy of Models of Networks)
其中: p ( G ) p(G) p(G) 是图 G G G (更准确地说,是指同构集合)的概率; S S S 是一个同构集合的集合,即 S S S 中的元素(是一个同构集合)都是同构 (isomorphic) 的,需要注意的是,一个空间中的所有同构集合构成空间的一个分划 (partition).
这样,不难理解 H s H_s Hs 的计算分为以下步骤:
- 去结构化: 定义 G G G 的概率分布,可以用度 (degree) 的概率分布,也可以用距离的概率分布等
- 香农信息: I = H ( p ) I=H(p) I=H(p)
- 图的信息:就是 I I I.
那么问题来了,这个衡量方式 (metric) 有很多问题:
- 去结构化:丢失了图的结构信息!
- 香农信息:从一个简单的数字 I I I 上,我们能够得到的信息是很有限的
如何解决呢?
At The Beginning
Graph
在解决问题前,我们先规定好一些假定。
- 图是结构化的,但是有噪音
- 图是演化(迭代优化)来的
- 图的演化(迭代优化)由一些准则 (rules)控制
- 图的演化(迭代优化)也会带有随机变动 (random variations)
Goals
我们要解决的目标是:
- 如何表示图的演化(迭代优化)的随机性?
- 图是由 rules 和 random variations 联合作用生成的,如何确切地提取由 rules 控制生成的部分?
- 我们可以区分这两个部分吗?即分别由 rules 和 random variations 生成了两个部分。
Structural Entropy
原论文中的内容很多,很复杂,这里删繁就简,就其中的精华的主体的部分做一个简单的总结。
One-Dimensional
连通无向等权重
我们从一维开始。给定一个图,每个节点是一维的,共有 n n n 个节点。先讨论最简单的情况:连通无向等权重图:连通图 + 无向边 + 所有边等权重。
在图上进行一个随机游走(Random Walk),这就是一个马尔可夫链了。因为等权重,这个马尔可夫链的转移概率就是均分的。有一个定理是这样的:对于连通无向图来说,这个马尔可夫链必定存在一个稳定的分布。我们就假设到达这个稳定分布就好了,不考虑过渡分布。
这个稳定分布是什么呢?通过细致平稳条件很容易就能证明:
p i = d i 2 m , i = 1 , 2 , . . . , n p_{i}=\frac{d_{i}}{2 m}, i={1, 2, ..., n} pi=2mdi,i=1,2,...,n
自然地,可以想到用熵来表示这个结构信息。
H 1 ( G ) = H ( p ) = H ( d 1 2 m , … , d n 2 m ) = − ∑ i = 1 n d i 2 m ⋅ log 2 d i 2 m . \begin{aligned} \mathcal{H}^{1}(G) &=H(\mathbf{p})=H\left(\frac{d_{1}}{2 m}, \ldots, \frac{d_{n}}{2 m}\right) \\ &=-\sum_{i=1}^{n} \frac{d_{i}}{2 m} \cdot \log _{2} \frac{d_{i}}{2 m} . \end{aligned} H1(G)=H(p)=H(2md1,…,2mdn)=−i=1∑n2mdi⋅log22mdi.
i i i 是节点下标, m m m 是边的数量, d i d_i di 是节点的度。
这个公式也叫 位置熵 (positioning entropy).
连通无向带权重
接下来扩展到带权值的情况,其实很简单,只需要改变一下 d i d_i di 与 m m m
对于节点 u u u : d u = ∑ v ∈ N ( u ) w ( ( u , v ) ) d_{u}=\sum_{v \in N(u)} w((u, v)) du=∑v∈N(u)w((u,v)) ,这里 w ( ⋅ , ⋅ ) w(·,·) w(⋅,⋅) 是边的权重, N ( u ) N(u) N(u) 是邻居。
对于总和 m m m : V o l ( G ) = ∑ v ∈ V d v Vol(G) = \sum_{v\in V}d_v Vol(G)=∑v∈Vdv
这个时候的 p i p_i pi : p u = d u vol ( G ) p_{u}=\frac{d_{u}}{\operatorname{vol}(G)} pu=vol(G)du
所以总的来说变化不大:
H 1 ( G ) = H ( p ) = H ( d 1 vol ( G ) , … , d n vol ( G ) ) = − ∑ i = 1 n d i vol ( G ) log 2 d i vol ( G ) \begin{aligned} \mathcal{H}^{1}(G) &=H(\mathbf{p})=H\left(\frac{d_{1}}{\operatorname{vol}(G)}, \ldots, \frac{d_{n}}{\operatorname{vol}(G)}\right) \\ &=-\sum_{i=1}^{n} \frac{d_{i}}{\operatorname{vol}(G)} \log _{2} \frac{d_{i}}{\operatorname{vol}(G)} \end{aligned} H1(G)