缘起
一直都对复杂网络非常感兴趣,同时关注一些社会学和历史研究方面,我发现事实上可以用幂律表达的东西除了马太效应这种老掉牙的现象之外还可以更多。
那么在幂律背后到底是什么呢?
如果把幂律当成一个结果而不是一个原因,那它背后一定还有更加深层次的东西。假期读了一本书,书名是《规模》,引发了很多思考,特别是关于三维世界是如何被万物填充的。
如果世界是同质的,那么填充的行为将会是同质的,好吧,我认为这就是背后的原因。
周末写一篇短文,以记之。
首先,我们从幂律成因开始。
幂律成因的一个推导过程
如果你有好奇心,想知道幂律是怎么推导出来的,可能你会在网上搜一些现成的资料来看,然而很多推导步骤让人看了几行就望而却步了,大段大段的迭代,毫无美感。
当然,大段大段整理数学式子是一种必备的数学工程化能力,但对于外行却真的没有可观赏性。
这里我将介绍一种基于 中心场近似(Mean Field Approximations) 的思想,通过 解微分方程 的方式导出幂律的巧妙方法。
幂律的成因目前是众说纷纭,没有定律,我这里是基于其中的 优先依附(Preferential Attachment) 这一说法来推导的。
“依附” 指的是连接一条边。所谓的优先依附,白话说来就是,新加入的网络节点并非个体独立的来做判断要依附到哪个节点,而是先看看已经接入网络的其它节点是如何依附的,然后再稍微加入些自己的判断,决定依附哪个节点。
以 D i D_i Di表示与节点 i i i连接的边的数量,即节点 i i i的Degree,那么网络中现有节点 k k k的被依附权重则为:
W k = D k Σ j = 1 N D j W_k=\dfrac{D_k}{\displaystyle \Sigma_{j=1}^{N}D_j} Wk=Σj=1NDjDk
即 W k W_k Wk越大,新节点依附接入节点 k k k的概率就越大。
为了可以利用微积分这个强大的工具化简推导过程,从而避开繁复冗余的迭代,我们对节点接入的过程做如下模型:
- 节点单独接入:网络中的节点是一个一个独立接入的,接入后便不再变化。
- 中心场近似:跟踪单独节点的接入过程,而不是跟踪网络中的每一个节点的现状。
- 微分化:将节点接入事件置于一个连续的时间段,观测节点接入事件随着时间的变化。
有了上述的模型,便可以展开推导了。
假设每一个新节点加入均接入 1 1 1个旧节点新增 1 1 1条边,那么在时间 t t t,便会加入 t × 1 t\times 1 t×1个节点加入 t × 1 t\times 1 t×1条边,这个时候,整个网络的所有节点的Degree总和即为:
Σ j = 1 N D j = t × 1 × 2 \displaystyle \Sigma_{j=1}^{N}D_j=t\times 1\times 2 Σj=1NDj=t×1×2 【因为一条边新增2个Degree】
现在做另一个假设,这个假设十分重要且精彩,它将引出一个简单的微分方程:
- 假设节点编号
i
i
i随着时间
t
t
t等值单调递增,即时间
t
t
t刻接入节点
i
i
i,且每一个时间
t
t
t仅仅加入一个新节点。
在该假设下,节点 i i i的Degree成了时间的函数: D i ( t ) D_i(t) Di(t)
现在我们知道,在时间 t ( t > i ) t(t>i) t(t>i)刻,节点 i i i已经进入了网络,那么新节点 j ( j > i ) j(j>i) j(j>i)依附于节点 i i i的概率为:
P j − > i = D i ( t ) 2 × t P_{j->i}=\dfrac{D_i(t)}{2\times t} Pj−>i=2×tDi(t) 【其中, t > i , j > i t>i,j>i t>i,j>i】
考虑另一方面, 节点 i i i的Degree的变化率,其实就是新增节点依附于它的概率与新增节点对旧节点新增Degree的乘积, 即:
d D i ( t ) d t = 1 × D i ( t ) t × 2 \dfrac{dD_i(t)}{dt}=1\times \dfrac{D_i(t)}{t\times 2} dtdDi(t)=1×t×2Di(t)【式子1】
解上述微分方程,我们有:
D i ( t ) = ( C × t ) 1 2 D_i(t)=(C\times t)^{\frac{1}{2}} Di(t)=(C×t)21【式子2】
此时我们需要求出 C C C.
考虑到初始条件,节点 i i i在时间 t t t加入,它自己的Degree为 1 1 1,即 D i ( i ) = 1 D_i(i)=1 Di(i)=1,带入式子2,有:
C = 1 i C=\dfrac{1}{i} C=i1
所以:
D
i
(
t
)
=
(
t
i
)
1
2
D_i(t)=(\dfrac{t}{i})^{\frac{1}{2}}
Di(t)=(it)21 【式子3】
式子3意味着, i i i越小,其越早加入,其Degree越大,大到什么程度呢?和 i i i的 − 2 -2 −2次幂相关。
上面的推导过程,我实际上 丢失了一般性 ,数学上要讲 不失一般性。 所以就不能假设一个新节点加入只依附一个已知节点从而只产生一条边,而是应该说, 假设新节点 i i i加入,依附于 m m m个节点,产生 m m m条边。 如果这样,仿照上述的推导过程,最终的结论即:
D
i
(
t
)
=
m
×
(
t
i
)
1
2
D_i(t)=m\times (\dfrac{t}{i})^{\frac{1}{2}}
Di(t)=m×(it)21 【式子4】
OK,负数幂初见端倪,我们要用式子4来导出概率密度分布。
我们画出 t t t时刻所有节点关于式子4的汇总图像。先体会一下胜者通吃先到先得,还是要借助Geogebra。
我们固定时间 t t t并且设 m = 1 m=1 m=1,看一下某个时刻,节点 i i i和其Degree的关系:
从式子4,按照上图的理解,我们可以计算出 “Degree小于某个值
d
d
d的节点的比例” ,解下面的不等式:
m × ( t i ) 1 2 < d m\times (\dfrac{t}{i})^{\frac{1}{2}}<d m×(it)21<d
可以得到:
i > t × m 2 d 2 i>t\times \dfrac{m^2}{d^2} i>t×d2m2
由于新加入节点编号按照时间 t t t编号,时间 t t t刻的接入节点总量即 t t t,于是就可以得到这部分Degree大于 d d d的节点所占据总量的比例:
F t ( d ) = t − t × m 2 d 2 t = 1 − ( m d ) 2 F_t(d)=\dfrac{t-t\times \dfrac{m^2}{d^2}}{t}=1-(\dfrac{m}{d})^2 Ft(d)=tt−t×d2m2=1−(dm)2
对其求导就是其概率分布:
f
t
(
d
)
=
(
2
m
2
)
d
−
3
f_t(d)=(2m^2)d^{-3}
ft(d)=(2m2)d−3
好了,这就是结果了,是不是很简单呢?
从最终的式子里,马太效应,胜者通吃,先到先得这些是显而易见的,我们不禁感叹,从一个简单的优先依附这个假设,通过数学推导,竟然能得到自然界的一个普遍的真理!
除了体会这些世人皆知的真理之外,我们还可以用式子去验证和预测一些网络动力学方面的特征,这里就不多说了。
当然了,本节所描述的仅仅是幂律成因的一种机制,在优先依附之外,还有很多别的机制,同样可以导出最终的幂律分布的结论。
这里推荐几个课程:
- https://www.coursera.org/lecture/social-economic-networks/3-1-growing-random-networks-A17VS
我基本完全参考了这个课程里的方法。 - https://v.youku.com/v_show/id_XNDA2NjY2NjAzMg
这节课是一场盛宴,一部电影的长度,能让你获取更多的思考。
现在让我们向外看。
幂律的成因只是一个结果(不然也不会那么多,任何普适原因都不会太多), 无论是什么具体的行为导致了自然界如此普遍的幂律,其背后都是在适配一个普适定律,即 尺度不变性!
OK,让我们继续。
尺度不变性和对数坐标
我们不该问幂律到底任何形成的,我们不该问富人为什么那么少,财富却那么多,我们不该总纠结于幂律的效果,无论是马太效应,还是80/20原则,都只是表象,在它们背后,一切都应该归结于尺度不变性!
以所有的正方体为例,每当其边长增加到2倍,那么其面积便增加 2 2 = 4 2^2=4 22=4倍,其体积就会增加 2 3 = 8 2^3=8 23=8倍,因此,所有的正方体中,其表面积和其体积的 2 3 \dfrac{2}{3} 32是成正比的:
S ∝ V 2 3 S \propto V^{\frac{2}{3}} S∝V32
这又是一个幂律,但这和什么80/20原则没有任何关系。
仔细看上面的表达式,就会发现,我们可以从两个视角来看待所有正方体:
- 把所有正方体的体积和表面积一起看,那就是幂律,即大量的体积被少量的面积占据。
- 把所有正方体一个一个地看,所有的正方体都是自相似的,它们没有任何区别。
其中,上面的第二个视角更加具有普遍意义,而不是第一个视角。
Anyway,我们先看第一个视角,这个视角一方面是我们对资源分配不公平的抱怨,同时也是一种自我安慰,只有当我们去观察整体的时候,我们才会去说什么马太效应,我们试图去消除它,但这永远只是幻想。
所谓的公平,并不是要追求尺寸上的公平,而是要追求尺度上的公平,而在尺度上,我们已经公平了。
随便举几个例子,即使再差的班级,也会有学习好的学生,即便再好的班级,也会有学习差的学习,如果你画出所有班级的学习成绩分布,就会发现,单单从特定班级的成绩分布看,你是区分不出这是一个好班级还是差班级的。
同样的例子,宇宙星系和原子在某种意义上,也具有相同的尺度,就好像边长不相等的两个正方体一样。
我们生活在一个多维的时空中,所以可想而知,为了填充这个对于我们每个人每个生物都自相似的时空,我们都是不同大小的正方体,每个生物都有一个尺度相同只是尺寸不同的小宇宙。不光是生物,类似城市,公司这样的有机体,也同样具有尺度不变性的性质。
说白了,到底什么是尺度不变性?
设定两个依赖变化的量 x x x和 y y y,它们具备幂指数函数关系:
y = C x − λ y=Cx^{-\lambda} y=Cx−λ
我们一眼就能看出来,这是幂律,它是一条下凸的曲线,看着曲线如此不公平,我们会balabala说个不停,从《圣经.马太福音》到成功学。忘了这些社会学的东西吧!让我们往整体看。
现在,两边取下对数:
ln y = ln ( C x − λ ) \ln y=\ln(Cx^{-\lambda}) lny=ln(Cx−λ)
化简它:
ln y = ln C − λ ln x \ln y=\ln C-\lambda \ln x lny=lnC−λlnx
我们进行坐标变换,设 Y = ln y , X = ln x Y=\ln y,X=\ln x Y=lny,X=lnx,则有:
Y = ln C − λ X Y=\ln C-\lambda X Y=lnC−λX
这是什么?这是 直线! 那个下凸导致的不公平消失了!
直线的斜率永远不会变化,这是绝对的公平!无论你怎么截取, X X X轴和 Y Y Y轴的比例永远是等比例的!
也许,你会反驳说,谁让你变换坐标了啊!哈哈,事实上, 我们应该更加习惯对数坐标才对!
还记得你在第一次工作时第一次得到1000块钱是多么兴奋吗?现在再给你1000块钱还有那时候兴奋吗?
你的收入从1元到1000元带给你的兴奋程度应该和你的收入从1万元到1000万元带给你的兴奋程度相同,而不是从10万元到20万元。
我们更关注的是尺度,而不是尺寸。
那么,为什么 y = C x − λ y=Cx^{-\lambda} y=Cx−λ中的 − λ -\lambda −λ不是 1 1 1,为什么这个幂指数不是 1 1 1,原因很简单:
- 我们表达的是独立量的单维度的增长,但是其效果却是多个维度共同增长的,所谓的自带多维度积累效应。
正如,我们在数学上描述正方体使用一维的边长,然而边长的增加带来的却是其体积在三维空间的膨胀。
假设世界是一维的,那么幂指数就是1了。
当你的收入从1元涨到1000元时,类似一个正方形的边长增加了10倍,然而正方形并非只有尺寸这一个维度,而是三维,在这单独的一个维度上10倍的增长,在其它维度上就会产生规模化积累效应,最终带来1000倍的整体提升。
我们应该是多维度等尺度膨胀的,但遗憾的是,大多数人做不到。所以即便给你每年普调4000块钱的额外薪水,你也再找不到最初拿到仅仅1000元的那种数钱的兴奋感觉了!
再一个例子,那就是银行的利息,也是等尺度的,这个就不细说了。
在等尺度的大盘下,稍微有一些约束,可能更有意思,详情参见我前几天写的另一篇文章:
https://blog.csdn.net/dog250/article/details/104729084
你会发现,猫咪整体上看起来像老虎,但是仔细看,又不像。
抛开应用科学和工程学这种经理负责的东西不谈,其实我们的社会,我们的心理( 韦伯/费希纳定律 ),我们的生物圈( 克莱伯定律 ),我们的宇宙,在数学上,真真切切更适合用对数坐标去描述!
浙江温州皮鞋湿,下雨进水不会胖。