惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 【当耐特】
月光博客
月光博客
Vercel News
Vercel News
D
Docker
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
有赞技术团队
有赞技术团队
雷峰网
雷峰网
博客园 - 聂微东
小众软件
小众软件
Y
Y Combinator Blog
腾讯CDC
L
LangChain Blog
The GitHub Blog
The GitHub Blog
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss

林中阴影

林中阴影 | 关于蓝光刻录的一些调查 林中阴影 | 与IPv6地址战斗 林中阴影 | 半年前的NAS升级 林中阴影 | “智能” 家居笔记:一→两年后的回顾 林中阴影 | 旧手机做RDP客户端的一些尝试 林中阴影 | 一些矿渣的耗电量 林中阴影 | 穷人的IP-KVM远程访问 林中阴影 | 内网访问第三季:在运营商的CGNAT网络下 林中阴影 | “智能”家居笔记,其之二 林中阴影 | “智能”家居笔记,其之一 林中阴影 | 仅IPv6家庭内网服务实现v6+v4双栈访问 林中阴影 | 下载装小蜜监理拍摄的图片 林中阴影 | 几物互联 林中阴影 | 整了个“新”平板 林中阴影 | 获取招商信用卡账单的另一种方法 林中阴影 | 我在GitHub的⭐ 林中阴影 | Python与光学计算,2021 林中阴影 | 你可能并不需要内网穿透 林中阴影 | 2020 林中阴影 | 和(基本上)什么也不能连的电脑传递信息 林中阴影 | 我将贻笑于大方之家 林中阴影 | 一个新主题 林中阴影 | 2019过去了,我…… 林中阴影 | Beancount试用,半年后 林中阴影 | 自动输入剪贴板中的内容 林中阴影 | Unicode与数学公式 林中阴影 | Python中光学计算相关的库/Awesome Python for Optics 林中阴影 | 一本厕纸小说 林中阴影 | 震惊!为了在Windows上访问EXT4分区,他竟然做出了这样的事! 林中阴影 | 我的2018
林中阴影 | 幂律分布与Zipf's Law
2017-12-16 · via 林中阴影

前几天读了《复杂》。对复杂学的研究,在人工智能重获热度的今天,似乎获得了新的意义——当然,我们还是不知道炼金术的大锅里面发生了什么。

幂律分布/Zipf定律/帕累托法则/80-20定律/whatever,本质上是同一种东西。这种分布模式和正态分布类似,广泛存在于大自然和人造物的各个角落。一般来说,对于具有:

  • 优先连接性(Preferential attachment)/马太效应
    • “凡有的,还要加给他,叫他有余;没有的,连他所有的也要夺过来。”
  • 成长性
    • 网络的尺度不受客观条件的限制,可以无限增长

的网络,其节点连接数较为满足幂律分布。

Youtube上有个视频对幂律分布讲得很清楚,对其中提到的两个实验,我利用python进行了模拟。模拟中使用的jupyter notebook文件放在了github gist上。

猴子和打字机

一只猴子(我们叫它Shashi Biya)在打字机上乱敲,它敲二十六个字母和空格概率都相等。那么,咱们能不能看出他的用词习惯?答案是肯定的。

import string,random
from collections import Counter
s=string.ascii_lowercase+" "
s="abcd "
monkey=''.join(random.choices(s, k=10000000))
monkey=[m for m in monkey.split(" ") if m]
c=Counter(monkey)
common=c.most_common()[:10000]
fre=[value for (key,value) in common]
plt.plot(fre)
plt.xscale('log')
plt.yscale('log')
plt.show()

阶梯形状可能是由于概率相等

我们的这位大文豪颇有古风,喜欢用单字(“a”)胜过长单词(“ffsda”),而且用词比例正符合幂律分布:在双log坐标系下,图像大致是一条直线。这很符合直觉:为了得到任何长度大于1的单词,猴子第二次敲的按钮必须不是空格。

不要嘲笑我们的前辈,人类的语言也具有相同的性质,虽然概率最高的字是the什么的。并不是Zipf’s law限制了猴子打出十四行诗,这或许是个好消息。

连接曲别针,第一种方法

在墙上钉100个钉子,然后随意把曲别针连在上面。哪个钉子上曲别针越多,下一个曲别针挂在上面的概率就越高。

l=100
list=np.ones(l)
for i in range(100000):
    s=sum(list)
    p=[j/s for j in list]
    k=np.random.choice(l,1, p=p)
    list[k]+=1
plt.plot(sorted(list,reverse=True))
plt.xscale('log')
plt.yscale('log')
plt.show() #指数分布

可惜这只是个指数分布

与幂律分布相比,指数分布更加“平缓”,而且在双对数坐标系下也并不是一条直线。

连接曲别针,the right way

现在,我有一把曲别针。我随便拿出两个曲别针,并把它们两个所在的串连接起来。

假设我对每一个曲别针没有特别的爱好,那么,某个串选中的概率,与串中的曲别针个数正相关。这就是所谓的优先连接性。

tic=timeit.default_timer()
l=20000
list=[1]*l
while len(list)>14000:
    s=sum(list)
    p=[j/s for j in list]
    k1=np.random.choice(len(list),1, p=p)
    a1=list.pop(k1[0])
    s=sum(list)
    p=[j/s for j in list]
    k2=np.random.choice(len(list),1, p=p)
    a2=list.pop(k2[0])
    list.append(a1+a2)
toc=timeit.default_timer()
print(toc-tic)
plt.plot(sorted(list,reverse=True))
plt.xscale('log')
plt.yscale('log')
plt.show()

png

好的,我们得到了 基于曲别针的互联网系统 ——至少可以算是个物联网。在这个网络里,(大概)80%的曲别针在20%的链子中,余下的曲别针散落在另外的地方。我们叫那些链子“曲别针巨头”。随着连接次数越来越多,链子越来越长,分散的曲别针越来越少,这就是“链子中心化”,我们现在互联网的状态。

当继续这个过程的时候,最终(很快)就只剩下唯一一条长链,这就是我们互联网的末日1

刘慈欣在还没有现在这么出名的时候,写过一篇叫做《赡养人类》的作品,提到了有关“终产者”的概念。当时,有人评论大刘“不懂政治,也不懂经济”,我十分希望这个人是对的。


2018年4年3日的编辑:

这里有另一个Zipf's Law的例子,可以看出,其仍然满足马太效应的性质。另外,别人的故事编的还是好啊。