作者 梅拉妮·米歇尔 亚马逊购书链接
17世纪以来,还原论在科学中占据主导地位。将问题尽可能细分,细分到能用最佳方式将其解决,然后上升,直到最复杂的知识。
20世纪有相对论和量子力学这样伟大的发现,但也见证了还原论梦想的破灭。因为在接近人类尺度的复杂现象上无能为力。例如天气预报、生物、疾病、经济、政治、文化、现代通讯。
所以出现了混沌、系统生物学、进化经济学、网络理论。需要交叉学科(包括控制论、协同学、系统科学),才出现复杂系统科学。
复杂系统试图解释,在不存在中央控制的情况下,大量简单个体如何自行组织成能够产生模式、处理信息甚至能够进化和学习的整体。
一些例子
复杂网络的共性
复杂系统是由大量组分组成的网络,不存在中央控制,通过简单运作规则产生出复杂的集体行为和复杂的信息处理,并通过学习和进化产生适应性。
如果系统有组织的行为不存在内部和外部的控制者或领导者,则也称之为自组织(self-organizing)。由于简单规则以难以预测的方式产生出复杂行为,这种系统的宏观行为有时也称为涌现(emergent)。
这样就有了复杂系统的另一个定义:具有涌现和自组织行为的系统。
复杂性科学的核心问题是:涌现和自组织行为是如何产生的。
这里作者回顾了物理历史。亚里士多德、哥白尼、伽利略、开普勒、牛顿。
然而,两个发现打破拉普拉斯精确预测的梦想:海森堡的测不准原理和混沌
所谓混沌性指的是初始值有微小的不精确,会导致长期计算结果的巨大误差。
(自然界也有很多不混沌的现象,你只要大概知道初始值,就能预测个八九不离十。这个叫做线性系统。)
庞加莱三体问题。
$x_{t+1}=R x_t (1-x_t)$
以兔子数量为例,书上用数字说明的,这里自己用公式试着推一下。假设出生率和死亡率分别是a, b,那么t+1时间的兔子数量 $x_{t+1}=(1+a-b)x_t$,其中,a, b 还与$x_t$有关,假设这个关系是最简单的线性关系,于是 $x_{t+1}=R x_t (1-x_t)$
吸引子。
所以,逻辑斯蒂映射有三种行为
逻辑斯蒂分叉图,就不在这里画了。
“费根鲍姆常数” 在不同的混沌系统中有一定的普适性。
熵。热力学第二定律是唯一区分过去和未来的基本物理定律。
设计一个开关,让速度快的分子可以往右走,速度慢的分子可以往左走,这样熵就减少了。麦克斯韦认为,这说明热力学第二定律不是一条定律,而是大量分子下的统计效应。
为解决这个悖论。西拉德将熵和信息联系起来,认为测量过程获取比特,这需要能量,必然产生熵。整个系统仍然遵守热力学第二定律。
重新定义信息比特的概念:通过回答是/否获得的信息。
在当时,人们基本把物理和精神过程视为完全独立,并不觉得“小妖”的智能会有热力学影响。但量子力学发现观察者的影响后,人们才意识到这一点。
班尼特证明,可以用一种巧妙的方式弄清楚分子的快慢,并且不增加熵。这套理论成为 可逆计算(reversible computing) 的基础,理论上可以进行任何计算而不耗费能量。
不是测量行为,而是擦除记忆的行为,增加熵。
历史:
希尔伯特提出的问题。
问题解决。
世间一切都是熵增过程,但是看起来生命正好相反。
以前人们觉得这是宗教的神迹。直到达尔文提出了进化论。
进化论的发展过程
如何度量基因复杂性
这个已经写了好几篇博客了,这里不写了。
元胞自动机也是冯诺依曼发明的,称为“非冯诺依曼结构”
生命游戏。
生命游戏可以运行标准计算机的程序。
元胞自动机的最终状态有4种:
因此
冯诺依曼的好处是编程语言和机器码可以毫无歧义的互相转化。
最优策略不是纳什解,而是“善良、报复、宽恕、明确”
关注的不是事物本身,而是他们之间的关系。
例如,生物的复杂性主要来自基因之间交互作用的复杂性。
网络思维还帮助厘清了一些看似无关的科学和技术之谜:为什么生物的生命期与它们的大小基本上遵循一个简单的函数?为什么谣言和笑话传播得如此之快?为什么电网和万维网这样大规模的复杂网络有时候非常稳健,有时候却又容易出现大范围崩溃?什么样的事件会让本来很稳定的生态群落崩溃?
这些问题看似毫不相干,网络科学家却认为答案反映了各种网络的共性。网络科学的目的就是提炼出这些共性,并以它们为基础,用共同的语言来刻画各种不同的网络。
网络科学家也希望能理解自然界中的网络是如何发展而来的,如何随时间变化的。
对网络的科学理解不仅会改变我们对各种自然和社会系统的理解,同时也会帮助我们更好地规划和更有效地利用复杂网络,包括更好的网络搜索和万维网路由算法,控制疾病传播和有组织犯罪,以及保护生态环境。
一个网络如果只有少量的长程连接,相对于节点数量来说平均路径却很短,则为 小世界网络。
小世界网络经常表现出高度的集群性。
PageRank 数学方面的详解在另一篇博客里写过,这里不重复。
in-degree 为 k 的网页的数量正比于$k^{-2}$,其特点是
无尺度是如何产生的?
preferential attachment 获得新链接时,连接度高的节点比连接度低的节点更有可能得到新链接。
这里,我根据上面这句话的描述,写了个程序模拟一下看看
生成节点
n_points = 1000 # 网络中的节点个数
n_out_degrees = 20 # 每个节点的 out_degree
net = {i: np.random.randint(0, n_points, size=n_out_degrees) for i in range(n_points)}
def cal_in_degree(net):
'''
计算网络中每个节点的in-degree
'''
in_degree_list = [0] * n_points
for i in net:
for j in net[i]:
in_degree_list[j] += 1
return in_degree_list
plt.hist(cal_in_degree(net))
初始的 in-degree 显然是一个正态分布
下面迭代整个网络,迭代的原则是:in-degree 更高的节点,更有可能被指向
# 随机选取n_select个节点,然后找到他们的一度连接。放一起作为集合来抽样,获取下次迭代的 out-points
n_select = 5
net_tmp = copy.deepcopy(net)
for iter_num in range(10):
for i in net_tmp:
points_selected0 = np.random.randint(0, n_points, size=n_out_degrees)
points_set1 = [points1 for points0 in points_selected0 for points1 in net[points0]] + list(points_selected0)
points_selected1 = np.random.choice(points_set1, size=n_out_degrees)
net_tmp[i] = points_selected1
net = net_tmp
plt.hist(cal_in_degree(net))
对网络科学的一些审慎态度
连锁失效。我们已经知道,网络有鲁棒性,某个节点失效后,其工作量会转移到其它节点上。这有可能让其它节点负荷过重而失效,进而又把工作量转移到其它节点上。最终导致整个网络崩溃。
(一个小节点失效,可能导致整个网络崩溃)
我们研究一下生物的大小与代谢率的关系。
代谢比例理论(Metabolic scaling theory) 上述比例来自分形结构,某种量(如代谢率)遵循幂律分布。
这个理论某种程度上具有普适性。
有一些批评:
印刷机的发明,信息极大丰富,人反而未必更接近真理
狐狸型专家的原则
一个好的棒球预测系统必须可以完成3项任务:
球探的优点是能够获得更多的信息,缺点是容易被这些信息中的噪声干扰,掺杂个人偏见
数据怪才的缺点是:数据怪才也有偏见,一个致命的偏见是:如果某项因素很难量化,那么就视为无关紧要
大多数情况下,分类的方法非常奏效。可是,一旦遇到不易分类的信息,我们通常会无视它,或者对它错误的分类
测不准原理。
天气预测中,不用考虑这个因素。因为天气预测是分子层面的。
在4维空间中,有限元的分辨率加倍,计算量增加到原来的16倍
主要内容是说,地震预测中,x难以获取,所以基本用y做时间序列。
肯定很难
预测的难处之一在于,相关的两个经济变量之间未必互为因果
经济预测者面临三大基本挑战。
失业率是企业的信心的滞后指标,却是消费的领先指标
大数据时代,更容易把相关性当成因果律。然而,技术的进步无法掩盖人们对理论知识的缺乏。
预言的自我实现 报纸上“儿童孤独症”出现的概率,与发病率有极好的统计学相关性
一种agent建模方法:似乎是蒙特卡洛?模拟每个人的行为,包括文化、宗教信仰、习惯等等。
棋类比赛中,人与计算机都不可能计算到完全信息,所以所做的事情仍然是预测
因此,人机对战就是寻找彼此的盲点
财富是信号与噪音的结果
随着整体水平提高,菜鸟出局。高手也会变成被收割的菜鸟
首先写了有效市场理论
然后提出了一个有亮点案例。
一个投资经理面对的决策:
如果我是这位投资经理,即使股票50%概率崩盘,我也不会卖出股票。所有投资经理都是这么想的。所以大多证券公司避免“鹤立鸡群”
书中介绍了一种对恐怖主义的预测模型。
这种模型参考了地震预测模型
横坐标是事件死亡人数(地震震级),纵坐标是发生频率
破窗理论实际上也是地震预测模型的推论。如果集中处理小的犯罪,那么大的犯罪也会减少。