结果之恶不需要动机之恶(Bad outcomes need no bad intentions)
2026-08-13 · 适应与演化
一条街用十年时间从混住变成泾渭分明。你挨家挨户去问为什么搬,没有一户会说"我不想跟他们住一起"——而且他们说的是真话。
你大概见过这种事:一个群刚建起来什么都聊,一年后只剩一个话题,别的人不知不觉都不说话了。没人被踢出去,也没人宣布过规矩。或者一间办公室,午饭时间的座位一开始是随机的,半年后固定成了几桌,谁也没组织过。
我们解释这类事情时有一个几乎不会去质疑的默认假设:结果的形状约等于动机的形状。极端的格局背后应该有极端的意愿,明显的界线背后应该有人想画那条线。这个假设有时候是对的。但有一整类系统里它错得非常彻底——温和到近乎无所谓的个人要求,可以稳定地长出极端的整体格局,而且中途没有任何一个人做过极端的选择。
上一期讲的是复杂适应系统(complex adaptive system):主体会学习、规则本身在变。这一期讲的是怎么把这类系统真的跑起来做一次实验——基于主体建模(agent-based modeling,缩写 ABM),以及这种实验最容易骗人的地方。它既是本站后面几期(适应性景观、演化博弈、集体智能)共用的工具,也是复杂性科学里最容易被滥用的那把刀。
传统的建模是从整体入手的。讲传染病,你写下"有多少人还没得病、多少人正在传染、多少人已经好了",再写三条方程描述这三个数怎么互相转化——这就是第 24 期那个易感-感染-康复模型(susceptible–infectious–recovered,缩写 SIR)。你操作的对象自始至终是总量,个体在方程里不存在。
基于主体建模走的是相反的方向:你一个方程都不写,你只写"一个个体在什么情况下做什么",然后放几百上千个下去,让它们互相碰。整体会长成什么样,你不知道——那是跑出来的结果,不是你输进去的假设。
这个换向解锁了三件方程做不到的事。第一是异质性(heterogeneity):每个个体可以有不同的参数、不同的耐心、不同的信息。方程里的"平均个体"是一个不存在的人,而很多现象恰恰是被少数不平均的人推动的。第二是空间与网络:谁挨着谁、谁认识谁。第三是局部信息:每个个体只看得见身边那一小圈,没有人拥有全局视野——这一条尤其重要,因为现实里的人正是这样。
这套做法的门槛低到危险:写几十行代码就能让一屏幕小方块动起来,看上去很像那么回事。所以它需要一条自己的纪律,而且这条纪律是整个方法的命门——你想解释的那个宏观现象,必须待在输出端,不许出现在输入端。元胞自动机 → 参考 · 元胞自动机 和鸟群模型 → 参考 · Boids 鸟群 是这条纪律最干净的两个例子:规则里没有"群"这个词,群是跑出来的。
拿到任何一个模拟(包括你自己写的),先去参数表里找一遍:有没有一个参数直接叫「隔离程度」「拥堵水平」「团队氛围」。如果有,这个模型不是在解释那个现象,是在换一种写法把它重述了一遍。把这类参数拆成个体层面的动作,拆不出来就说明你还没想清楚机制。
EN Equation-based modelling starts from aggregates: how many susceptible, how many infected. Agent-based modelling writes no aggregate equation at all — only what one individual does under what local conditions — and lets the macro pattern come out as an output. That buys heterogeneity, space and local information, at the price of a discipline: whatever you want to explain must never appear among the inputs.
1971 年,托马斯·谢林(Thomas Schelling,2005 年诺贝尔经济学奖得主)发表了一篇论文,用的"计算机"是一张棋盘和一把硬币。他手推的那个模型,后来成了整个方法的招牌。→ 参考 · 谢林隔离模型
规则简单到可以一句话说完:棋盘上住着两种人,每个人环视自己周围的八格,只要求同类邻居的比例不低于某个数;低于了就搬到一个空格去,不低于就待着不动。就这样。
我把它跑了一遍,参数摆在明处:16×16 的格子,两种人各约四成五,剩下约一成是空位,阈值定成 30%。请留意这个数字有多温和——它的意思是"我周围七成的邻居跟我不是一类,我也不走"。这在现实里几乎算得上宽容。
起点是随机撒的,同类邻居比例 50%——随机混合本来就该是这个数。跑到第 23 轮,所有人都满意了,没有人再想动。此时同类邻居比例是 78%。
值得停一下想清楚这中间发生了什么,因为它比"隔离出现了"更要紧:整个过程里没有任何一个人追求过同质。每个人只做了一件事——当同类邻居掉到三成以下时挪个地方,挪到刚好不低于三成为止。终局那个 78%,是每个人都没要过、也没有人在任何一步选择过的东西。它从个体的账本里查不出来。
这就是"结果之恶不需要动机之恶"的确切含义。但这句话极容易被滑向另一个说法,那个说法是错的,必须在这儿把线划清楚。
它跟阿伦特的"平庸之恶"不是一回事。汉娜·阿伦特(Hannah Arendt)1963 年在《艾希曼在耶路撒冷》里提出的是关于主体的诊断:一个人放弃了思考、把判断交给流程和上级,于是参与了巨大的恶。谢林说的是关于结构的事实:即使每个人都在思考、都无恶意、每一步都为自己作出了合理的选择,那个格局照样会出现。两者的落点正好相反——阿伦特要求恢复个人的判断力(问题出在人放弃了判断),谢林指出判断力全部在线也不够(问题出在规则和空间)。
把两者混起来,会导出一个双方都不同意的结论:"既然是结构,那就没人有责任。"阿伦特恰恰是在追究责任——她主张艾希曼应当被处死;谢林也从没说过隔离无人负责。一个说的是"别拿体制替自己开脱",另一个说的是"别以为动机清白就保证结果清白"。这是两条互补的要求,不是一条。(顺带一提:Bettina Stangneth 2014 年基于阿根廷时期档案的研究让"平庸"作为对艾希曼本人的描述受到了严重质疑——他远比阿伦特设想的更有意识形态自觉。这不影响那个概念作为一种类型的价值,但引用时该说清楚。)
遇到一个"没人想要却稳定存在"的格局,先做一次最低动机检验:把每个人的偏好调到你认为最温和、最说得过去的程度,看这个格局还出不出得来。出得来,就停掉"揪出是谁想要这个"的调查——那条线索的信息量接近于零。把同样的时间花在两件事上:谁挨着谁(空间与网络),以及不满意时人能做什么动作(可选项)。
EN Schelling's 1971 checkerboard: agents demand only that a modest share of their eight neighbours be like them. Run here with a 30% threshold on a 16×16 board, the board froze after 23 rounds with 78% like-neighbours — a figure nobody asked for and nobody chose at any step. This is a claim about structure, and it is not Arendt's banality of evil, which is a claim about a subject who stopped thinking; conflating them yields "structure, therefore nobody is responsible", which neither author would accept.
"个体温和、整体极端"听上去像个悖论。它不是。中间有三个可以拆开看的机制,一个接一个。
一,搬走这个动作不只关系到自己。一个人离开,同时也把留下来的每一个同类邻居的比例拉低了。所以一次移动会制造下一批不满意的人——他们本来是满意的。这就是级联:不满意的人在被别人的动作生产出来。
二,这个过程带棘轮。搬家的人只会落在让自己满意的位置上,也就是同类比较多的地方。所以平均而言每一次移动都在提高整体的同质度,而相反方向的移动——主动搬进一个同类更少的地方——在规则下根本不会发生。棘轮只往一个方向转。
三,终局自己锁死。跑完之后,没有一个人不满意,因此没有一个人有单方面改变的动机。这个格局是稳定的——但请注意"稳定"这个词在这里的含义窄得可怕:它只表示没有人能靠自己一个人的动作变得更好。它不表示大家满意,不表示这是好结果,更不表示有谁选了它。稳定、最优、有人想要,是三件完全不同的事,日常语言把它们混成了一团。
面对一个锁死的坏格局,一对一的说服必然失败——因为对每个人来说,单独改变确实更糟,你说服的是一个正确的判断。有效的干预只有两类:让一批人的处境同时改变(凑够临界质量再一起动,而不是逐个动员),或者改变"搬家"这个动作本身的成本与可见性。具体到会议上:别再单独找人问"你怎么看",改成让所有人同时写下判断再一起亮出来。
EN Three mechanisms turn mild into extreme. One departure lowers the like-share of everyone it leaves behind, so unhappiness is manufactured by other people's moves. Movers only land where they are satisfied, so every move ratchets homogeneity upward and the reverse move never happens. And the frozen state is stable only in the narrow sense that no single agent can improve alone — stable, optimal, and wanted are three different things.
现在说这套方法的问题,而且要说得比它的好处更长——因为基于主体建模最大的毛病恰恰是它太好用了。
你手上有四个旋钮:规则、参数、初始条件、随机种子。四个旋钮一起转,你几乎总能调出一张你想看的图。所以"我的模型复现了这个现象"这句话,作为证据,价值接近于零。任何足够灵活的机器都能复现任何东西。
第一条纪律:跑一批,不是跑一次。上面那张棋盘图是一次运行的结果。我把同一条规则换了 30 个随机种子重跑,最终的同类邻居比例落在 0.65 到 0.85 之间,均值 0.75。也就是说,上面那个"78%"不是一个结论,它是分布里的一个点,而且是偏中上的一个点。只报一个数、不报这条带子,报的其实是运气。
第二条纪律:说清楚你扫过哪些参数。阈值改成 37.5% 会怎样?空位从一成变成一成四会怎样?如果一篇结论只在阈值恰好等于 0.3、空位恰好等于 0.1 时成立,那它讲的是这两个数字,不是讲机制。
第三条纪律,也是最容易被跳过的:问这个模型禁止什么。一个只会生成、不会禁止的模型,没有被推翻的可能,因而也没有被支持的可能。谢林模型在这一点上其实很克制——它给出的是一个存在性证明(proof of existence):极端的隔离不需要极端的偏好作为前提。存在性证明只干一件事,就是推翻一个"必要条件"的说法。它不指认原因。说"隔离可以在没有恶意的情况下产生",和说"现实中的隔离是这么产生的",中间隔着一整个实证研究领域。
说到这儿,我该交代一次自己的失败,因为它比上面三条纪律更能说明问题。
我把规则改成"每个人都严格偏好 50 对 50 的完美融合"——同类比例离一半越远越不舒服——然后跑了 30 次。隔离没有出现,同类邻居比例稳稳停在 0.48 到 0.50。可是 Pancs 与 Vriend 2007 年在《Journal of Public Economics》上报告的结果正好相反:在最优响应动态(best-response dynamics,每个人搬到当前可得的最优位置)下,即使所有人都严格偏好完美融合,隔离照样出现;他们还顺带指出,谢林模型的一维版本和二维版本其实是两个性质不同的模型。
两边都不是算错了。差别在效用函数的具体形状、邻域怎么定义、以及"搬去哪儿"这条规则怎么写——我那个版本是"搬到一个随机的、比现在好的空位",他们那个是"搬到全场最优"。结论挂在了这些细节上。而在通俗转述里,这些细节从来不会被提到。下次你读到"模拟表明……",要问的第一句话就是:搬去哪儿这条规则是怎么写的。
看到任何基于模拟的结论,先问三句:跑了多少次?参数扫过没有?这个模型禁止什么?三句里有一句答不上来,就把这个结论降级——它可以进你的"可能性清单",不能进决策依据。这条对你自己写的模拟同样有效,而且尤其有效。
EN Four knobs — rules, parameters, initial conditions, random seed — mean almost any pattern can be produced, so "my model reproduces the phenomenon" is nearly zero evidence. Report the distribution over seeds, report the parameter sweep, and ask what the model forbids. Schelling's contribution is a proof of existence: extreme segregation needs no extreme preference. That refutes a claimed necessary condition; it names no cause.
这一节最要紧,因为本期的机制是本站到目前为止最容易被拿去当挡箭牌的一个。
第一,"不需要恶意"绝不等于"没有恶意"。这是最常见也最有害的误读。美国的居住隔离有大量蓄意的、制度化的成因:1930 年代起房主贷款公司(HOLC)绘制的分级地图把黑人聚居区整片划成拒贷区(这就是"红线"redlining 一词的来历);房契里写着不得转售给特定族裔的种族限制性条款,直到 1948 年 Shelley v. Kraemer 一案才判定法院不得强制执行;此外还有中介的"撬盘"(blockbusting)、贷款与保险的差别定价。谢林模型说的是"即使这些统统不存在,隔离也可能出现"。它没有、也不可能说这些不存在。存在性证明只点亮成因空间里的一块,它不熄灭别的块。
第二,模型和证据之间还隔着很远。好消息是这段距离有人在走。Card、Mas 与 Rothstein 2008 年用 1970–2000 年的普查数据做了一件很直接的事:他们在大多数城市找到了临界点式的行为——某个街区的少数族裔比例一旦越过某个门槛,白人的外迁速度会明显跳一下。各城市的门槛落在 5% 到 20% 之间。这既支持了"阈值"这个核心结构,也立刻把它拉回地面:更宽容的城市,门槛更高。阈值不是一个万能常数,它是被真实的态度决定的量。所以"改变偏好没用"这句话说过了头——偏好挪不动格局的形状,但它挪得动那个门槛。
第三,这一行的复制情况不好。照着一篇论文的文字重新实现它的模型,跑不出同样结果是常事——因为"搬去哪儿""谁先动""边界怎么处理"这类决定往往没写在纸上。生态学界 2006 年提出 ODD 描述规范(Overview, Design concepts, Details)正是为了治这个病,而它至今没被治好。上面我自己那次没能复现的"偏好融合仍然隔离",就是这个病的一个标本。
第四,别让结构性解释变成万能钥匙。有些格局就是有人要的,去给它编一套自组织的故事既不诚实也不聪明。判据其实很好用:如果存在明确的强制、明文的规则或可查的定价差别,先解释这些;只有在找不到这些、而一组温和的个体规则就能生成这个格局时,自组织的解释才是该优先的那个。顺序错了,模型就从工具变成了修辞。
凡是用"不需要恶意也能产生 X"来论证的场合,必须同时说出现实中的 X 有多少来自蓄意——哪怕只能给出一个粗糙的量级和它的来源。给不出这个数,这条论证就只能用于"理解机制",不能用于"判定责任"。这两个用途之间的那条线,是本期唯一不能跨的线。
EN Four limits. "Needs no malice" is not "there was no malice": redlining, racial covenants and blockbusting were deliberate and documented. Card, Mas & Rothstein (2008) found real tipping points between 5% and 20% minority share — and higher tipping points in more tolerant cities, so preferences move the threshold even if they cannot change the shape. Agent-based results replicate poorly because the unwritten choices matter. And a structural story must not be the first story when explicit rules, force or pricing are on the table.
有,但作用点跟直觉不同。Card 他们的数据显示,更宽容的城市临界点更高——偏好改变不了"越过门槛就翻转"这个形状,但它把门槛往上推了。所以倡议的效果应该按"门槛移动了多少"来衡量,而不是按"隔离有没有消失"。用错了尺子,一个真实有效的干预会被判成无效。
会变得更复杂,也更真实:价格本身就是一个反馈——搬走的人多了价格就跌,跌了又吸引另一类人进来。这可能加速隔离,也可能在某些参数下阻止它。值得注意的是,加进价格之后模型的旋钮又多了几个,于是第四节那三条纪律的要求也随之提高:新增的解释力必须大于新增的自由度,否则你只是拟合得更好看了。
一个可用的判据:当它预言了一件你没有拿来调参的事,而那件事后来被观察到了。仅仅"能复现已知现象"是最弱的证据等级——因为你是照着那个现象调的。存在性证明是第二等:它推翻某个"必须有 X 才会有 Y"的说法。预言新现象才是第一等,而在社会系统里这一等相当罕见。
作为一个具体数值,几乎没有——它是一个演示用的设定,换成 25% 或 37.5% 结论的方向不变。有意义的是"阈值"这个形状:反应不是随比例平滑变化的,而是在某处突然跳。真正的经验工作是去测那个跳变点在哪儿(Card 等人做的正是这件事),而不是去论证 0.3 这个数对不对。把演示参数当成经验发现,是读模型时最常见的一类错误。