2018/01/27深圳回沪办事,走G15途径厦门,温州,自从2015年11月底最后一次离开上海就再也没有回去过…然后北上呼伦贝尔根河,一路向东北方向直抵漠河…路上途径的地方如果无聊了,会写下些思考随笔,当然也会有类似去年川西高原行的游记。
今日惠州团建返回,在后面将会引入大量与技术无关的随笔之前,我加紧写完这篇文章,不耽误明日出发。想想也挺有意思的,去年是重庆,成都,川西青藏高原,走前去了一趟江门,今年是上海,根河,漠河,走前去了一趟惠州,完美对称!
希望这趟自由行可以给自己的2018年带来好运,同时也给家庭,公司团队带来好运,满血迎接新的挑战!
“凡是少的,就连他所有的,也要夺过来。凡是多的,还要给他,叫他多多益善。”《新约.马太福音》
“凡是相信大数定律的,凡是相信热力学第一定律的,就不要去赌博,不要去炒股,不要去进行任何投机,而应该去开赌场”《疲累的狡辩.在路上 by 赵亚》
举一个例子,我们的互联网并不是平等的,大多数的流量都是在流向那不多的几个大型公司,20%不到的公司控制了80%以上的信息资源,这是事实!我们的一切都不是平等的,因为我们的存在不是随机的,弱者将至多维持现状,强者将至少恒强。
逆袭的机会,很少!不是没有可能,但逆袭确实是小概率事件,属于概率分布的长尾!
…
上周我说想要用严谨的数学来描述“马太效应”,还说用韦恩图来表示..本文我来完成愿望的一部分,即用传统的数学理论,即概率和微积分的知识来表述这个马太效应。
所谓的马太效应,就是“富者越富,穷者越穷”,大道理几乎所有人都知道,但我们想知道这是为什么,这一切背后的动力学是什么。因此,我们需要建立一个数学模型,用数学来推导这一切。这样会让人信服。当然,谁都知道我们无法用朴素的数学描述整个世界的每一个细节,即便是可以我们也将会一叶障目无法看到大局,所以需要对问题进行适当的抽象。
本文中我将首先用图论的基础知识来描述一个具有马太效应的网络的动力学细节,然后扯一通形而上学的理解(不过这部分比较重要,这是我的精髓,一般书上是看不到的),最后我用微积分的知识来证明这个马太效应在一般意义上上正确性。
到底如何来表示马太效应。事实上,马太效应,80/20法则,它们大概说的意思是一致的,在统计学中,这些说法被抽象成所谓的幂律分布,在分布图上,它表现为一条拖着长长尾巴的曲线:
这种幂律分布曲线方程可以表示成以下的形式:
f(x)=αx−γ 其中,α,γ均为正数
可见,在这种幂律概率分布上,概率越高,占比越小,反正大占比的分布位于那条长长的尾巴上。本文接下来就详细分析这种幂律特征的细节以及成因。
考虑一个网络,我们把网络节点看作是实体,该网络遵循一定的规则自我增长,在该规则下,最终我们将导出幂律。这个规则尽可能地模拟了我们人类心智的某些特征,比如我们都喜欢有威信的人,我们总是想和混的好的人交朋友,上学的时候,如果大家都不喜欢某个孩子,我也很难喜欢他,我们同样都喜欢去好的公司上班,比如腾讯,阿里,我们也喜欢明星,如果有一天发生了天底下最难以应对的混乱,我们希望寄人篱下,每个人都希望能依附最强者…等等这一切,归根结底都是在扩展一个网络,我把它们抽象成以下的规则:
我们把上面的 pi 整理一下。由于在一个图中节点总的度等于节点数的2倍,设该图中节点的数目为 n ,则有:
pi=ki∑jkj=ki2n
现在,我们考虑一下当一个新的节点链接入一个网络时,发生了什么。
当一个节点链接入网时,它会增加它所链接节点的度,增加 1 ,我们假设表达式 pk,i,n 表示的含义如下:
既存在于网络中的节点 i 在网络规模达到 n 时,其度为 k 的概率。
那么新加入一个节点时,这个概率会发生变化。即:新加入一个节点后,度为 k 的节点包括两个部分,分别是:
1. 新节点链入的那个旧节点,如果它的度为 k−1 ;
2. 新节点没有链入的那些度本来就是 k 的旧节点。
我们分别求这两部分的概率,然后将其相加就是网络规模变成 n+1 时节点度为 k 的概率:
1. 第1部分概率: k−12npk−1,i,n(注意下标为k−1)
2. 第2部分概率: (1−k2n)pk,i,n(注意下标维持k)
所以:
pk,i,n+1=k−12npk−1,i,n+(1−k2n)pk,i,n (0)
有了这个递推关系,把 等式(0) 关于 i 展开即可(递推式不就是拿来展开相抵或者相加的吗?):
pk,0,n+1=k−12npk−1,0,n+(1−k2n)pk,0,n
pk,1,n+1=k−12npk−1,1,n+(1−k2n)pk,1,n
pk,2,n+1=k−12npk−1,2,n+(1−k2n)pk,2,n
pk,3,n+1=k−12npk−1,3,n+(1−k2n)pk,3,n
….
pk,n,n+1=k−12npk−1,n,n+(1−k2npk,n,n)
上面的一系列式子左右分别相加并整理如下:
∑i=1npk,i,n+1+pk,0,n+1=(k−12)1n∑i=0npk−1,i,n+∑i=0n−1pk,i,n−k21n∑i=0n−1pk,i,n
考虑当 n 非常大到海量的时候,统计期望即满足大数定律,即:
limn→+∞1n∑i=1npk,i,n+1=limn→+∞1n∑i=0n−1pk,i,n
所以在 n 海量巨大的时候,可以认为下面的式子成立:
∑i=1npk,i,n+1≈∑i=0n−1pk,i,n (当n趋向无穷时取等号。后面我们忽略这个无穷小差异,一律取等号)
考虑到度的分布满足下面的表达式:
P(k)=limn→+∞(1n∑ipk,i,n)
则有:
pk,0,n+1=(k−12)P(k−1)−(k2)P(k) (1)
另外,根据上述的极限定义,将新节点接入网络作为随机事件,由大数定律我们得出初始加入网络的节点 i0 在网络最终无穷大的时候(即 n→+∞ ),其度为 k 的概率趋近于整个网络的度为 k 的节点占比的数学期望,即:
pk,0,n+1=P(k)
代入上面的 等式(1) ,即可得到如下的新的递推关系:
P(k)=k−1k+2P(k−1) (2)
我们把 等式(2)在k>1时 展开,得到:
P(2)P(1)=14
P(3)P(2)=25
P(4)P(3)=36
P(5)P(4)=47
…
P(k−1)P(k−2)=k−2k+1
P(k)P(k−1)=k−1k+2
这次我们把上面的一系列式子相乘,得到下面的等式:
P(k)P(1)=1×2×3k(k+1)(k+2) (3)
嗯,貌似OK了…但是 P(1) 是什么?
就是说刚开始加入的那个节点需要特殊处理,这其实很容易,我们再看递推式 (0) :
pk,i,n+1=k−12npk−1,i,n+(1−k2n)pk,i,n
其中的两个概率重新定义就是了。
首先,节点的度不可能是 0 ,因此,新加入的节点是度为 1 的一部分,另外一部分度为 1 的节点是原本的度就是 1 的节点,因此新加入节点相比之前的递推式就是:
p1,i,n+1=1n+(1−12n)p1,i,n
依然按照上面的处理方式展开相加,最终得到的结果就是:
p1,0,n+1=1−(12)P(1)
进一步,由大数定律,得到:
P(1)=1−12P(1),即:
P(1)=23,代入(3),得到:
P(k)=4k(k+1)(k+2)∝2k−3
毕!
我们已经证明了在上述网络扩展规则的情况下网络上的某些节点是如何做到胜者通吃的。但是能不能将其总结成一个通行的公例呢?
完全可以!
这种网络其实就是叫做无标度网络,所有的幂律都符合无标度网络特征。那么什么叫做无标度网络?你可以百度谷歌一下,估计得到的仅仅是一种描述,这些解释并没有告诉你为什么。这里,我来告诉你为什么。
所谓的无标度,几何上指的是曲线在双对数坐标下是一条直线,在代数方程上指的是不管自变量如何缩放单位,方程的形式不会变化。
也许你可能不知道我在扯什么,我现在就解释。我们假设一个符合幂律的分布函数 f(x)=ax3 ,我们对其两边取对数:
lnf(x)=lnax3=>lnf(x)=3lnx+lna
看看是不是点 (lnx,lnf(x)) 在同一条直线 y=3x+lna 上呢?该直线的斜率为 3 ,截距为 lna 。这就是双对数意义上的直线,所有的幂律分布均符合这种双对数坐标系里的直线性质。
现在开个脑洞,你知道人的大脑对这种双对数直线情有独钟吗?如果有的话,那么人脑大概想的都是幂律吧,同时也把幂律和对数联系上了吧。还记得我猜测的那般,觉得人总是喜欢对数据取对数吗?人脑天生就是一台取对数机器…既然联系了起来,难道人脑是因为幂律才喜欢取对数,还是因为取了对数才符合了双对数坐标下的幂律…不得而知~~哈哈
其实,人脑是喜欢直线吧。不想让直线弯曲了,才会拼命让自己的大脑符合幂律或者去取对数。不得而知。不过,经验看起来,人脑天生喜欢追随强者。如果追溯原因,这是因为人天生懒惰从而喜欢被奴役吗?这难道是幂律的成因?还是说因为大脑天生只识别双对数直线,从而只向着符合条件的曲线靠拢!
换句话说,我觉得,只要是双对数坐标系下是一条直线的表达式,都是人脑易于理解的。这也正是费希纳定律所表达的含义。虽然物理量已经指数增加,但感觉量却只是线性增加。这也是为什么虽然80/20规则是很不公平的,但是人们却感觉不到它不公平,毕竟在人们的心理预期上,并不存在80/20,可能只是20/20。
不管怎样,强者越强,富者越富,弱者越弱,这个确实是真理。
看过了关于直线的几何解释,我们来看下代数方程的解释。假设我们已经知道 f(x)=axb ,此时我们将 x 扩大或者缩放成 γx ,那么 f(γx)=(aγb)xb ,请注意,形式并没有任何变化,只是函数值最终进行了等比例的缩放,缩放系数是个常数。这正像吹气球一样,同步膨胀,越膨胀越大,最为重要的是,虽然膨胀了,大师形状并没有改变(这里并没有用大气压说事…),这就说明这个气球是无标度的,这也说明它是分形的。
但是,符合无标度特征的就一定是幂律分布吗?接下来我给出个数学推导:
这又是一个数学题,学过微分方程的应该都能解出,但不管怎样,本文还是给出一个简要说明。题目如下:
解这个题目非常简单,首先取 x=1 ,得到 b=f(a)f(1) ,从而:
f(ax)=f(a)f(x)f(1)
接下来我们想办法把自变量 x 分离出来,因此可以对 a 求导,得到:
xdf(ax)d(ax)=f(x)f(1)df(a)da
由于a为任意常数,为消除其影响,只需设置其为一个特殊值,然后求解题目,最终证明结果充分且必要即可,不妨设a=1,则有:
xdf(x)d(x)=f(x)f(1)f′(1)
上式整理得:
1f(x)df(x)=f′(1)f(1)1xdx
两边对微分进行积分,微分方程可以轻易求解:
lnf(x)=f′(1)f(1)lnx+C 注意这是双对数坐标系下的直线
其中 C 为任意常数,既然是任意常数,那么考虑值域同样也为任意常数的函数 lnx ,一定会有常数 C1 ,其值等于 C ,于是:
设C=lnC1,则有:
lnf(x)=f(1)f′(1)lnx+lnC1
进一步,根据对数的性质,有:
lnf(x)=ln(xf(1)f′(1)×C1)
所以:
f(x)=C1xf(1)f′(1)
为了求C1,设x=1,则有:f(1)=C1
结论为:
f(x)=f(1)x−γ 其中γ=−f(1)f′(1)
这正是幂律分布,毕!
写到这里,本文的主要内容已经写完了,即便如此,本文到此为止依然没有提到任何关于复杂网络的术语和概念的内容,我是有理由的。
惠州团建中有个帆船出海的项目,船主耐心的给我们讲解了帆船的各种原理以及各种操作,这趟出行让我喜欢上了帆船,纯手动操作,可完美体验操控的乐趣。关键点不在这,而是船主给我们讲空气动力原理的时候,说了很多,当我想逞能插话念出伯努利方程的时候,船主自然而然说出了这就是伯努利方程…这跟我想的简直一样…其实我对伯努利方程仅仅知道个名称以及它的表示或者还有它的一些推导,但是从来没有听到过生动的实例讲解,如果船主不说这最后一句话,我觉得他依然可以胜过很多的物理老师。嗯,同样的道理,我也不准备先把诸如小世界网络,随机网络,BA网络,Pareto分布等等术语摆出来,然后再解释幂律,我觉得即使不懂这些,也照样可以完全理解幂律。
喜欢上了他的帆船(30万左右可以买一艘,大概是一辆奥迪A4L或者BMW 3系的价格),还有一个原因,那就是这位船主的风格是我所认同的,和一个志同道合的人终成伴侣,然后将共同的爱好变成了事业,非常不错。有幸能坐上老板亲自拉绳掌舵的帆船,这趟出游的感觉非常棒。