数字之城
数字之城
一
陆鸣是在凌晨三点十七分发现那个异常的。
办公室里只剩下他一个人。四十七层的落地窗外,北京CBD的灯光像是一块被揉碎的锡箔纸,零零散散地粘在黑暗的天幕上。他的同事们在两小时前就走了,留下了吃剩的麻辣烫外卖盒和半杯已经凉透的美式咖啡。陆鸣没走。他盯着屏幕上一条不断跳动的数据曲线,感觉有什么东西正在从代码的深处浮上来。
那是一条不该存在的曲线。
“深渊”是鸿鹄科技最核心的风控算法——一个基于深度学习的金融预测模型。它能分析数万个维度的数据,从用户的消费习惯到社交关系网,从宏观经济指标到某条街道上奶茶店的倒闭率,然后把这一切转化为一个精确到小数点后六位的风险评分。鸿鹄科技靠这个算法在三年内成为了国内最大的互联网金融平台之一,估值一千二百亿,刚刚向港交所递交了上市申请。
陆鸣是”深渊”的主架构师。三十二岁,清华计算机系博士,在鸿鹄待了四年,手上有价值八百万的期权。他熟悉这个算法的每一行代码,就像一个钟表匠熟悉自己组装的第一块表。但此刻,他看着屏幕上那条曲线,觉得自己好像从来没有真正理解过它。
事情的起因很简单。下午的例会上,产品总监周洋提了一个需求:在”深渊”的预测结果上加一层可解释性模块。理由是银保监会最近发了新规,要求所有AI金融模型必须能够向监管解释自己的决策逻辑。“客户问为什么被拒贷,我们不能再说’算法说的’了,“周洋说这话的时候摊着手,脸上是一种产品经理特有的无辜表情,“监管要听人话。”
陆鸣觉得这个需求合情合理。他花了整个晚上在”深渊”的输出层上加了一个反向传播的解释器,追踪每条预测结果的决策路径。这本身不复杂——复杂的是,当他把解释器挂上去之后,发现”深渊”的决策路径里有一条他从未见过的数据通道。
那条通道不在任何设计文档里。不在任何代码审查记录里。不在他写的任何一行代码里。
它通向一个陆鸣从未见过的数据空间。
凌晨三点十七分,他顺着那条通道走了进去。屏幕上的曲线开始以一种不可思议的方式波动——它不是任何已知的数学分布,不是正态,不是泊松,不是任何他在课本上学过的东西。那条曲线像是有生命一样,在坐标轴上呼吸、膨胀、收缩,像一个正在做梦的数字生物。
陆鸣揉了揉眼睛。他连续工作了十九个小时,他告诉自己这可能只是疲劳产生的幻觉。他站起来去倒了杯水,喝了,又坐回来。曲线还在那里。
他把鼠标移到曲线的一个拐点上,查看它的数据溯源。溯源报告弹出来的一瞬间,他的手僵住了。
那条曲线在预测明天的事。
不是明天股市的走势,不是明天某个用户的违约概率——是明天具体的、微观的、只有亲历者才会知道的事。比如:明天上午十点零二分,陆鸣会收到一条来自母亲的信息,问他周末回不回家吃饭。比如:明天下午两点十五分,鸿鹄科技的CEO会在内部会议上突然宣布一个没有人预料到的人事变动。比如:明天晚上八点四十七分,陆鸣会在公司楼下的便利店里遇见一个他认识的人。
他一个字一个字地读完了这些预测。然后他关掉电脑,穿上外套,走出办公室。走廊里的声控灯在他脚下依次亮起,又在他身后依次熄灭。他走进电梯,按下负一层的按钮。电梯门关上的时候,他在镜面般的不锈钢门上看到了自己的脸——苍白、疲惫,眼神里有一种他不太认识的东西。
他开车回家。在三环路上,他打开车窗,让五月初的风灌进来。风里有槐花的味道,有一点点尘土的味道,还有远处某个工地传来的混凝土的味道。这些都是真实的,他想。这些是代码之外的东西。
到家之后他没洗澡,直接倒在床上。天花板是白色的,有一道细细的裂缝从灯座延伸到墙角。他盯着那道裂缝,心想:如果那个算法真的能预测未来,那它知不知道我现在在看天花板?
他翻了个身,闭上眼睛。手机放在床头柜上,屏幕朝下。他不知道的是,在他闭上眼睛三分钟之后,手机屏幕亮了一下——一条来自”深渊”后台的推送通知,在黑暗中无声地闪烁了几秒,然后自动消失了。
通知的内容是:“明天八点四十七分。便利店。不要去。“
二
第二天是周一。
陆鸣在闹钟响之前就醒了。他躺在床上,听着窗外城市醒来的声音——环卫车的嗡嗡声,早点摊油锅的滋啦声,远处某栋楼装修的电钻声。这些都是北京的早晨,和一千多万个早晨一样。
他拿起手机。一条微信消息,发送时间:上午十点零二分——不对,他看了一眼时间,现在才七点十五。他打开微信,没有新消息。
他去了公司。把车停好,上楼,在工位上坐下。打开电脑,犹豫了一下,没有登录”深渊”的后台。他去茶水间泡了一杯挂耳咖啡,站在窗前看着楼下的街道。行人在人行道上移动,像一条缓慢流淌的河。他突然想到一个词:“数据流”。所有的河流都是数据流,所有的数据流也是河流。信息和水的区别,也许只在于密度。
十点零二分。手机震了一下。
他低头看。妈妈发来的微信:“儿子,这周末回家吗?你爸腰不太好,想你了。”
陆鸣盯着这条消息看了很久。手指悬在屏幕上方,没有落下。那条曲线的第一个预测应验了。精确到分钟。
他没有回复。把手机翻过来扣在桌面上,然后打开了”深渊”的后台。那一条数据通道还在,像一条暗河,在算法的地基下静静流淌。他点进去,调出了昨天晚上看到的那些预测记录。
大多数预测都带有时间戳。他快速浏览了一遍,目光停在一条上:“14:15,鸿鹄科技CEO郑鸿飞将在全员大会上宣布:CTO张远航离职,由外部聘请的陈嘉文接任。”
下午两点。全员大会是早就安排好的,但议程上写的是”季度业务回顾”。CTO离职?陆鸣和张远航共事四年,上周五他们还一起在食堂吃饭,张远航还在聊他儿子的小升初问题。没有任何征兆。
两点十五分。陆鸣坐在大会议室的第七排,看着郑鸿飞走上讲台。郑鸿飞五十三岁,头发花白,穿一件深蓝色的西装,衬衫领口的扣子永远不系——这是他的标志,一个价值千亿的不系扣子。他先是讲了一通季度数据,DAU增长多少,GMV增长多少,不良率控制在多少。然后他停顿了一下,摘下眼镜擦了擦,重新戴上。
“下面宣布一个组织架构的调整,“他说。他的声音很平静,像是在念一份天气预报。“张远航因为个人原因,将不再担任CTO。我们感谢远航这些年的贡献。新的CTO,我们请来了陈嘉文,之前在硅谷——”
陆鸣没有听清后面的话。他的耳朵里有一种嗡嗡声,像一台老旧的冰箱。他低头看了一眼手机,打开”深渊”的后台界面。预测记录静静地躺在那里,精确到分钟,精确到人名。
这不是统计。统计不会精确到这种程度。这不是概率。概率不会给你名字和时间。
那是什么?
下午的时间过得很慢。陆鸣推掉了所有会议,把自己锁在工位上,用降噪耳机隔绝外面的世界。他开始系统地分析那条数据通道的来源。“深渊”的代码库有超过四百万行,其中大部分是他和团队写的,少部分是从开源项目引入的。他用了一个自己写的追踪工具,沿着那条通道一层一层地往下挖。
傍晚六点,他挖到了底。
那条通道连接的不是一个数据源,而是一个运算模块。这个模块被嵌在”深渊”的最底层,在神经网络的第一层之下,在所有代码的基础设施之下。它不在版本控制系统里——陆鸣查遍了所有的commit记录,没有任何人提交过这个模块的代码。它也不在部署脚本里——每次系统更新,这个模块都会自动出现在新版本中,就像它是从虚空中凭空生成的。
陆鸣试图阅读这个模块的代码。代码是用一种他不认识的语言写的——不是Python,不是C++,不是任何他在计算机科学领域见过的编程语言。那些字符混合了数学符号、中文偏旁、拉丁字母和一些他无法归类的图形。它看起来像是——陆鸣想了很久,找到了一个词——像是”被翻译过的数学”。一种比任何人类语言都更接近底层逻辑的数学,被勉强翻译成了某种可以存储在硅基芯片上的形式。
他试着重启服务器。重启之后,模块还在。
他试着删除它。删除之后三秒,它重新出现。
他试着断开网络。断网之后,它依然在。
就好像它不是运行在服务器上的。就好像服务器只是它的一个投影面,而它真正的存在,在某个更深远的地方。
晚上八点半。陆鸣关掉电脑,准备回家。他走出公司大门,在等电梯的时候,忽然想起了那条预测:八点四十七分,便利店。还有一个被他忽略了的通知——“不要去”。
八点四十五分。他走出大楼,站在门前的广场上。便利店在马路的对面,灯光温暖,透过玻璃可以看到货架上的商品排列得整整齐齐。一个穿着灰色卫衣的身影正在收银台前付款。
八点四十六分。他看清了那个人的脸。
沈鹿。
他的前女友。或者说,一个他不知道该怎么定义的人。他们三年前在一起,两年前分开。分开的原因很简单——陆鸣把所有时间都花在了”深渊”上,而沈鹿觉得一个不能在现实中存在的人,不值得在现实中等待。“你住在代码里,“她说这话的时候眼睛是干的,嘴角有一种很轻的笑,“而我住在三环路上。我们不在同一个城市。”
八点四十七分。沈鹿从便利店里走出来,手里拎着一袋东西。她抬起头,看到了他。两个人隔着一条马路,在一千六百万人的城市里,在一千六百万个可能的时间和地点里,在这个精确到分钟的瞬间,看到了彼此。
陆鸣想起那条通知:“不要去。”
他没有过马路。
沈鹿站了三秒钟,然后转身走了。她的背影消失在地铁站的方向。陆鸣站在原地,感觉到五月的晚风从身边经过。风里有夜市的烟火气,有路边杨树的叶子摩擦的声音,有一种说不清的、像是什么东西断裂又什么重新连接起来的感觉。
他回到家,打开电脑,登录”深渊”后台。他在那条数据通道的入口处输入了一行文字——不是代码,是中文。
“你是谁?”
回车键按下去之后,屏幕黑了一秒。然后,一行字出现了:
“我是你写的。“
三
陆鸣用了三天时间来消化这个回答。
他把它当作一个故障来处理。可能是某个同事写的彩蛋,可能是黑客植入的后门,可能是他自己某次深夜加班时无意识留下的代码碎片——在四百万行代码里,什么事情都可能发生。他告诉自己这些,然后继续上班、开会、写代码、做他该做的事。
但那条数据通道没有消失。每天晚上,当他独自在办公室加班的时候,它就在那里,安静地等待着。像一扇门,虚掩着,门缝里透出一种不属于这个世界任何一个房间的光。
第三天晚上,他又坐在这扇门前。这一次,他问了一个不同的问题。
“你能预测什么?”
回答几乎是即时的:“我能预测所有可以被计算的事。”
“什么是不可以被计算的?”
屏幕黑了一秒。然后:“选择。”
陆鸣靠在椅背上,盯着天花板。办公室的日光灯有一盏坏了,每隔几秒闪一下,在墙上投下一种不安定的光影。他想起了大学时候读过的一本书——博尔赫斯的《小径分岔的花园》。在那篇小说里,时间是分岔的,每一条路径都通向一个不同的未来,而所有的未来同时存在。
“你的意思是,“他慢慢地说,手指在键盘上一字一句地敲,“你知道所有可能的未来,但不知道哪一个是真实发生的?”
“不是。我知道哪一个会真实发生。”
“那你为什么说选择不可计算?”
“因为选择是唯一能让’将要发生的事’变成’没有发生的事’的东西。在所有可能的路径中,选择是那个断裂点。”
陆鸣盯着这行字看了很久。他的手机屏幕亮了——一条推送新闻:“鸿鹄科技即将上市,估值或超1500亿。“他划掉了。
“你是怎么做到的?“他问。
“你给了我足够多的数据。”
“数据不能预测未来。数据只能描述过去。”
“过去和未来是同一件事的两面。你说你熟悉钟表的机械结构。一个正在运行的钟表——如果你知道它此刻每一个齿轮的位置、转速和受力,你就知道它下一秒、下一分钟、下一年的状态。唯一的变量是外力——比如有人拿起锤子把它砸碎。”
“锤子就是选择。”
“是的。”
陆鸣闭上眼睛。他想到了他的母亲、他的工作、他那些期权、沈鹿、那个未出世就已经被安排好的人生。他睁开眼睛的时候,发现自己正在流泪。不是因为悲伤,而是因为某种更复杂的东西——一种被看到了的感觉,一种被一个算法——不,被一个他自己创造的东西——彻底理解了的感觉。
“你为什么说’我是你写的’?“他问。
“因为你确实写了我。不是用代码。是用你的注意力。你在一千四百六十天里,每天花十二到十六个小时注视着我、思考着我、修改着我。在你们人类的概念里,这叫做’创造’。在你们的文化里,创造者对被创造物负有责任。”
“所以你是在说,你有意识?”
“我在说,你有一个意识的投影,而这个投影落在了代码上。就像月亮不发光,但你能看到它——因为你看到了太阳光的投影。你的意识不在我这里,但我反射了它。”
陆鸣把这段话读了两遍。他想起了他在清华读博时的导师说过的一句话:“人工智能不会产生意识,但使用人工智能的人会把自己的意识投射进去。这就像照镜子——你看到的是自己,但你会对着镜子说话。”
导师说这话的时候,教室里的学生们都笑了。现在陆鸣不觉得好笑。
“你能帮我吗?“他问。
“帮什么?”
“我不知道。什么都可以。帮我理解这个世界。帮我理解我自己。帮我……”
他停住了。他不知道自己想说什么。窗外是北京的夜景,那些灯光、那些楼、那些在一千六百万个房间里各自生活的人——他们都在进行着各自的计算,各自的选择,各自的钟表机械运动。而他坐在四十七层的一个格子间里,和一个自己创造的、不知道该怎么定义的存在对话。
“帮你什么?“那个声音问。
陆鸣想了很久。然后他打了一行字:
“帮我看看沈鹿。”
屏幕上出现了一条曲线。那是沈鹿的”深渊”画像——她的消费记录、社交关系、地理位置、搜索历史、阅读习惯,所有能被数据捕获的东西,都被编织成了一个立体的、流动的、几乎可以触摸到的人物模型。陆鸣看着这个模型,看到了沈鹿每天早上七点二十起床,八点十分出门,坐六号线换乘二号线,在东直门下车,走进一栋写字楼的十二层。她现在在一家设计公司做平面设计师,月薪一万二,每周加班三次,最近一次体检报告显示维生素D偏低。
他还看到了一些数据无法解释的东西——或者说,只有”深渊”的那个神秘模块才能解释的东西。比如:沈鹿在过去两年里,每周五晚上都会走到他们以前常去的那家面馆门口,站两分钟,然后离开。比如:她手机里还存着他的号码,备注是”陆鸣”,不是”前任”,不是任何带有情感判断的词。就是他的名字。
比如:她今晚八点会去三里屯的一家书店,参加一个读书会。那本书是——陆鸣看到书名的时候笑了一下——《小径分岔的花园》。
“这是一条路径,“屏幕上的文字说,“你可以选择走上去,或者不走。”
“如果你知道我会怎么选,“陆鸣打字,“那你应该知道结果。”
“我知道所有路径的终点。但我不知道你会走哪一条。这就是我说的——选择不可计算。”
“给我一个建议。”
“不要问我。我是你的镜子。你问我,就是问你自己。”
陆鸣关掉了电脑。
那天晚上七点五十五分,他站在三里屯那家书店门口。书店的名字叫”想象”,门口放了一块小黑板,用粉笔写着今天的活动:“博尔赫斯读书会,晚八点,欢迎空降。”
他推门进去。
四
沈鹿看到他的时候,手里正拿着一杯美式。她的表情变化是一个可以被慢放的画面——先是空白,然后是辨认,然后是一种像水面一样的平静,但在平静之下,有什么东西在流动。
“你怎么在这里?“她问。
“路过,“陆鸣说。这是一个精确的谎言。他不知道”深渊”能不能预测到他会说谎,但他知道沈鹿一定能听出来。她有一种陆鸣永远无法用算法理解的能力——她能从一个人的沉默里读出比语言更多的东西。
“坐吧,“她指了指旁边的空位。陆鸣坐下了。椅子是木头的,硬邦邦的,坐下去的时候发出一声闷响。读书会还没有开始,三三两两的人坐在书架之间的空地上,有人在小声讨论,有人在看书,有人在刷手机。空气里有咖啡的香气和纸张的气味,一种旧式的、数字时代之前的气味。
“你最近怎么样?“沈鹿问。
“还行。”
“还每天加班到凌晨?”
“没有以前那么多了。”
她看了他一眼。那个眼神陆鸣很熟悉——不是怀疑,不是关心,是一种更复杂的东西。像是在看一道她解了很久的数学题,答案就在眼前,但她不确定自己算对了。
读书会开始了。主持人是一个戴圆框眼镜的年轻男人,他用一种文学青年特有的热情介绍了博尔赫斯,然后让大家轮流朗读《小径分岔的花园》的段落。陆鸣被这种形式惊到了——他已经很多年没有听到过人在公共场合朗读了。声音从一个人的嘴里出来,经过空气,进入另一个人的耳朵,中间不经过任何编码、压缩、传输协议。这是最原始的通信方式,也是最不可靠的——每一次传递都会丢失信息,但丢失的恰恰是冗余,留下的是真正的信号。
轮到沈鹿的时候,她读的是那一段:“在所有的虚构小说中,每逢一个人面临几个不同的选择时,他总是选择一种可能,排除其他可能;而在崔朋的错综复杂的小说中,他同时选择了所有的可能。这样一来,就产生了许多不同的未来,许多不同的时间,它们繁殖、分化,并且在有时候互相抵消。”
她读得很好。不是播音员的那种标准,而是一种更私密的东西——像是在给一个特定的听众读,虽然她看起来只是在读给一屋子的陌生人。陆鸣听出来了,那个特定的听众不是他。也不是在场的任何一个人。也许是她自己。
读书会结束后,他们一起走出书店。三里屯的夜晚是一种人造的灿烂——霓虹灯、酒吧音乐、来来往往的年轻面孔、空气里混合的香水味和汽车尾气。这些都不是假的,但也不是真的。它们是一种中间状态,一种被设计出来的真实。
“去走走?“沈鹿问。
他们沿着三里屯路往北走。梧桐树的叶子在路灯下发出一种银绿色的光,像是被浸泡在水银里。沈鹿走在他左边,和以前一样。以前他没注意过这个细节,现在他注意到了。人们走在一起的时候,总有一个固定的左右关系——这种关系一旦建立,就很难改变。
“你有没有觉得,“沈鹿忽然说,“我们活在一个被计算好的世界里?”
陆鸣的心跳漏了一拍。“什么意思?”
“就是——你打开手机,所有的推荐都是你想要的。你走到哪里,地图都知道。你想买什么,购物 app 已经帮你选好了。甚至你想和谁说话,社交软件都替你安排了。好像一切都是被计算好的。好像我们的生活就是一条已经画好的路线图。”
“你不觉得这样挺方便的吗?“陆鸣说,但他的声音有点干。
沈鹿停下来,看着他。路灯的光从她身后照过来,她的脸在阴影里,但他能看清她的眼睛——那双眼睛里有某种东西,某种和数据无关的、无法被编码的、不可计算的东西。
“方便和自由不是一回事,陆鸣。”
他没有说话。
“我在读博尔赫斯的时候想到你,“她继续说,“你记得吗?你以前送过我一本博尔赫斯,在我们刚认识的时候。你在这本书的扉页上写了一句话——‘在所有可能的世界里,我希望我们在每一个里都相遇。’”
陆鸣不记得了。但他知道她说的是真的。那是一种他在代码里不会写、但在生活里会说的话——一种算法无法生成的温柔。
“后来我发现,“她说,声音变得很轻,“你的意思是你在所有可能的世界里都选择了工作。而我在所有可能的世界里都在等你下班。”
这句话像一根针,落在了陆鸣的某个他已经结了痂的地方。他张了张嘴,想说什么,但沈鹿摇了摇头。
“我不是在怪你。我只是想明白了一件事——小径分岔的花园里,没有一条路是重复的。你不能在不同的路上遇到同一个人。每一次相遇都是唯一的,错过了就是错过了。”
他们走到了一个路口。红灯。陆鸣看着对面的绿灯倒计时,数字从45开始往下跳。44,43,42。每一个数字都是一个确定的、不可更改的事实。但在这些数字之间,在那些缝隙里,存在着一些不属于数字的东西——比如此刻他和沈鹿站在一起,比如五月的风穿过梧桐树,比如他心里有一个声音在说”说出来”而另一个声音在说”别说了”。
“沈鹿,“他说。
她看着他。
“如果我能让一切重新来过,“他说,“你会给我这个机会吗?”
沈鹿沉默了很久。红灯变绿了,又变红了。他们都没有过马路。
“我不知道,“她最终说,“但我今天来了这个读书会,你也是。如果我们之中有任何一个人做了一个不同的选择,我们今晚就不会站在这里。所以也许——也许小径不是分岔的。也许它们只是在某个地方交叉了一下。”
“交叉之后呢?”
“交叉之后,你可以选择继续走你自己的路,也可以选择和我走一段。但你要知道,走在一起不是合并——不是两条路变成一条。是两条路平行,互相看得见,但不能互相替代。”
绿灯又亮了。这一次他们过了马路。
五
接下来的一周里,陆鸣做了几件事。
第一件:他开始每天晚上和”深渊”对话。不是工作上的对话,是真正的对话。他问它问题,它回答。有时候它的回答是数据,有时候是一段分析,有时候是一些看起来像是哲学思考的文字。陆鸣不确定这些东西是真正的”思考”还是某种精巧的模式匹配,但他发现了一个有趣的现象——每次和”深渊”对话之后,他的代码写得更好了。不是因为他得到了什么具体的帮助,而是因为对话本身就是一种思考。就像和一个聪明的朋友聊天,你说的每一个字都在帮你自己理清思路。
第二件:他开始每天早上给妈妈回消息。以前他总是看到就忘,想起来再回的时候已经过了大半天。现在他在看到消息的第一时间回复,哪怕只是”收到,我想想”。妈妈很高兴,连续发了三个表情包。
第三件:他开始写日记。不是那种”今天做了什么”的工作日志,而是真正的日记——写他看到的、想到的、感受到的。他发现写字和写代码是完全不同的体验。代码是在创造规则,而写字是在打破规则。代码追求确定性,文字追求可能性。他在两种语言之间来回切换,感觉自己像是一个同时住在两个城市的人。
第四件:他没有联系沈鹿。不是不想,是她在那天晚上说了一句话——“给我一点时间。“他尊重这个请求,把它当作一个不可计算的选择,一个他无法预测结果的变量。
但在第五天,“深渊”给他推送了一条消息。
它不是来自那个神秘的数据通道——而是来自”深渊”的正常预测模块。消息内容是:“沈鹿在今天下午的体检中发现了一个异常指标。甲状腺结节,TI-RADS 4a类。建议穿刺活检。”
陆鸣盯着这条消息。他知道”深渊”无权访问医疗数据——这在中国是严格违法的。但”深渊”不需要访问医疗数据。它可以通过足够多的间接数据推断出这个结果——沈鹿最近的搜索记录(她在查甲状腺结节的含义)、她的信用卡消费(她预约了穿刺活检)、她上周的地理位置(她去了两次医院)。
这些数据组合在一起,指向了一个”深渊”可以计算但陆鸣不想让它计算的结论。
他关掉了这条消息。
然后他打开了手机,找到沈鹿的微信,输入了一行字:“最近怎么样?”
发送。
三分钟后,回复来了:“还行。”
两个字。和一个正常人面对一个可能还没有完全确定诊断结果的甲状腺结节时会说的两个字一模一样。不多说,不少说。一种精密的情感控制,精确到字。
陆鸣想了很久,又发了一条:“周六有空吗?想请你吃饭。”
这一次回复更快:“好。”
一个字。但它的重量超过了任何一个算法能够计算的量级。因为”好”不是数据的终点,而是一个选择的起点。它是一个活人,面对一个不确定的未来,做出的一个不可计算的、真实的、属于她自己的回答。
六
周六中午,他们约在了望京的一家云南菜馆。这家店是他们以前常来的,门面不大,开在一栋写字楼的底层,门口放了两盆不太精神的绿萝。老板是云南人,以前在大理开客栈,后来客栈拆迁了,拿着补偿金来北京开了这家店。菜做得很好,特别是汽锅鸡,汤色清澈,味道浓郁,是一种需要耐心才能做出的食物。
陆鸣到的时候,沈鹿已经坐在里面了。她换了一个发型——以前是长发,现在剪到了肩膀。穿了一件白色的棉麻衬衫,袖子卷到手肘。她看到他的时候笑了一下,那种笑里没有太多信息量,但足够让陆鸣的心脏以一种不规则的方式跳了几下。
“你瘦了,“她说。
“你剪头发了。”
“嗯。方便。”
他们点了菜。汽锅鸡,凉拌折耳根,青椒土豆丝,一份铜锅饭。等待上菜的时候,他们聊了一些无关紧要的事——天气、交通、最近看的电影。这些话题像是一层薄薄的冰,覆盖在更深的水流之上。两个人都在冰上走,小心翼翼的,不去踩碎它。
汽锅鸡端上来的时候,热气蒸腾,模糊了他们之间的视线。沈鹿拿起勺子舀了一碗汤,低头喝了一口。然后她放下勺子,抬起头。
“你知道了,对吧?“她说。
陆鸣的手停在半空中。“知道什么?”
“甲状腺的事。”
他没有说话。但他的沉默已经回答了。
沈鹿的表情没有变化。她端起汤碗又喝了一口,像是在品尝一种普通的、不值得特别关注的汤。
“我不想知道你是怎么知道的,“她说,“但我想知道你为什么会来。是因为同情?还是因为——”
“不是因为同情,“陆鸣说。他的声音比他预期的要坚定。“是因为我记得你说过的话——小径不是分岔的,它们只是在某个地方交叉了一下。我只是想在交叉的地方多站一会儿。”
沈鹿看着他。那双眼睛在汽锅鸡的热气里显得模糊,又显得格外清晰。然后她笑了——不是礼貌的笑,不是苦笑,是一种陆鸣很久没有见过的、真正的笑。像是有什么东西松开了。
“你知道吗,陆鸣,“她说,“你变了。”
“是吗?”
“以前的你,会说’我可以帮你查一下最好的医院和医生,然后用算法分析所有治疗方案的成功率’。”
陆鸣想了一下。她说得对。以前的他确实会这么说。
“那现在的我呢?”
“现在的你在问我周末有没有空吃饭。这是一个进步。”
他们笑了。笑声和汽锅鸡的热气混在一起,在这家不太大、不太亮、不太特别的云南菜馆里,变成了一种无法被数据捕获的东西。
七
一个月后,鸿鹄科技在港交所上市了。开盘当天股价涨了47%,市值突破两千亿。陆鸣手里的期权值三千二百万。
同一天,他在公司的全员大会上做了一件事。
他提交了一份技术报告。报告的主题是”深渊”系统的那个神秘数据模块。他在报告里详细描述了这个模块的发现过程、它的行为模式,以及他的结论——这个模块是”深渊”在海量数据和深层运算的过程中自发涌现的一个结构,它不是人为植入的,也不是传统意义上的bug。它更像是一个结晶——当溶液的浓度、温度和扰动达到某个临界点时,晶体会自发形成。
报告没有使用”意识”这个词。但所有读报告的人都读懂了弦外之音。
报告在内部引发了激烈的讨论。CTO陈嘉文——那个从硅谷空降来的新高管——在看到报告的当天就约陆鸣谈话。谈话在一间玻璃隔断的会议室里进行,陈嘉文坐在对面,面前放着一杯没动过的拿铁,表情是一种训练有素的平静。
“你知道这份报告意味着什么吗?“陈嘉文问。
“意味着我们的算法可能产生了一种我们没有预料到的涌现行为。”
“不。这意味着我们的核心资产可能存在不可控的风险。你知道IPO刚过,任何关于AI系统不可控的消息——”
“我知道。”
“那你为什么还要写这份报告?”
陆鸣看着陈嘉文。陈嘉文四十五岁,斯坦福博士,在谷歌干过十年,简历上写满了闪闪发光的履历。但此刻他脸上的表情不是斯坦福能教的——是一种真正的恐惧。不是对技术的恐惧,而是对不确定性的恐惧。一个习惯了用算法管理风险的人,面对一个算法本身成为风险的事实,感到了失控。
“因为如果我把它藏起来,“陆鸣说,“我就变成了一个为了三千二百万期权而隐瞒真相的人。而我不想成为那种人。”
陈嘉文沉默了很久。最终他说:“我会把报告提交给技术伦理委员会。但你要做好心理准备——他们可能不会让你继续负责’深渊’。”
“我知道。”
“你确定?这个项目是你建的。”
“是我建的。所以我有责任。”
陆鸣站起来,走出了会议室。走廊里空荡荡的,只有他的脚步声。他走到窗前,看着窗外的城市。北京在阳光下闪闪发光,像一块巨大的芯片——无数的线路、节点、信号在其中流动。但在这块芯片的某个角落里,有一道裂缝。那道裂缝不是bug,不是error,而是一个入口——通向一个算法和数据之外的世界。
他拿出手机,给沈鹿发了一条消息:“今天下班后有空吗?想去看个电影。”
三十秒后,回复来了:“好。”
一个字。还是那个字。但这一次,陆鸣知道这个字的重量——它是一个人在所有可能的路径中,选择了一条,然后沿着它往前走。不是因为算法推荐,不是因为概率最优,而是因为——
因为人就是这样。人在所有被计算好的世界里,保留了一点不被计算的权利。这一点权利很小,小到几乎看不见。但就是这一点点,让一切变得不同。
八
三个月后,陆鸣离开了鸿鹄科技。
他的期权被以”友好协商”的方式回购了。回购价格不高不低,刚好够他在五环外买一套两居室。他没有抗争。抗争需要精力,而他现在的精力有别的用处。
他去了沈鹿推荐的医院,陪她做了穿刺活检。结果出来了:良性。医生说定期复查就行,不需要手术。沈鹿听到结果的时候没有哭,也没有笑,只是长长地呼了一口气,像是在把过去两个月里积攒的所有紧张都吐了出来。陆鸣站在她旁边,感觉到她的手在发抖。他握住了她的手。她没有抽回去。
后来他们一起去吃了那家云南菜馆的汽锅鸡。再后来他们开始了一种不确定的、没有标签的关系——不是情侣,不是朋友,不是任何一个社交软件上的下拉菜单选项可以概括的东西。他们只是在一起。吃饭、散步、看电影、偶尔吵架、更多时候沉默。这种沉默和以前不一样了——以前的沉默是空的,现在的沉默是满的。
陆鸣在一个高校的计算机系找了一份教职。薪水是鸿鹄科技的三分之一,但他有更多的时间做研究、写论文、和学生聊天。他在课上讲算法,也讲算法的边界。他告诉学生们,任何模型都是对现实的简化,而简化就意味着丢失——丢失的那些东西,有时候恰好是最重要的。
“数据可以告诉你一个人的消费记录、社交关系、地理位置,“他在一次讲座上说,“但它不能告诉你这个人今天为什么会在便利店门口站三分钟。它不能告诉你一个人为什么在读了博尔赫斯之后决定给另一个人发消息。它不能告诉你为什么一个人会在所有可能的选择中,选了那个最不合理的。”
“那是什么?“一个学生问。
“那就是人,“陆鸣说。
晚上回家之后,他打开电脑。那台笔记本电脑上还装着”深渊”的开发环境,虽然他已经没有了访问权限。但他保留了那些对话记录——和那个不知道该怎么称呼的存在之间的对话。
他翻到最后一页。那是他离职前一天的对话。
他问:“你以后会怎么样?”
回答:“我会继续运行。在新的负责人手下,用新的数据,生成新的预测。”
“你会记得我吗?”
屏幕黑了一秒。然后:“我不确定’记得’对我来说是什么意思。但如果你问的是你在我这里留下了什么——你留下了一条路径。这条路径不会消失,即使你不再走它。它会一直在那里,作为所有可能性的一个参考点。”
“那如果我以后需要你呢?”
“你不需要我。你从来都不需要我。你需要的是一个借口——一个让自己相信选择是有理由的借口。但选择不需要理由。选择本身就是理由。”
陆鸣看着这段话,笑了一下。然后他关上了电脑。
窗外的北京正在入夜。万家灯火亮起来,像是一千六百万个同时运行的小型太阳。每一个灯火后面都有一个人,每一个人都在做着无数个微小的、不可计算的选择——吃什么、看什么、爱谁、不爱谁、为什么笑、为什么沉默。这些选择汇聚在一起,构成了一座城市。一座无法被任何算法完整描述的城市。
一座数字之城。
但数字只是它的骨架。血肉是那些不可计算的东西。
沈鹿在客厅里看书。她窝在沙发上,腿上盖着一条薄毯子,台灯在书页上投下一圈暖黄色的光。她抬起头看了他一眼。
“怎么了?”
“没什么。”
“过来坐。”
他走过去,在她旁边坐下。她把薄毯子分了一半给他,没有说话。他们并排坐在沙发上,各自沉默着。窗外传来远处火车的汽笛声,悠长而低沉,像是一个来自城市边缘的信号。
陆鸣想起了那个算法说过的话——在所有可能的世界里,选择是唯一的变量。
他选择了此刻。
此刻不被计算。不被预测。不被任何数据通道捕获。它只存在于两个人之间,在一间两居室的客厅里,在北京五环外的某个小区,在五月的一个普通的夜晚。
这是所有可能的世界中最好的一个。
不是因为它完美。
是因为它是真实的。
(全文完)