复杂系统建模:当我们试图用代码复制一个风骚的世界
上周三晚上,我盯着屏幕上那个死活不收敛的模拟结果,突然觉得很可笑——我们这帮人,居然想用几个方程组就概括整条华尔街的疯狂。不是吗?但这恰恰是复杂系统建模最迷人的地方。你永远不知道,简化掉的哪个细节会在明天变成蝴蝶翅膀。
去年在圣塔菲研究所的workshop上,一个做舆论动力学的哥们儿展示了他们对推特谣言传播的模拟。结果漂亮得不像话,拟合度0.97。可台下一位老太太举手问:'你们考虑了用户上厕所时刷手机的习惯吗?'全场哄笑。但笑完以后,所有人沉默了。因为她说到了痛处。
城市交通多主体建模涌现拥堵模式示意图
但我们很容易掉进'过度拟合'的陷阱。前阵子Nature上有篇论文,用图神经网络预测蛋白质折叠,准确率高得吓人。可仔细看他们的训练集——几乎全是从已知结构里挑的。换个陌生家族,立刻拉胯。模型的脆弱性就像纸糊的城堡。说实话,我现在看到那种宣称'准确率99%'的模型就莫名烦躁。也许是因为自己吃过亏?去年我用LSTM预测股市波动,样本内回测堪称完美,实盘第一天就亏了6%。那一刻我突然理解了塔勒布的咒骂:'模型是知识的普罗克rustes之床,削足适履而已。'
无标度网络上传染病级联传播仿真可视化
电网也一样。2003年美加大停电,起因只是俄亥俄一条输电线被树碰了一下。然后就像多米诺骨牌,整个东北部电网接连崩溃。事后用复杂网络分析,发现那天的电网结构恰好处于'自组织临界态'——听起来很高深,其实就是沙堆模型:你一粒一粒加沙子,不知道什么时候哪一粒就会引发崩塌。建模的人最喜欢这个类比。因为太贴切了。脆弱性和鲁棒性像一对孪生幽灵,潜伏在所有基础设施网络里。去年有个团队在Science上发文章,用动态贝叶斯网络实时评估电网风险,据说能把预警时间提前十几分钟。十几分钟,对调度员来说就是生与死的差别。
不过话说回来,网络建模最烦人的是节点异质性。你建一个城市代谢模型,每个家庭的用水模式都不一样,有的天天浇草坪,有的连澡都不洗。你怎么办?分层?聚类?还是索性假设他们都是理性经济人?——我导师一听'理性经济人'就翻白眼,说这是经济学最失败的发明。确实。真实人类的决策充满偏见、情绪、从众。所以近年来'认知驱动的多主体建模'成了热点,把心理学量规塞进智能体脑子里。比如模拟谣言传播时,给主体加上'确认偏误'——只相信自己愿意信的。跑出来的传播路径,和微博热搜的节奏简直一模一样。那一刻你会觉得,这模型活了。虽然它只是一堆if-else和概率分布。
气候、湍流与无法预测的预测
如果说社会经济系统已经够头疼了,那地球系统建模就是地狱难度。大气、海洋、冰盖、生物圈耦合在一起,时空尺度从毫米到行星,从秒到千年。最可恨的是湍流。雷诺平均纳维-斯托克斯方程至今没法精确封闭,只能靠各种半经验的参数化方案凑合。所以天气预报超三天就不准,气候预测却可以覆盖百年——因为扔掉高频细节,抓住辐射平衡这种慢变量。这是复杂系统里'分离时间尺度'的经典应用。但代价是,你永远不知道那些扔掉的高频波动,会不会通过非线性作用把长期趋势也带歪。比如云反馈机制,至今是气候模型不确定性的最大来源。一朵云能反射阳光降温,也能圈住长波辐射保温。它在模型里就几个参数,在真实世界里却千变万化。
前几天看了一篇预印本,用生成对抗网络GAN来改进云的次网格参数化。思路特别骚:传统方案算力吃不消,干脆让AI直接'蒙'一个合理的云分布,然后用判别器评判是否和周围大尺度变量协调。结果出来的降水模式比传统方案逼真多了,还省了90%计算量。我看到这儿激动得拍大腿。但又隐隐担心——你要是把核心物理过程交给一个黑箱,哪天它蒙出一个完全反常识但看起来合理的解,你信还是不信?可解释性问题在复杂系统建模里永远是达摩克利斯之剑。
更让人沮丧的是,有些系统可能根本就不可预测。混沌三体问题都无解析解,何况万亿体。洛伦兹当年发现蝴蝶效应时,可能也带有一种自嘲的幽默:我们建立的完美模型,恰恰证明了模型不完美。所以现在提倡'基于场景的预测'而非'点预测'——给你一系列概率包络,你自己品。但这对于习惯了确定性答案的政策制定者来说,太痛苦了。他们只想要一个数,一个确定的目标。而复杂系统建模者只能递上一把概率分布的扇子,说:'可能性都在这儿了,您看着扇。'
我经常在夜里问自己,这工作到底有什么意义?上周三那个晚上,就在我要放弃的时候,模型突然在某个参数区间里涌现出了类似真实市场泡沫的模式——先是缓涨,加速,然后恐慌性踩踏,最后流动性枯竭。就那么几行简单规则,居然能复刻出那么丰富的动力学。我想,这就是意义吧。不是预测,而是理解。理解在什么条件下,秩序会从混乱中诞生,抑或秩序如何瓦解为混乱。这大概就是复杂系统建模最性感的灵魂。
去年在圣塔菲研究所的workshop上,一个做舆论动力学的哥们儿展示了他们对推特谣言传播的模拟。结果漂亮得不像话,拟合度0.97。可台下一位老太太举手问:'你们考虑了用户上厕所时刷手机的习惯吗?'全场哄笑。但笑完以后,所有人沉默了。因为她说到了痛处。
模型不是现实,是现实的哈哈镜
记得读博时,导师让我用多主体模型模拟城市交通。我吭哧吭哧写了几千行Python,每个'司机'都设置了理性决策——避开拥堵,选择最短路径。跑起来以后,你猜怎么着?整个城市变成了一个巨大的停车场。因为没有一个人会礼让,所有车挤在最短路径上死磕。这就是布雷思悖论(Braess''s Paradox)的鲜活例子。后来我引入了个别'傻子'司机,随机乱逛的那种,交通反而流畅了。那一瞬间的震撼,我到今天都记得。复杂系统里,微观的愚蠢可能成就宏观的智慧。这简直违背直觉。
城市交通多主体建模涌现拥堵模式示意图
但我们很容易掉进'过度拟合'的陷阱。前阵子Nature上有篇论文,用图神经网络预测蛋白质折叠,准确率高得吓人。可仔细看他们的训练集——几乎全是从已知结构里挑的。换个陌生家族,立刻拉胯。模型的脆弱性就像纸糊的城堡。说实话,我现在看到那种宣称'准确率99%'的模型就莫名烦躁。也许是因为自己吃过亏?去年我用LSTM预测股市波动,样本内回测堪称完美,实盘第一天就亏了6%。那一刻我突然理解了塔勒布的咒骂:'模型是知识的普罗克rustes之床,削足适履而已。'
网络科学:从友谊悖论到停电多米诺
说点好玩的。你肯定经历过'友谊悖论'——你朋友的朋友总是比你的朋友多。这不是错觉,这是网络结构决定的数学必然。因为度分布稍微倾斜一点,抽样时高节点被选中的概率就碾压低节点。这个简单事实,在建模社交网络上的传染病传播时简直致命。传统的SIR模型假设均匀混合,结果预测的感染峰值比真实情况低了三成。后来换成了无标度网络上的模拟,几个超级传播者一加进去,曲线立刻狰狞起来。
无标度网络上传染病级联传播仿真可视化
电网也一样。2003年美加大停电,起因只是俄亥俄一条输电线被树碰了一下。然后就像多米诺骨牌,整个东北部电网接连崩溃。事后用复杂网络分析,发现那天的电网结构恰好处于'自组织临界态'——听起来很高深,其实就是沙堆模型:你一粒一粒加沙子,不知道什么时候哪一粒就会引发崩塌。建模的人最喜欢这个类比。因为太贴切了。脆弱性和鲁棒性像一对孪生幽灵,潜伏在所有基础设施网络里。去年有个团队在Science上发文章,用动态贝叶斯网络实时评估电网风险,据说能把预警时间提前十几分钟。十几分钟,对调度员来说就是生与死的差别。
不过话说回来,网络建模最烦人的是节点异质性。你建一个城市代谢模型,每个家庭的用水模式都不一样,有的天天浇草坪,有的连澡都不洗。你怎么办?分层?聚类?还是索性假设他们都是理性经济人?——我导师一听'理性经济人'就翻白眼,说这是经济学最失败的发明。确实。真实人类的决策充满偏见、情绪、从众。所以近年来'认知驱动的多主体建模'成了热点,把心理学量规塞进智能体脑子里。比如模拟谣言传播时,给主体加上'确认偏误'——只相信自己愿意信的。跑出来的传播路径,和微博热搜的节奏简直一模一样。那一刻你会觉得,这模型活了。虽然它只是一堆if-else和概率分布。
气候、湍流与无法预测的预测
气候、湍流与无法预测的预测
如果说社会经济系统已经够头疼了,那地球系统建模就是地狱难度。大气、海洋、冰盖、生物圈耦合在一起,时空尺度从毫米到行星,从秒到千年。最可恨的是湍流。雷诺平均纳维-斯托克斯方程至今没法精确封闭,只能靠各种半经验的参数化方案凑合。所以天气预报超三天就不准,气候预测却可以覆盖百年——因为扔掉高频细节,抓住辐射平衡这种慢变量。这是复杂系统里'分离时间尺度'的经典应用。但代价是,你永远不知道那些扔掉的高频波动,会不会通过非线性作用把长期趋势也带歪。比如云反馈机制,至今是气候模型不确定性的最大来源。一朵云能反射阳光降温,也能圈住长波辐射保温。它在模型里就几个参数,在真实世界里却千变万化。前几天看了一篇预印本,用生成对抗网络GAN来改进云的次网格参数化。思路特别骚:传统方案算力吃不消,干脆让AI直接'蒙'一个合理的云分布,然后用判别器评判是否和周围大尺度变量协调。结果出来的降水模式比传统方案逼真多了,还省了90%计算量。我看到这儿激动得拍大腿。但又隐隐担心——你要是把核心物理过程交给一个黑箱,哪天它蒙出一个完全反常识但看起来合理的解,你信还是不信?可解释性问题在复杂系统建模里永远是达摩克利斯之剑。
更让人沮丧的是,有些系统可能根本就不可预测。混沌三体问题都无解析解,何况万亿体。洛伦兹当年发现蝴蝶效应时,可能也带有一种自嘲的幽默:我们建立的完美模型,恰恰证明了模型不完美。所以现在提倡'基于场景的预测'而非'点预测'——给你一系列概率包络,你自己品。但这对于习惯了确定性答案的政策制定者来说,太痛苦了。他们只想要一个数,一个确定的目标。而复杂系统建模者只能递上一把概率分布的扇子,说:'可能性都在这儿了,您看着扇。'
我经常在夜里问自己,这工作到底有什么意义?上周三那个晚上,就在我要放弃的时候,模型突然在某个参数区间里涌现出了类似真实市场泡沫的模式——先是缓涨,加速,然后恐慌性踩踏,最后流动性枯竭。就那么几行简单规则,居然能复刻出那么丰富的动力学。我想,这就是意义吧。不是预测,而是理解。理解在什么条件下,秩序会从混乱中诞生,抑或秩序如何瓦解为混乱。这大概就是复杂系统建模最性感的灵魂。