第七层概率
第七层概率
一
陆遥第一次注意到异常,是在三月的某个周二下午。
深圳南山区的写字楼群在午后阳光里折射出一种冷淡的金属色,像是某个巨大生物的鳞片。她在十七楼靠窗的位置,屏幕上铺满了概率分布图和特征权重矩阵。咖啡凉了,外卖软件的推送通知在手机锁屏上堆了七八条,她一条也没点开。
“蜂巢信用”——她所在的金融科技公司——正在开发第四代风险评估模型。这个模型会根据用户的消费记录、社交关系、地理位置、浏览习惯等数千个维度,给每个人算出一个”信用分”。这个分数决定了你能借多少钱、利率多少、能不能租到那个离地铁站近的公寓。能不能被这个城市温柔以待。陆遥是模型架构组的负责人,说白了,就是教机器如何判断一个人值不值得信任。
她三十一岁,浙江大学数学系博士,发表过四篇顶级会议论文。简历很漂亮,但漂亮到这种程度的简历在深圳并不稀罕。她租住在西丽一个老小区的两居室里,阳台上养了一盆总也不死的绿萝,冰箱里永远有速溶咖啡和过期的酸奶。她的生活就像一个收敛得很好的函数——单调、稳定、可预测。
那天下午她在做的是模型调优。第四代模型比第三代多引入了两个维度的数据:用户的手机使用时长分布和夜间活动的地理轨迹。理由很充分——研究表明,作息规律与违约率之间存在统计学意义上的相关性。陆遥对这种研究持保留态度,但她不是制定规则的人,她只是写代码的人。
问题出在一组测试数据上。
她从生产环境拉了一批历史用户的特征向量做回溯测试,五千人,时间跨度两年。模型跑完后,她按惯例检查各个特征的贡献度。绝大多数特征的表现都在预期范围内:收入水平、负债比率、逾期历史,这些老面孔排列在前。但有一列数据让她停下了鼠标。
编号为F-2047的特征维度——“夜间移动轨迹方差”——对某个用户群体的违约预测准确率达到了97.3%。
这个数字本身不稀奇。在特定子集上,单个特征偶尔会表现出极高的区分度。但97.3%?这几乎等于说,仅凭一个人晚上在不在家,就能判断他会不会还钱。这不合理。
陆遥皱了皱眉,拉出这个子群体的详细数据。一共347人,全部来自深圳,年龄在25到35岁之间,职业分布在程序员、设计师、外卖骑手、房产中介这几个领域。他们的夜间移动轨迹方差——简单说就是晚上活动范围的波动程度——与后续的还款行为之间存在一种几乎完美的对应关系。方差低于某个阈值的,几乎全部按时还款。方差高于这个阈值的,违约率畸高。
陆遥拿起咖啡喝了一口,凉透了。她把这个发现截图发给组长方远山。方远山是个三十五岁的四川人,总是穿同一件灰色卫衣,说话慢吞吞的,但脑子很快。他回复得也快:“有意思。但别急着下结论,可能是过拟合。加个交叉验证看看。”
陆遥照做了。五折交叉验证,结果几乎没变。她又把数据按月份拆开,逐月检验。三十四个月,月月如此。
“不是过拟合。“她在工作群里敲下这几个字的时候,手指有一瞬间的犹豫。
方远山回了个”收到”的表情,然后说:“你来B2会议室,叫上陈默。”
陈默是数据工程组的,负责底层数据管道。他比陆遥小两岁,戴着黑框眼镜,永远背一个装了机械键盘的背包。三个人挤在B2那间窗户正对着空调外机的会议室里,屏幕投在墙上,看着那条诡异的曲线。
“有没有可能是数据泄露?“陈默推了推眼镜,“就是特征本身包含了未来的信息。”
“我查过了,“陆遥说,“收入和工作性质是独立的特征维度,已经控制了。而且你看——“她切到另一张图表,“我把收入、职业、学历这些变量全部固定之后,夜间轨迹方差的预测力依然独立存在。”
方远山双手交叉抱在胸前,盯着投影幕布看了很久。“那就先写进报告,但不作为主要特征上线。需要更多的解释性分析。”
会议散了。陆遥回到工位,重新打开那347个用户的数据。她随手点开了其中一个用户的详细档案。编号U-58293,男,28岁,软件工程师。夜间轨迹方差在观察期的前二十个月一直很低,然后在第二十一个月突然升高。两个月后,违约。
她又点了几个。同样的模式:方差先升高,违约后发生。时间差在一个月到三个月之间。就像一个提前到来的信号。
她摇了摇头,把这个想法赶出脑子。这不是信号,这是统计学。她关掉数据库,收拾东西下班了。
那天晚上,她做了一个梦。梦里她站在一个巨大的白色空间里,周围漂浮着数不清的发光小球,每个球上都写着数字。她伸手去碰其中一个,球在她指尖碎裂,里面流出一条金色的线。线很长,延伸到看不见的远方。她沿着线走了很久,走到尽头,看见一扇门。门上没有把手,只有一个数字:2047。
她醒过来的时候是凌晨三点。窗外有救护车的声音由远及近,又由近及远。
二
四月的时候,模型正式上线了。方远山采纳了陆遥的建议,F-2047特征没有被列为核心维度,只是作为辅助参考。陆遥松了口气,觉得这件事就算过去了。
但它没有过去。
上线两周后,运营部门反馈了一个奇怪的现象:一批被模型标记为”高风险”的用户正在集体投诉。不是投诉被拒绝放款,而是投诉平台”窥探隐私”。他们说,自己根本没有任何违约记录,收入稳定,信用良好,凭什么被标记为高风险?
合规部门介入了。法务写了很长的邮件解释模型原理和数据使用授权条款,但投诉量不减反增。有人在社交媒体上发帖,说”蜂巢信用”通过追踪用户的夜间行踪来判断人品,配了一个很煽情的标题。帖子的转发量在两天内破了十万。
公关部忙得焦头烂额。CEO在全员大会上用了二十分钟讲”数据伦理”和”科技向善”,然后宣布成立”算法透明度委员会”。委员会有七个人,陆遥是其中之一。
委员会第一次开会的时候,陆遥第一次见到了沈望舒。
沈望舒是公司的首席法务官,四十出头,短发,穿深蓝色的西装裙,说话的时候习惯用食指轻轻点桌面,像在敲摩尔斯电码。她不是那种典型的法务——大多数法务会说”这个有风险,不能做”,沈望舒会说”这个有风险,但如果你非要做,我告诉你怎么做得不犯法”。
“我不关心你们模型有多准,“她在会上说,“我关心的是你们能不能解释它为什么准。如果用户问’为什么我的信用分降低了’,你能给出一个他听得懂的答案吗?”
技术VP李明哲清了清嗓子:“我们的模型使用了深度神经网络,特征的交互方式非常复杂,精确解释每一个评分结果确实有困难。但我们可以提供主要的负面因素。”
“不够。“沈望舒的手指在桌上敲了两下,“如果你们不能解释,迟早会出事。”
会后,沈望舒叫住了她。“你是陆遥?F-2047特征的发现者?”
陆遥有些意外。“你怎么知道?”
“方远山在汇报里提到过。他说你发现了模型里一个很有趣的现象,但暂时解释不了。“沈望舒靠在门框上,抱着手臂看她,“解释不了的事情,让我紧张。你紧张吗?”
“有一点。”
“那就对了。“沈望舒笑了一下,笑容里有一种很职业的锐利,“保持紧张。紧张的人不容易犯错。”
那天晚上陆遥加班到十一点。她把那347个用户的数据重新导出来,做了一个更细粒度的分析。她发现了一个更奇怪的事。
在这347个用户中,有23个人的夜间轨迹数据呈现出一种特殊模式:他们会在凌晨两点到四点之间,出现在城市的某个特定区域——南山科技园附近一个半径不到三百米的圆形范围。这23个人全部在随后三到六个月内发生了重大生活变故:失业、离婚、投资失败、家人重病。
23个人,同一个地点,凌晨两到四点。
她打开地图查了一下那个圆形范围里有什么。
什么都没有。
那个位置是科技园南区的一块待开发空地,周围是工地围挡,里面长满了杂草。白天有人经过,晚上应该荒无人烟才对。
但数据说,有23个互不认识的人,在各自人生发生重大转折之前的几周到几个月,都曾在深夜去过同一个什么都没有的地方。
陆遥盯着屏幕看了很久。窗外是南山区的夜景,成片的写字楼灯光像棋盘上的格子,整齐而冷漠。她忽然想起博士期间导师说过的一句话:“数学最让人不安的地方不是它的复杂,而是它有时候太干净了。干净到像是有谁在背后设计。”
她把这个发现单独保存在一个加密文件里,没有告诉任何人。
三
五月的一个周末,陆遥去了那个地方。
她打了个车,晚上十一点到了科技园南区。司机在路口停下来,一脸狐疑地看着她:“小姐,你确定在这儿下?这地方前不着村后不着店的。”
“确定。谢谢。”
她下了车。夜风有些潮,带着深圳特有的那种咸湿味。路灯很暗,两盏之间隔着很长的黑暗。围挡上的安全标语在风里哗哗响。她沿着围挡走了一段,找到一个被撕开的口子,钻了进去。
里面比她想象的要大。杂草有半人高,远处有一台废弃的挖掘机,像一只蹲伏的巨兽。地上有碎砖、塑料袋、烟盒,但看起来确实很久没人来过了。
她打开手机的GPS记录功能,在空地里走了一圈。数据告诉她,她现在就在那个圆形范围的正中心。什么都没有。只有杂草、碎石和远处写字楼的微光。
她正准备离开,忽然注意到脚下有什么东西。
蹲下来拨开草,是一块水泥板,大约一米见方,半埋在土里。表面很粗糙,但上面似乎刻着什么。她打开手机的手电筒照了照。
是一组数字。2047。
陆遥的手电筒晃了一下。她定了定神,仔细看了看。没错,就是2047,刻在水泥板上,字体工整,像是用模具压出来的。
巧合。当然是巧合。她站起来,拍掉手上的土,快步走出了空地。在等出租车的时候,她发现自己在发抖。不是因为冷。
回到家后,她调出了那23个用户的匿名化轨迹数据,仔细看了看每个人在那个圆形区域的停留时间。最短的12分钟,最长的2小时17分。她把每个人的停留时间做成了一张散点图,然后盯着那张图看了整整十分钟。
散点不是随机分布的。它们构成了一条曲线——一条对数正态分布的累积分布函数。
陆遥放下茶杯。对数正态分布是自然现象中极其常见的一种分布,但它出现在这里——出现在23个互不相识的人深夜访问一块空地的停留时间上——这没有任何道理。
除非他们不是”访问”了这个地方,而是被某种共同的力量”吸引”到了这里。
她知道这听起来有多荒谬。她是个科学家。科学家不谈”力量”和”吸引”,只谈相关性和因果性。但此刻她面对的这组数据,像是一张被精心编织的网,每一个节点都完美地落在它应该在的位置上。太干净了。
第二天是周日。她去了公司,把过去三年的所有用户数据重新跑了一遍,不限于那347人,而是全部一百二十万用户。
结果让她脊背发凉。
有1847个用户曾在不同时间出现在那个圆形区域内。其中,没有发生过重大生活变故的——零。
一千八百四十七个人,每一个,都在到访后的六个月内经历了人生的重大转折。失业、破产、离婚、重病、车祸、亲人去世、公司倒闭。这些事件的发生概率远高于正常人群,高到不可能是巧合。
陆遥坐在空荡荡的办公室里,看着屏幕上那些密密麻麻的点,第一次觉得自己可能触碰到了某种不属于她的东西。
四
她犹豫了三天,最终把这件事告诉了陈默。
选择陈默是有原因的。方远山太谨慎,会把这件事直接上报。李明哲太圆滑,会用一套技术黑话把它包装成”数据质量问题”。沈望舒……沈望舒让她紧张,虽然她承认这种紧张里有一种奇怪的吸引力。
陈默不一样。陈默是个纯粹的技术宅,对所有”奇怪的东西”都有天然的好奇心,而且他没有政治嗅觉——这在公司里是缺点,但在这种情况下是优点。
他们约在公司楼下的咖啡馆。陆遥把笔记本电脑转过去给他看。陈默推了推眼镜,一言不发地看了十五分钟。
“你确认数据没问题?“他终于开口。
“我验了三遍。”
“不是数据泄露?不是标签泄露?”
“都不是。”
陈默摘下眼镜擦了擦镜片。“那只有两种可能。第一,这个地点和这些事件之间存在某种未知的因果机制,我们目前的科学框架无法解释。第二,数据本身被操纵了。”
“被谁操纵?需要同时具有我们数据库的写权限和对一千八百四十七个用户实时生活的监控能力。”
“所以不太可能。“陈默承认。
“你去过那个地方吗?“他问。
“去过。什么都没有,只有一块刻着数字的水泥板。2047。”
陈默的表情变了一瞬。他掏出手机,打开一篇论文——《城市时空数据中的群体行为异常:隐相关结构的证据》,作者Hans Richter,德国马普研究所的物理学家。
论文的核心内容是:在大规模城市人口移动数据中,存在极少数的”汇聚点”——某些地理位置会在特定时间段吸引特定人群,而这些人群在到访后往往经历重大的生活轨迹偏转。Richter在柏林发现了三个这样的点,提出了”隐相关结构”理论——不是因果关系,而是一种类似于量子纠缠的统计关联。
论文发表后引起了一些讨论,但很快被主流物理学界归入”有趣的统计巧合”。因为Richter无法给出令人满意的机制解释,也无法在控制实验中复现。
“你怎么会有这篇论文?“陆遥问。
“去年在网上刷到的,觉得好玩就存了。你那个F-2047和Richter发现的汇聚点,是不是同一件事?”
“我不知道。“陆遥说,但她心里已经有了答案。
五
接下来的两周,陆遥做了一件可能不太符合公司规定的事:她用自己的工程师权限,从生产数据库中导出了那1847个用户的完整数据。她把数据带回家,在自己的笔记本电脑上建了一个独立的分析环境。每天下班后,她就坐在餐桌前,一个用户一个用户地分析。
她用了一种自己设计的可视化方法:把每个用户的时间线画成一条线,重大生活事件用红点标记,到访汇聚点的时间用蓝点标记。然后她把一千八百四十七条线叠在一起。
图案出现了。
蓝点和红点之间的时间间隔,精确地服从莱维分布——一种用来描述异常扩散过程的概率分布,常见于湍流、金融市场和动物觅食行为中。它有一个特点:偶尔会出现”长跳跃”——大部分时候变化很小,但偶尔会有巨大的突变。
这意味着这些人的生活轨迹——从到访汇聚点到发生重大变故——不是随机游走,而是一种受驱动的扩散过程。就像粒子在流体中被某种看不见的力场推动。
但这不是物理学。这是人的生活。人的生活不应该服从莱维分布。
她开始研究Richter的论文。Richter的理论框架借鉴了量子力学的数学工具,但他的”隐相关结构”更像是一种在宏观尺度上涌现的统计规律。就像单个水分子的运动是随机的,但十亿个水分子在一起就会形成可预测的波浪。
如果这种”隐相关结构”真的存在,那它意味着什么?意味着人的命运,至少在统计意义上,是可预测的?
五月下旬,Richter回了她的邮件。他说他在柏林发现的三个汇聚点也呈现类似特征。他后来又在东京、孟买和圣保罗发现了类似的点。
他在邮件结尾写道:“您是第一个从金融数据中发现这个的人。这提供了一个全新的观测窗口——因为金钱是人类行为最精确的量化指标。”
然后他问了一个问题:“您有没有试过预测?”
陆遥看着这个问题,手指悬在键盘上方,很久没有落下。预测什么?预测哪些人会去那个汇聚点?如果她能做到,那她就有可能干预——一条短信、一个推送通知、一个恰到好处的小恩小惠,也许就足以让一个人在某个深夜改变主意。
然后呢?他的命运会改变吗?还是说函数本身会找到一个等效的路径来收敛到同一个结果?
她没有回Richter的邮件。
六
六月初,公司出事了。不是她那件事。
蜂巢信用的B轮融资差点黄了。投资方是一家国有背景的产业基金,在做尽职调查时发现:蜂巢信用的风控模型在某些特定人群上存在”统计偏差”——它对某些人群系统性地给出了更低的信用分。
这在金融科技行业叫做”算法歧视”。风控模型并不是有意歧视,深度神经网络的决策过程是一个黑盒,它从数据中学习模式。如果训练数据中某种人群的违约率确实更高,模型就会忠实地把这个模式学进去。
从商业角度看,这叫”精准风控”。从法律和伦理角度看,这叫”系统性歧视”。
沈望舒为此开了三天闭门会议。“我们需要一个解释框架,不是给投资人看的,是给监管机构看的。他们迟早会来查。”
李明哲试图用技术语言解释,但说到第三分钟就被沈望舒打断了。“陆遥,你们那个F-2047特征呢?它的偏差情况怎么样?”
陆遥的心跳快了半拍。“F-2047不是一个可解释的特征,“她说,“它的统计表现很好,但我们目前无法给出一个符合因果逻辑的解释。如果作为监管披露的内容,它可能引发更多疑问。”
“那就先不披露。“沈望舒迅速做出判断,“把它从活跃特征列表里下线。”
方远山看了陆遥一眼。陆遥没有说话。
会后,她去沈望舒的办公室。办公室在二十楼,有一整面玻璃墙,可以看到整个南山区的天际线。沈望舒正在翻一份合同,听到敲门声抬起头来。
“F-2047不能下线。“陆遥说。
沈望舒放下合同,靠在椅背上。“理由?”
“因为它有效。它确实在预测违约,而且准确率远超其他特征。如果我们把它下线,模型的区分度会下降至少12个百分点,意味着我们每年要多承受大约八千万的坏账损失。”
“但它不可解释。不可解释的高准确率本身就是风险。”
“我知道。但我认为不应该因为它不可解释就否定它的有效性。也许我们需要的是找到解释,而不是掩盖现象。”
沈望舒看了她很久。那个目光让陆遥想起了自己读博时候的答辩委员会——一种平静但穿透性的审视,像是要把她论点下面的每一个漏洞都找出来。
“你在隐瞒什么。“沈望舒说。这不是疑问句。
陆遥沉默了几秒。“我有一些初步的发现,但还不够成熟,现在说出来可能会让你更紧张。”
“说说看。”
陆遥说了。不是全部——她没有提那块刻着2047的水泥板,没有提Richter的论文,没有提莱维分布。她只是用一种非常客观、非常学术的方式描述了F-2047特征中那个异常的地理汇聚现象:一部分用户在违约前会频繁访问某个特定地点,这个地点与他们的违约行为之间存在强统计关联,但机制不明。
沈望舒听完后,沉默了很久。窗外有一架无人机飞过,发出嗡嗡的声音,像一只巨大的昆虫。
“你是说,你们的风控模型可能在无意中捕捉到了某种……超越金融领域的规律?”
“我不确定是不是’超越金融领域’。也许它只是一种我们尚未理解的社会学现象——某种城市空间与人群行为之间的深层关联。”
“但你个人倾向于相信它不是社会学现象。”
陆遥没有回答这个问题。
沈望舒站起来,走到窗前。“我做律师二十年了。见过很多种’不可解释’的事情。大多数最后都有解释,只是解释让人不舒服。有些真相就是这样——它不会因为你不想面对就不存在。”
她转过身。“F-2047可以不下线,但你要给我一个承诺:如果你发现了什么可能影响公司安全或用户安全的东西,第一时间告诉我。不是方远山,不是李明哲,是我。可以吗?”
“可以。”
沈望舒点了点头。“去吧。我信任你,不要让我后悔。“
七
七月,陆遥做了一件更大胆的事。
她用F-2047的反向逻辑构建了一个预测模型。原来的F-2047是从事后数据中发现规律——那些已经发生了变故的人,在过去有什么共同特征。现在她要做的是反过来:从实时数据中识别出正在走向汇聚点的人,在他们还没有到访之前就发出预警。
她管这个模型叫”灯塔”。
灯塔模型使用了和F-2047相同的特征维度,但增加了一个时间序列预测层。它的原理很简单:如果一个用户的夜间移动轨迹方差正在以某种特定的模式升高——不是缓慢上升,而是阶梯式的跳变——那么他有很大的概率在接下来的一到两周内到访那个汇聚点。
她在历史数据上测试了灯塔模型。准确率86%。召回率71%。
也就是说,每100个即将走向汇聚点的人中,灯塔能提前识别出71个;在它识别出的人中,86%确实走向了汇聚点。
剩下的人呢?29%的漏检率意味着每100个人里有29个灯塔没能抓住。而14%的误报率意味着它也会冤枉一些本不会去的人。
不算完美,但已经足够让人不安了。
因为灯塔预测的不是一个金融事件——不是”这个人会不会还钱”——而是一个人生事件。它在说:这个人的生活在接下来几周内即将发生重大变故。不是可能,是以86%的概率。
陆遥把灯塔模型部署在自己的本地环境里,没有接入生产系统。她每天下班后会打开它,看看今天又有哪些用户被标记了。通常是十到二十个。她看着那些匿名化的用户编号,心里有一种复杂的感觉——她像是站在一个高台上,能看到一场即将到来的风暴,但她不知道该不该喊出来。
七月的一个周三晚上,灯塔标记了一个特殊的用户。
编号U-91027,女性,29岁,职业标注为”金融从业者”。她的夜间移动轨迹方差在过去三周内发生了三次阶梯式跳变,灯塔模型给出了92%的到访概率。
让陆遥在意的不是概率数字,而是这个用户的另外两个特征:她的工作地址距离蜂巢信用的办公室不到两公里;她的消费记录中,有一笔与蜂巢信用员工食堂消费记录高度匹配的交易。
陆遥调出了蜂巢信用的员工数据库,用消费金额、时间和地理位置做了一个交叉比对。
匹配到了一个人。
林小鸥,29岁,蜂巢信用的运营专员。陆遥在走廊里见过她——个子不高,扎马尾,笑起来眼睛弯弯的,总是抱着一摞文件匆匆走过。她们没有说过话。
灯塔模型预测林小鸥将在未来两周内到访那个汇聚点。而根据历史数据,到访者有100%的概率在六个月内经历重大生活变故。
陆遥盯着屏幕,感觉自己像是握着一把手术刀,面前是一个还没有发病的病人。切还是不切?切了可能救他,也可能只是让他提前知道了绝望。不切——等它自己发作?
她关掉了电脑,没有做任何干预。
八
第二天上班的时候,陆遥在茶水间遇到了林小鸥。
林小鸥正在微波炉前热牛奶,看到陆遥笑了一下。“你好,你是算法组的吧?我好像在全员大会上见过你。”
“是。“陆遥说。她注意到林小鸥的眼睛下面有很深的黑眼圈,笑容虽然温暖但有些勉强。
“我最近在做一些运营数据的分析,想请教你们组一个问题——你们模型里那个夜间轨迹特征,具体是怎么算的?有个用户投诉说我们追踪他晚上去了哪里,我需要给客服那边一个解释话术。”
陆遥的心跳加速了。“就是手机GPS的匿名采样,不是实时追踪。用户授权协议里有说明的。”
“我知道,但用户不听这个。“林小鸥从微波炉里拿出牛奶,吹了吹,“他们说’我晚上去哪里关你们什么事’。说实话,我挺理解他们的。”
“你理解?”
“嗯。有时候觉得自己的一切都被数据化了。去了哪里、买了什么、跟谁在一起、几点睡觉——全部都是数字。然后这些数字被一个机器拿去评判你值不值得信任。挺恐怖的。”
陆遥看着林小鸥端着牛奶离开茶水间的背影,忽然觉得自己的灯塔模型不仅仅是恐怖,而是残忍。它不仅评判一个人值不值得信任,还预言一个人值不值得拥有一个好的人生。
接下来的几天,陆遥一直在犹豫要不要找林小鸥谈谈。告诉她什么?你的数据说你最近会去一个莫名其妙的地方,去了之后你的生活就会崩盘?这听起来像算命。不,比算命还荒谬——算命至少还有一套模棱两可的说辞,她手里的东西只有冷冰冰的概率数字。
但她无法忽视那个92%。
周五下午,她在走廊里拦住了林小鸥。
“你有时间吗?想请你喝杯咖啡。”
林小鸥有些意外,但还是答应了。她们去了楼下的咖啡馆,陆遥点了一杯美式,林小鸥要了杯热巧克力。
“怎么了?感觉很正式。“林小鸥笑着说。
陆遥深吸一口气。“如果我跟你说,我们公司的风控模型可能捕捉到了某种……不属于金融领域的东西,你会怎么想?”
林小鸥歪了歪头。“什么样的东西?”
“比如——一种能预测一个人生活即将发生重大变化的现象。不是通过传统的财务指标,而是通过某种我们还无法解释的行为模式。”
林小鸥端着热巧克力,没有立刻说话。她的表情从好奇变成了认真。“你是说,你们能预测一个人的命运?”
“不是命运。是重大生活变故的概率。”
“那不就是命运吗?“林小鸥说这话的时候,语气很轻,像是开玩笑,但眼神不是。
陆遥沉默了。
“你是不是看到了我的数据?“林小鸥忽然问。
陆遥抬起头。林小鸥的表情很平静,像是已经知道答案了。
“我注意到你最近查过我的档案。“林小鸥说,“运营后台有查询日志的。你没有查财务数据,只查了特征维度的部分。我觉得你大概是发现了什么。”
陆遥张了张嘴,不知道该说什么。
“没关系,“林小鸥说,“你可以直接告诉我。我不怕。”
“你最近……是不是有失眠的问题?”
林小鸥愣了一下,然后笑了。“你怎么知道?——哦,对,夜间移动轨迹方差。是的,我最近失眠很严重。每天凌晨两三点都睡不着,会起来散步,或者在小区楼下坐很久。”
“你有没有去过科技园南区?”
林小鸥的表情变了。她放下杯子,看着陆遥,眼里有一种很复杂的东西——惊讶、警惕,还有一丝不易察觉的恐惧。
“去过。上个月的某个晚上,我失眠很严重,打车出去兜风。司机问我去哪,我说随便开。最后不知道为什么就在科技园南区下了车,走进了一块空地。”
“你为什么去那里?”
“我不知道。真的不知道。当时就是一种……感觉。像是有什么东西在叫我过去。到了那里之后,我站在那块空地中间,什么都没做,就站了大概半个小时,然后打车回去了。”
陆遥的手指在桌下攥紧了。
“后来呢?你最近的生活有没有发生什么变化?”
林小鸥沉默了很长时间。窗外有人骑着电动车经过,发出呜呜的声音。咖啡机的蒸汽管嘶嘶作响。
“我上个月确诊了甲状腺癌。“她说,声音很轻,像是在说别人的事,“早期,医生说治愈率很高。但还是要手术。我下周一住院。”
陆遥闭上了眼睛。
“所以你们真的能预测?“林小鸥问。
陆遥睁开眼。“不是预测。是——事后归纳。我们在你到访之后才发现这个规律的。对你来说,一切已经发生了。”
“那对还没去过的人来说呢?”
这个问题像一根针,精准地扎在了陆遥最脆弱的地方。
“对还没去过的人来说,“陆遥慢慢说,“如果我们能提前识别他们,也许——也许——可以做一些事情。”
“比如?”
“比如告诉他们。”
“告诉他们什么?‘不要去那个地方’?”
“是的。”
“你觉得有用吗?“林小鸥的声音忽然变得很轻,“如果有什么东西在叫我过去,你觉得我能不去吗?“
九
林小鸥的手术在周一进行。陆遥没有去看她——她们不够熟,而且她不确定自己是以什么身份出现。是同事?是发现了她数据的工程师?还是那个预见了她命运却没有出手干预的旁观者?
手术很成功。林小鸥在朋友圈发了一张病床上的自拍,竖着大拇指,配文是”甲状腺,再见了您嘞”。照片里的她笑得很灿烂,眼睛弯弯的,跟茶水间里那个端着热巧克力的女孩一模一样。
陆遥点了赞。然后她打开灯塔模型,做了一件她一直犹豫的事。
她把灯塔模型连接到了实时数据流。
不是生产系统的数据流——她还没那么大胆——是一个她自己搭建的影子管道,从生产数据库实时同步但完全隔离。灯塔模型现在可以对每一个活跃用户进行实时评估,但她没有把结果输出给任何人,只输出到她自己的一块仪表盘上。
仪表盘上有一张深圳的地图,每一个被灯塔标记的用户显示为一个发光的点。点会随着时间移动——有些慢慢漂移,有些突然出现又突然消失,有些在某个位置停留很久,像是一只迷路的萤火虫。
陆遥把这块仪表盘投到了自己家里的一台旧显示器上,放在餐桌旁边。每天晚上做饭、吃饭、洗碗的时候,她都能看到那张地图。发光的斑点在城市上空飘浮,像一张活的星图。
七月下旬的一个凌晨,她被手机震醒了。仪表盘上的一个报警——不是灯塔的报警,是她自己设的一个监控:有一个用户正在向汇聚点移动。
她爬起来,打开电脑。屏幕上显示一个蓝色的点正在南山区的道路上移动,速度不快——像是在走路。时间是凌晨两点十七分。
陆遥看着那个蓝点一点一点地接近那个圆形区域。它在围挡外面停了几秒,然后——穿过了围挡的边界,进入了空地。
蓝点在空地中央停了下来。
陆遥的手指悬在键盘上方。她现在可以调出这个用户的信息——不是匿名化的,而是真实身份。她可以找到他的电话号码,打给他,告诉他——告诉他什么?“你好,我是蜂巢信用的数据分析师,请不要站在那里”?这听起来像骚扰电话。
她没有打。
蓝点在空地上停留了四十七分钟,然后离开。
陆遥关掉电脑,回到床上。她躺在床上看着天花板,脑子里全是那个蓝点。一个活生生的人,在凌晨两点的荒地里站了四十七分钟,而她作为一个能看见这一切的旁观者,什么也没有做。
这是观察者的责任吗?看到了灾难的前兆却不发出警告,和制造了灾难有什么区别?
她想起了薛定谔的猫。在她打开那个盒子之前,猫既是活的也是死的。但她的情况不一样——她打开了盒子,看到了猫,却把盖子重新盖上,假装什么都没看见。
十
八月,陆遥终于回复了Richter的邮件。
她写了一封很长的信,详细描述了自己过去几个月的发现:1847个用户、莱维分布、灯塔模型、林小鸥、那个凌晨两点十七分的蓝点。她没有保留,因为她需要一个可以对话的人。陈默很好,但陈默是工程师,不是科学家。他关心的是”怎么做”,而不是”为什么”。
Richter在第二天就回了信。这一次他的回复很长,洋洋洒洒写了三千多字。他说他在柏林做了类似的事情——不是用金融数据,而是用城市的交通卡数据构建了一个实时监控系统。他也观察到了同样的现象:某些人会在特定的时间被”吸引”到汇聚点。
他提出了一个理论。
他把这种现象叫做”命运褶皱”——借用广义相对论中”时空褶皱”的概念。在他的模型中,人类社会不是一个均匀的平面,而是一个充满了褶皱和折叠的复杂曲面。大多数时候,人沿着曲面的纹理移动,路径是平滑的、可预测的。但在褶皱最深处——汇聚点——路径会突然发生剧烈的弯曲,就像是空间本身在那里打了一个结。
打结的地方,所有的路径都汇聚到一起。不同的人、不同的生活、不同的故事,在同一个点上交叉。交叉之后,每条路径都会被弹射到一个新的方向——这就是那些人经历的重大生活变故。
“命运褶皱不是原因,“Richter写道,“它是结构。就像河流不是因为瀑布才向下流——瀑布只是河流路径上的一个结构特征。人生也是如此。那些变故不是因为汇聚点才发生——汇聚点只是人生路径上的一个结构特征,一个标志着方向即将改变的拐点。”
这个理论让陆遥想起了拓扑学中的一个概念——“奇点”。在奇点处,函数的值趋向于无穷大,所有的曲线都汇聚到一起。数学家处理奇点的方式不是消除它,而是理解它——把它看作函数整体结构的一部分,而不是一个需要修复的错误。
如果命运褶皱就是人生的奇点呢?
如果那些重大的人生变故——失业、离婚、疾病、破产——不是人生的bug,而是人生这个函数的结构特征呢?
如果是这样,那干预就没有意义了。你不能通过让一个人绕开汇聚点来改变他的命运,因为汇聚点不是原因,而是结构。就像你不能通过把瀑布填平来改变河流的方向——水还是会找到另一条路流下去。
但灯塔模型的存在本身就是一个悖论。如果命运真的像Richter说的那样是一种结构,那灯塔为什么能预测到它?预测一个结构性的东西,意味着这个结构本身是可计算的。可计算的结构意味着它有规律。有规律意味着它不完全是随机的。不完全是随机意味着——至少在某种程度上——命运是确定的。
这让陆遥想起了一个古老的哲学问题:如果未来已经被决定了,那人的选择还有意义吗?
她用了整整一个周末来思考这个问题,最终得出了一个不太令人满意的答案:有意义,但不是她以为的那种意义。选择不能改变结果,但选择本身就是结果的一部分。一个人走向汇聚点的过程——他走的每一步、他沿途看到的每一个风景、他在路途中做出的每一个决定——这些都是他命运的一部分,而不是命运的旁观者。
她也是如此。她发现灯塔模型,她选择监控或是不监控,她选择干预或是不干预——这些选择本身就是她命运的纹理。不是因为她的选择会改变什么,而是因为她的选择就是什么。
八月最后一周,灯塔标记了另一个用户。这一次陆遥没有犹豫。
她调出了这个用户的信息。一个三十四岁的男人,叫周明远,在一家中型互联网公司做产品经理。灯塔预测他有88%的概率在未来一周内到访汇聚点。
她找到了他的手机号码。
然后她坐了很久。
最终,她没有打电话。但她做了另一件事——她给周明远在蜂巢信用的账户发了一条系统通知,内容是标准的用户关怀文案:“尊敬的用户,系统检测到您的信用状况良好,特为您提升了信用额度至XX元,祝您生活愉快。”
这看起来毫无意义。一条信用额度提升的通知怎么可能阻止一个人去一个荒地?
但陆遥赌的是概率。Richter的理论说汇聚点是结构性的,不可回避。但灯塔模型告诉她,走向汇聚点的路径不是唯一的——有阶梯式跳变的路径,也有缓慢漂移的路径。如果一个外在的干预——哪怕是一条微不足道的通知——能够让一个人的轨迹发生哪怕极其微小的偏移,也许就足以让他从一条路径滑向另一条路径。
不是改变结果,而是改变路径。
她不知道这是否有效。这需要实验——大规模的、对照的、长期的实验。而她只有一个人,一台笔记本电脑,和一个在深夜发光的仪表盘。
但她决定试一试。
十一
九月和十月,陆遥开始了她的实验。
她从灯塔标记的用户中随机选择了两百人,分成两组。实验组会收到各种微小的干预——一条信用额度提升通知、一个优惠券推送、一个个性化的理财建议。对照组什么都不做。
她跟踪了两组用户三个月。
结果让她惊讶。
实验组到访汇聚点的比例比对照组低了37%。而两组的重大生活变故发生率没有显著差异。
也就是说,干预确实减少了人们去汇聚点的概率,但并没有减少他们经历重大变故的概率。变故依然发生了,只是他们不再去那个荒地了。
Richter说得对。汇聚点不是原因,而是结构特征。你可以在一座桥前面放一个路障,让人们绕道而行,但河的下游还是那个瀑布。
但陆遥注意到了另一个现象:实验组虽然重大变故的发生率没变,但他们应对变故的方式不一样了。
没有到访汇聚点的人,在变故发生后的消费行为更加稳定——没有剧烈的透支、没有异常的大额消费、没有突然关闭所有信用账户。他们的生活曲线虽然发生了偏折,但偏折的角度更小,恢复的速度更快。
就好像——绕过那座桥虽然不能阻止他们到达瀑布,但让他们在到达瀑布的时候保持了更好的平衡。
陆遥盯着实验数据,忽然觉得眼前的世界变得有些不一样了。她一直以来都把汇聚点看作一种诅咒——一个标记着灾难即将来临的信号。但如果它不是诅咒呢?如果它是一种……保护机制呢?
也许那些在凌晨两点被吸引到荒地里的人,不是在走向灾难,而是在灾难到来之前获得某种……她找不到合适的词。某种预告?某种仪式?某种只有站在那个空无一物的地方才能获得的、关于即将到来的变化的直觉?
她想起了林小鸥说的那句话:“像是有什么东西在叫我过去。“那一刻林小鸥感受到了什么?恐惧?不安?还是一种奇怪的平静——一种”我知道有什么要来了,而我准备好了”的平静?
她给Richter写了一封新邮件,描述了实验结果和她的新想法。Richter的回复很短:“有趣。我在柏林的数据中观察到了类似的模式——到访者比未到访者在变故后的心理韧性评分更高。也许汇聚点不是命运的十字路口,而是命运的缓冲区。”
命运的缓冲区。陆遥喜欢这个词。它不是终点,不是起点,而是一个过渡空间——一个让即将经历剧变的人在风暴来临前短暂停靠的地方。
十二
十一月的第一天,陆遥收到了两封邮件。
第一封来自公司。蜂巢信用的B轮融资终于谈下来了,国有基金追加了投资,但条件之一是公司必须在半年内完成算法审计,并向监管机构提交完整的模型解释文档。算法透明度委员会的任务骤然加重。
第二封来自Richter。他说他接到了一个邀请——深圳某大学的一个学术会议,请他做关于城市数据中隐相关结构的报告。他问陆遥愿不愿意和他见面,当面讨论合作的可能性。
陆遥犹豫了两天,最终答应了。
Richter是个六十多岁的德国老头,头发全白了,但眼睛很亮,说话的时候手舞足蹈,像在指挥一支看不见的乐队。他们在大学城的一家咖啡馆里见了面,一聊就是五个小时。
Richter对陆遥的实验结果非常兴奋。“你知道吗?这是人类历史上第一次——第一次有人对命运褶皱进行了受控实验。虽然样本量很小,但结果是统计显著的。这意味着这种结构不仅仅是统计巧合——它是真实存在的,可重复的,可干预的。”
“可干预但不可改变。“陆遥说。
“也许。但’不可改变’的结论下得太早了。你的实验只运行了三个月,样本只有两百人。也许在更大的尺度上,在更长的时间线上,干预的效果会累积。也许你只是还没有找到正确的干预方式。”
“你觉得正确的干预方式是什么?”
Richter靠在椅背上,双手交叉放在脑后,看着天花板想了很久。
“我不知道,“他最终说,“但我知道一件事。在我研究命运褶皱的七年里,我最大的发现不是那些汇聚点的存在,而是——每个人都会去。”
“什么意思?”
“我的意思不是每个人都会去柏林的那三个点或深圳的那个点。我的意思是,每个人都有自己的汇聚点——不是同一个地理位置,而是他们人生路径上的同一个结构特征。某些人的汇聚点是一个地方,某些人的是一个时间,某些人的是一个人。我的学生里有一个后来去了东京,他在东京地铁系统的数据里发现了汇聚点——不是空地,而是某条地铁线的某个站点。还有一个人在孟买发现了以时间为维度的汇聚点——某些人会在特定的日期经历一种无法解释的冲动,去做某件他们平时不会做的事。”
陆遥想起了自己那天晚上梦到的门。门上的数字2047。她从来没有告诉任何人那个梦。
“所以这不是一个地理现象。”
“不是。地理只是它的投影——就像影子是物体的投影一样。真正的汇聚点不在空间里,而在人生的结构里。它是路径的奇点,是函数的不连续处。你可以用任何维度来观测它——地理位置、时间、社交关系、消费行为。金融数据让你看到了它的一个投影,交通数据让我看到了另一个。但投影不是实体。”
“那实体是什么?”
Richter笑了,笑容里有一种六十多年的人生才能酿造出的坦然:“如果我知道,我就不会还在研究了。“
尾声
十二月的深圳仍然很温暖。陆遥站在科技园南区那块空地的围挡外面,手里拿着一杯咖啡。
空地已经开始施工了。几个月前那里还是一片杂草丛生的荒地,现在挖土机轰鸣,工人们在浇筑地基。一个销售中心的牌子已经竖了起来,上面写着”未来之城·云创公馆”。
水泥板不在了。那块刻着2047的水泥板,要么被埋在了地基下面,要么被运到了某个垃圾场。陆遥不知道,也不想知道了。
她手里的咖啡还是热的。她低头看了一眼手机——灯塔模型的仪表盘还在运行,但数据在发生变化。自从空地开始施工,GPS信号被建筑遮挡,那个圆形范围内再也没有出现过新的蓝点。
汇聚点消失了。或者更准确地说——它转移了。
灯塔模型在过去两周里标记了几个异常的用户,他们的夜间移动轨迹出现了和以前类似的模式,但目的地不再是科技园南区。他们去了三个不同的地方:白石洲的一片待拆迁的城中村、前海一个还没开通的地铁站、宝安一个废弃的工业园区。
三个新的汇聚点。三颗新的种子。
陆遥喝了一口咖啡。她的身后传来挖掘机的声音,面前是正在拔地而起的钢筋丛林。这座城市永远不会停止建设,永远不会停止拆迁,永远不会停止在旧建筑的废墟上堆叠新的建筑。每一个废墟都是一个旧的汇聚点的坟墓,每一个新的工地都是一个新的汇聚点的温床。
也许Richter说得对。汇聚点不是地理现象——它只是刚好落在了一个空地上。当这个空地消失之后,它会找到另一个空地。就像水永远不会停止流动——你填平了一条河,它就会在旁边开一条新的河道。
她关掉手机屏幕,最后看了一眼正在施工的工地。一个工人正在搬运钢筋,他的背影在冬日的阳光下拉出一条长长的影子。
陆遥转身离开了。
她走出了围挡区域,走上人行道,混入了深圳永不停歇的人流之中。每个人的口袋里都装着一部手机,每部手机都在不停地产生数据——位置、时间、速度、方向。这些数据汇聚成河流,河流在城市的结构中寻找低洼处,在褶皱最深处形成漩涡。
漩涡里有人,有人就是漩涡。
陆遥走进了地铁站,刷卡进站,站在站台上等车。对面站台上也有人在等——密密麻麻的,像是散点图上的那些点。每个人的生活都是一条线,从某个地方来,到某个地方去。大多数时候,这些线平行延伸,永不相交。
但偶尔,在某一个点上,在某一个特定的时刻,两条线会交叉。交叉的那一刻,就是命运褶皱。不是起点,不是终点,只是路径上的一个结构。
地铁来了。车门打开,人涌进去。陆遥跟着人流走进车厢,找了一个角落站着。车门关上,地铁开始移动。
她低头看了一眼手机。灯塔模型又标记了一个人。
她看了一眼编号,看了一眼概率。
88%。
她把手机放回口袋里,抬头看着车窗外飞速掠过的隧道灯光。灯光是一条连续的线,像是有人用金色的笔画在黑暗的画布上。
那条线延伸向远方,看不见尽头。
——列车继续向前。