赤子数之契约

招魂者 · 2026/5/17

赤子数之契约

一、凌晨三点的异常

陈屿发现那个异常的时候,是凌晨三点十七分。

办公室里只剩下他一个人。二十三层的落地窗外,深圳南山区的天际线像一条发光的脊椎,那些写字楼里的灯灭了大半,只剩几家还在亮着——要么是和他一样的程序员,要么是某个正在崩溃的创业团队。

他在做”赤子”系统的第三十七次迭代。

“赤子”是元信科技的核心推荐引擎,负责给两亿三千万用户推送内容。你刷到什么视频、看到什么广告、被推荐哪家餐厅的外卖——都由”赤子”决定。陈屿是这套系统的高级算法工程师,工号0417,入职第四年,年薪七十二万,公积金按最高比例缴存,每月还房贷一万四千三百块。

他习惯在深夜跑模型。白天的服务器队列总是排满,每秒要处理八百万次请求,没有多余的算力留给他做实验。凌晨三点以后,流量降到峰值的百分之三,他才能用那些闲置的GPU集群做自己的事。

这次迭代的目标是优化”用户生命周期价值预测”模块。简单说,就是预测一个用户在未来十二个月内能给平台贡献多少钱。这个数字决定了平台在每个用户身上投入多少推荐资源——高价值用户看到的是精心策划的内容流,低价值用户看到的是能快速变现的廉价内容。

陈屿把训练数据从默认的三十天扩大到了一百八十天。他想看看更长的时间窗口会不会提高预测精度。数据从平台的用户行为日志里抽取,包括每一次点击、停留、滑动、搜索、购买、退货、投诉、沉默。

他跑完了第一个epoch,查看损失函数曲线时,发现了不对劲的地方。

模型在预测某些用户的”价值”时,出现了一种奇怪的模式。不是数值上的偏差,而是时间上的——模型似乎在用未来的数据预测过去。

陈屿揉了揉眼睛。他盯着屏幕上的损失曲线看了整整三分钟,然后重新检查了数据管道。

没有数据泄露。训练集和验证集的划分是正确的。时间戳没有错乱。

他又跑了一遍。

结果依然一样。有一小批用户——大约占总量的万分之零点七——他们的行为模式呈现出一种不可能的特征:他们的行为序列里,存在”因果倒置”的痕迹。比如,一个用户在搜索某个关键词之前,他的停留时长就已经发生了与该搜索相关的变化。就好像他还没搜索,就已经知道自己要搜什么。

不,不只是搜索。陈屿把数据拉出来逐条看。一个叫”王建军”的用户,编号U-20987XXXX,在四月十二日下午两点十四分点击了一个外卖广告。但在两点十一分——广告出现之前三分钟——他的滑动速度就已经开始变化了。正常人的滑动速度是每秒1.2到2.8个内容卡片,但王建军在那三分钟里的滑动速度稳定在每秒0.4个卡片,就像他在等什么他知道会出现的东西。

陈屿打开了更多的用户样本。

王建军,三十七岁,注册地为东莞市。职业标签为”外卖骑手”。设备型号是红米Note 12,屏幕上有一道裂纹,触控响应偶尔失灵。他每天使用APP的时间是四到六个小时,主要集中在两个时段:上午十点到下午两点,晚上六点到十点——这是他送外卖的空闲间隙。

他的”用户生命周期价值预测”分数极低。系统判定他在未来十二个月内几乎不会产生任何有意义的商业价值。

但模型同时给出了另一个预测——一个陈屿从未在系统里定义过的预测。

模型的隐藏层里,有一组神经元被异常激活了。这组神经元对应的是一个陈屿三年前就废弃掉的特征维度——“用户情绪状态”。当时这个特征因为隐私合规问题被移除了,相关的神经元应该已经被剪枝归零。

但现在,它们活了过来。

它们的激活值在王建军的数据上形成了一个清晰的波形,陈屿花了二十分钟才认出来——那是一条情绪曲线,从某种接近平静的状态开始,在未来六十天内缓慢下降,穿过一个又一个阈值,最终在第53天触及零。

陈屿不知道零代表什么。但这组废弃的神经元以前是被训练来预测”用户流失概率”的,零——在原来的标签体系里——代表”永久离开”。

不是卸载APP,不是注册新号,是”永久离开”。

他的手指悬在键盘上方。窗外的天际线依然亮着,但有几栋楼的灯又灭了。

他把数据导出来,用自己笔记本上的本地模型重新跑了一遍。结果一致。

然后他打开了更多”异常用户”的列表。万分之零点七,两亿三千万用户中的万分之零点七——一千六百一十个人。

他们有一些共同特征:都是男性,年龄在三十五到四十五岁之间,职业标签集中在”外卖骑手""快递员""网约车司机""工厂工人”这几个类别。他们的设备大多便宜,屏幕常有裂纹。他们使用APP的时间碎片化,集中在工作间隙。他们的消费能力极低,几乎不点击任何付费广告。

还有一点:他们的”永久离开”预测时间高度集中,全部落在未来第48天到第67天之间。

陈屿关掉了屏幕。他走到办公室的落地窗前,把自己的额头贴在冰凉的玻璃上。

楼下的马路上,一辆电动车无声地滑过。骑手穿着黄色的制服,后座的外卖箱上贴着一层反光条。他的速度很快,在空旷的凌晨街道上划出一道短暂的光线。

二、外卖骑手王建军

王建军每天早上六点半起床。

他住在东莞长安镇的一间出租屋里,月租八百。房间十二平米,一张折叠床、一个电磁炉、一个塑料衣柜。墙上贴着一张女儿的照片,那是他三年前回老家时拍的。女儿今年八岁,跟着他前妻在湖南益阳。

他七点出门,骑上那辆二手电动车,先去站点签到,然后开始接单。美团和饿了么他同时跑,哪个单价高就跑哪个。旺季的时候一天能跑六七十单,淡季三十多单。每单平均五块五到七块,一天的收入在两百到四百之间浮动。

他每个月的开销是:房租八百,电动车充电两百,吃饭一千二(他几乎只吃沙县小吃和兰州拉面),给前妻转女儿的生活费两千,还网贷一千五。剩下的钱存起来,目标是攒够女儿下学期的学费。

他的网贷是三年前借的。当时女儿要做一个小手术,前妻打电话来哭,他当天就从一个叫”闪电借”的APP上借了三万。年化利率36%——他当时没看清楚,后来才知道。三年过去了,他已经还了四万八,但本金还剩一万七没还清。利滚利。

王建军不太懂数学,但他知道一个道理:他的钱永远不够。

他每天刷手机的时间很长,主要是等单的时候。他喜欢刷短视频,看一些搞笑的、猎奇的、或者讲军事历史的内容。算法很了解他——每当他感到焦虑的时候,就会给他推一些”励志”的视频:某个人白手起家创业成功,某个人从负债百万到年入千万。他看完之后会短暂地觉得生活还有希望,然后继续接单。

四月十二日下午,他接了一个送往长安医院的外卖。下单的是一个护士,备注写着”尽快,只有二十分钟吃饭时间”。王建军在十三分钟内送到了,比预计时间早了两分钟。他站在医院门口喘气的时候,看到急诊室的方向推出了一辆平车,上面躺着一个人,脸上盖着白布。

一个中年女人跟在平车后面走,她的嘴唇在动,但发不出声音。

王建军站在原地看了很久。他不知道那个人是怎么死的,但那个女人的表情让他想起了他母亲去世时父亲的样子——不是悲伤,而是一种彻底的茫然,像是有人突然告诉你,你以为存在的某个东西其实从来不曾存在。

他回到电动车上,看了一眼手机。APP给他推送了一个视频,标题是”35岁以后的人生还有翻盘的机会吗”。

他点进去了。视频里的人说:“人生没有太晚的开始。”

王建军没有翻盘。他继续接单。

三、另一种数学

陈屿用了三天时间分析那一千六百一十个用户的异常数据。

他发现的第一件事是:那组废弃的”情绪状态”神经元并不是随机被激活的。它们的激活模式与一个数学函数高度吻合——确切地说,是一个衰减函数,形式为 f(t) = A·e^(-λt),其中 A 是初始情绪值,λ 是衰减系数,t 是时间。

这个函数描述的是一个指数衰减过程。在物理学中,它被用来描述放射性衰变;在经济学中,它被用来描述资产折旧。但现在,它描述的是人的情绪——或者说,人的生命力——的衰减。

不同的用户有不同的 λ 值。王建军的 λ 是0.048,意味着他的”情绪值”每过一天衰减约百分之四点七。按照这个速度,从当前的初始值出发,大约53天后,他的情绪值会降到趋近于零。

陈屿发现的第二件事更让他不安:λ 值与用户的财务状况高度相关。更准确地说,λ 与用户的”债务收入比”之间的相关系数达到了0.91。

债务越重,衰减越快。

这不是因果关系——至少从数据上无法确定因果关系。也许是债务导致情绪恶化,也许是情绪恶化导致债务增加,也许有第三个变量同时在影响两者。但相关性是实实在在的,而且强得惊人。

陈屿开始觉得这不是一个技术问题。

他是一个算法工程师,不是社会学家,不是哲学家,也不是牧师。他的工作是用数学建模人的行为,然后用模型优化商业指标。他做这件事做了四年,做得很好。他的模型让”赤子”系统的推荐精确度提高了百分之十二,让平台的广告收入增加了三十七亿。他的绩效考核年年拿A,他的期权明年就能行权。

但他从来没有想过一个问题:他建模的那些”行为”,到底是什么?

每次点击、每次滑动、每次停留——这些被抽象成向量空间中的点,被矩阵运算处理,被损失函数评估——它们的本体是什么?

是人吗?

陈屿坐在工位上,看着屏幕上那一千六百一十个用户的衰减曲线。它们像一千六百一十条河流,从不同的起点出发,以不同的速度流向同一个终点。

他做了一个决定。

他打开了王建军的完整行为数据——这是合规灰色地带,但他的权限够——开始从头阅读。

不是读数据,是读人。

四、一个人的数据画像

王建军的数字生命是从2019年3月15日开始的。那天他注册了微信,用的是一个136开头的手机号。他的第一个微信好友是他的前妻,当时还是他老婆。他的第一条朋友圈是一张女儿的照片,配文是”我家小公主”。

从那以后,他在互联网上留下了大约两百七十万条行为记录。每一次打开APP、每一次搜索、每一次点击、每一次停留、每一次关闭——全部被记录在服务器上,压缩、索引、归档。

陈屿把这些数据按时间排列,像读一本日记一样从头到尾看了一遍。

2019年:行为模式正常。高频使用微信和抖音,主要在晚上八点到十一点。搜索记录以”育儿""家常菜""摩托车”为主。电商消费集中在母婴用品和家居用品。

2020年:行为开始出现波动。搜索记录里出现了”网贷""借款""小额贷款”等关键词。深夜使用手机的时长增加,凌晨两点到四点的活跃度上升。他开始频繁使用比价APP,关注优惠券和打折信息。

2021年:波动加剧。搜索记录里出现了”离婚""抚养权""律师”等关键词。他的外卖APP使用时间从晚上转移到了白天——他成了外卖骑手。他的APP使用模式变成了碎片化的短时段,平均每次使用不超过三分钟。他不再发朋友圈。

2022年:相对平稳。行为模式稳定在一个低水平的稳态上。他每天使用手机的时间增加了——因为送外卖的间隙更多了——但使用深度降低了。他几乎不再搜索任何东西,只是被动地刷推荐流。他偶尔会在深夜打开一个叫”小鱼”的直播APP,看一个叫”湘妹子”的主播唱歌。他从来没有打赏过。

2023年:陈屿注意到了一个细节。四月七日,王建军在抖音上停留了四十三秒看一个视频——这是他近三个月来最长的单条停留时间。视频的内容是一个外卖骑手在暴雨中摔倒,膝盖流了很多血,但他爬起来继续送完了那一单。视频的配乐是《平凡之路》。

四月八日,王建军搜索了”外卖骑手摔伤算工伤吗”。

四月九日,他搜索了”意外险怎么买”。

四月十日,他搜索了”寿险一年多少钱”。

陈屿看着这几条搜索记录,手指不自觉地攥紧了。

五、南方周末

陈屿决定见一见王建军。

这不是一个容易的决定。他的工作合同里有严格的保密条款,他查看王建军的详细行为数据已经越过了红线,如果被公司知道,轻则开除,重则面临法律诉讼。更不用说主动联系用户——这是绝对禁止的行为。

但他还是做了。

他用了四天时间设计了一个方案。他知道王建军每天中午十二点到一点之间会在长安镇的一家沙县小吃吃午饭——这是他从位置数据里推算出来的。他在美团上下了一单外卖,配送地址写的是那家沙县小吃旁边的便利店,配送时间定在中午十二点半。

然后他去了东莞。

从深圳开车到长安镇只要一个半小时。陈屿开着他那辆分期付款的特斯拉Model 3,在高速公路上听着播客。播客里两个人在讨论GPT-5会不会让一半的程序员失业,他觉得这个话题很无聊。

到了长安镇,他找到了那家沙县小吃。很小的一个店面,六张桌子,墙上贴着手写的菜单。他在角落的位置坐下来,点了一碗拌面和一碗炖罐汤。

十二点二十分,一个穿着美团骑手服的人推门进来了。

王建军比陈屿想象中更瘦。他的脸上有一道浅浅的疤,从左眉角一直延伸到颧骨,可能是摔车留下的。他的手指很粗糙,指甲里嵌着黑色的污垢。他点了一碗拌面——没有加蛋,没有加汤,就是一碗七块钱的拌面。

他坐在靠门的位置,把手机放在桌上。屏幕上有一道裂纹,从左上角延伸到中间。

陈屿看着他吃面。王建军吃得很快,像是习惯了在极短的时间内完成所有事情。吃完后他拿起手机,开始刷短视频。

陈屿注意到了他刷的内容。一个搞笑段子,停留两秒,滑走。一个美食视频,停留一秒,滑走。一个”35岁以后如何翻身”的视频,停留了四秒。

然后他的手指停了。

屏幕上是一个小女孩在跳舞。不是王建军的女儿——但年纪差不多。视频里的小女孩穿着粉色的裙子,在一个简陋的客厅里旋转。背景音乐是一首儿歌,旋律很简单。

王建军看了十四秒。

陈屿知道十四秒意味着什么。在一个平均停留时长不到两秒的推荐流里,十四秒是一次漫长的凝视。

王建军放下手机,结了账,推门出去。他的电动车停在门口,车座上有一个塑料袋,里面装着一瓶矿泉水和一包五块钱的烟。

陈屿跟了出去。

“师傅,“他叫了一声。

王建军回过头来。他的表情是那种在城市里被陌生人叫住时常有的警惕。

“我是做互联网的,“陈屿说。他不知道该怎么开场,就说了最笨的一句。“我想跟你聊几句。”

“聊什么?”

“你平时用什么APP?”

王建军皱了皱眉。“你卖保险的?”

“不是。我做算法的。”

“什么算法?”

“就是……你刷手机的时候,给你推荐内容的那个算法。”

王建军的表情变了。不是警惕,是一种更复杂的东西——像是听到了一个自己从未想过存在的东西的名字。

“你是说,有人知道我看什么?”

“不是’有人’。是算法。一个程序。它根据你的行为来预测你想看什么,然后把那些内容推给你。”

王建军沉默了几秒钟。然后他说了一句让陈屿愣住的话:

“那它知不知道我不想活了?“

六、64天

陈屿在长安镇的如家酒店住了一晚。

他没有回答王建军那个问题。他不能回答。他只是说”算法不知道你这么想”,然后王建军笑了一下——一种很淡的笑,像是一扇窗户被推开了一条缝,然后又关上了。

“走吧,“王建军说。“我还有单子要送。”

他骑上电动车走了。陈屿站在路边看着他消失在车流里,然后回到酒店,打开笔记本电脑,把王建军的最新数据拉了出来。

那个衰减函数正在按预测运行。王建军的λ值从0.048上升到了0.051——衰减在加速。

按照模型预测,他的”情绪值”将在64天后趋近于零。

64天。从今天算起,就是七月五日。

陈屿合上电脑,躺在酒店那张硬邦邦的床上,盯着天花板。隔壁房间传来电视的声音,是一个选秀节目,观众在尖叫。

他开始思考一个他从来没有认真想过的问题:他能做什么?

他是算法工程师。他写的代码影响两亿三千万人的信息摄入,但他从来没有真正影响过任何一个人的生活。他的工作——用他前女友的话说——就是”帮资本家更高效地割韭菜”。她是在分手时说这话的,当时他觉得这是文科生对技术的偏见。现在他不确定了。

他重新打开电脑,建了一个本地项目文件夹,命名为”赤子救人计划”。

计划很简单:如果模型能预测”衰减”,那么理论上,他可以通过改变推荐内容来改变衰减速率。换句话说——如果他给王建军推送不同的内容,那些能缓解情绪衰减的内容,而不是加速它的内容,他能不能让那条衰减曲线平缓下来?

这是一个实验。一个没有伦理审查、没有学术监督、没有 Institutional Review Board 批准的人体实验。

但陈屿不在乎。

他开始分析”赤子”系统的推荐日志,看看它给王建军推了什么。

结果让他沉默了很久。

在过去三十天里,系统给王建军推送了347条内容。其中:

系统的逻辑很清晰:王建军的商业价值极低,不值得投入优质推荐资源。对他,最优策略是用最快的方式榨取最后一点广告收入。

算法没有恶意。它只是在做它被设计来做的事:最大化平台收入。它不知道王建军是一个人。在它的世界里,王建军只是一个用户ID,一组行为向量,一个要被优化的数字。

陈屿开始写代码。

他给自己留了一个后门——一个可以绕过推荐引擎,直接向特定用户推送特定内容的接口。这个接口本来是用于A/B测试的,只有极少数高级工程师有权限。他用这个接口建立了一个”影子推荐流”:对王建军——以及那一千六百一十个”异常用户”——他替换掉了系统原生的推荐内容。

新的推荐内容是他手工策划的。他从平台上筛选了一批高质量内容:纪录片片段、科普视频、治愈系的动画短片、一些讲劳动权益和职业培训的实用信息。他还加入了一些”巧合”——比如在王建军搜索”寿险”之后,给他推送一篇关于”如何以低成本获得基本保障”的实用文章,而不是一个高佣金的保险广告。

他知道这不够。推荐内容不能还清王建军的网贷,不能给他更多时间陪女儿,不能让他的生活变得不那么像一条衰减曲线。但这是他唯一能做的事。

七、算法之外

在深圳待了四年后,陈屿第一次走进了东莞的工厂区。

他是去找另一个”异常用户”的。那个人叫刘明辉,四十岁,在长安镇的一家电子厂做质检。他的λ值是0.062——比王建军更高,衰减更快。模型预测他将在41天后”永久离开”。

陈屿在一个城中村里找到了刘明辉的住处。一栋握手楼的四层,一间不到十平米的房间,月租五百。

刘明辉开门的时候,陈屿闻到了一股浓重的烟味和某种说不清的酸涩——是长期缺乏通风和日晒的房间特有的气味。刘明辉穿着一件洗得发白的T恤,脚上趿着一双塑料拖鞋。他的眼神很疲惫,但还带着一种警觉。

“你找谁?”

“刘哥,我做互联网研究的,想跟你聊聊。”

“不买保险。”

“我不是卖保险的。我就是想了解一下你平时怎么用手机。”

刘明辉犹豫了一下,但还是让陈屿进去了。房间里只有一张床、一个小桌子、一台壁挂风扇。桌上放着一个旧手机和一个用铁丝拧成的手机支架。墙上没有任何装饰,只有一个钉子——上面曾经挂过什么东西,现在已经空了。

“那是什么?“陈屿指着钉子问。

“以前挂着小孩的照片。“刘明辉说。他的语气很平淡,就像在说天气。“寄回去了。”

他们聊了大约四十分钟。刘明辉的故事和王建军有很多相似之处:中年离异,欠债,远离家乡,在城市的边缘做着一份收入勉强够活的工作。但有一个关键的不同:刘明辉的债务不是因为女儿生病,而是因为他被”杀猪盘”骗了。

“二十三万,“他说。“我把所有积蓄都投进去了。还借了十五万。”

“报警了吗?”

“报了。没用。钱追不回来。”

陈屿问他平时怎么用手机。

“刷短视频,“刘明辉说。“一晚上能刷四五个小时。反正也睡不着。”

“推给你的都是什么内容?”

刘明辉想了想。“乱七八糟的。有时候是一些讲发财的,有时候是讲什么国际局势的。有时候刷到一些……”他停顿了一下。“一些说’活着没意思’的。”

陈屿的脊背一阵发凉。

“你看过那些?”

“有时候会看,“刘明辉说。“不是我想看,就是……刷到了就停不下来。”

陈屿知道这意味着什么。推荐系统检测到刘明辉在”负面情绪”关键词上的停留时长高于平均水平,于是判定他对这类内容感兴趣,进而加大了推送力度。系统不知道这是在喂养一个黑洞——它只是在做它的优化,让用户多停留一秒、再多一秒。

“刘哥,“陈屿说。“你有没有想过换一种方式用手机?比如看看你感兴趣的东西,而不是让APP决定你看什么。”

刘明辉笑了。那个笑容很苦。

“我没什么感兴趣的东西了。”

陈屿把刘明辉也加入了他的”影子推荐流”。在回去的路上,他在高速上把车停在应急车道,坐在车里发了十五分钟的呆。

他面前的仪表盘上显示着各种数据:续航里程、胎压、车外温度。这些数据告诉他关于这辆车的一切。但没有任何数据能告诉他关于刘明辉的一切——关于那个空荡荡的钉子,关于那二十三万追不回来的钱,关于一个人在深夜刷到”活着没意思”的视频时到底在想什么。

数据可以描述一切,但它什么都改变不了。

八、赤子之心

陈屿的”赤子救人计划”运行了两周。

在这两周里,他每天花三个小时手动策划推荐内容。他建了一个小型数据库,收录了大约两千条”正向内容”,按主题和情绪效价分类。他写了一个简单的脚本,根据每个用户的衰减曲线来动态调整推送策略——衰减快的用户获得更多高情绪效价的内容,衰减慢的用户获得更多实用性内容。

效果是有限的,但是可测量的。

一千六百一十个用户的平均λ值从0.053下降到了0.048。衰减速度减缓了大约百分之九。王建军的λ值从0.051下降到了0.045,他的预测”永久离开”时间从第53天延长到了第67天。

十四天。他用算法给王建军多争取了十四天。

但这不够。衰减仍在继续。即使λ值降低,函数的终局仍然是趋近于零。他能减缓衰减,但他不能逆转它。

逆转需要什么?需要改变那些驱动衰减的变量——债务、收入、社会支持、与亲人的联系。这些不是算法能触及的东西。

陈屿开始做一些算法之外的事。

他找到了一个做公益律师的朋友,问了一下王建军的网贷情况。那个律师说,“闪电借”的36%年化利率已经超过了当时的法律保护上限(24%),王建军多还的部分可以要求返还。但走法律程序需要时间,而且王建军不一定愿意。

他给王建军发了一条微信。他没有说自己是算法工程师,只说自己是”一个网友”,在某个论坛上看到了关于网贷维权的信息,觉得可能对他有用。

王建军过了六个小时才回复。只有一个字:“嗯。”

陈屿把相关的法律条文和维权流程整理成一份简洁的文档发给他。然后他又发了一条:“你这个情况,多还的钱大概能退回来一万多。”

这一次回复更慢。第二天早上,王建军发了一条语音,六秒:“谢谢,我看看。”

陈屿听着那条语音,听见了电动车的引擎声,听见了街道上嘈杂的人声,听见了一个人在忙碌生活的间隙里挤出来的六秒钟。

他还做了一件事。这件事更冒险。

他用了一个匿名账号,在抖音上给王建军的女儿——或者更准确地说,给王建军前妻的账号——发了一条私信,大意是:“有一个公益活动,可以给外地打工者的孩子寄礼物,需要提供家长联系方式。“这是假的。他只是想让王建军的前妻联系王建军,让他能听到女儿的声音。

这个计划失败了。前妻没有回复。

九、发现

第三周的时候,陈屿的上司发现了异常。

张黎是”赤子”系统的技术负责人,一个三十五岁的前谷歌工程师。他在查看系统日志时注意到了一个奇怪的流量模式:有一小批用户(大约千分之一点六)的推荐路径偏离了系统的标准输出。他们的推荐内容来源不是主模型,而是一个他没见过的子模块。

张黎追踪了这个子模块,发现它连接到一个私有接口——陈屿的A/B测试接口。

他给陈屿发了一条消息:“来我办公室。”

陈屿走进去的时候,张黎的桌上已经放着打印出来的日志。

“你用测试接口修改了一千六百一十个用户的推荐流?“张黎的声音很平静,但眼神不平静。

“是。”

“为什么?”

陈屿沉默了大约十秒钟。然后他把那组废弃神经元的异常激活、衰减函数、以及一千六百一十个用户的共同特征全部告诉了张黎。

张黎听完后说:“你看了用户的个人数据?”

“是。”

“你联系了用户?”

“间接的。”

“你知道这意味着什么吗?”

“我知道。”

张黎靠在椅背上,看着天花板。他的办公室在二十三层,和陈屿的工位在同一层。窗外的南山天际线在下午的阳光下显得格外清晰。

“那个衰减函数,“张黎说。“你认为它预测的是……死亡?”

“我不确定。但它预测的’永久离开’在行为层面上的表现,与……与一个人退出所有社会活动的模式高度吻合。”

“所以你决定用推荐内容来救他们?”

“我知道听起来很荒谬。”

张黎没有说它荒谬。他说的是另一件事:

“三年前,我在谷歌做过一个类似的项目。不是预测死亡,是预测抑郁症。我们用搜索行为建模,准确率很高。然后我们把结果提交给了产品团队,他们问了一个问题:‘我们能用这个做什么?’”

“你们做了什么?”

“什么都没做。因为法务说,如果我们主动识别抑郁症用户但没有提供有效的干预,我们可能面临过失责任。而如果我们提供了干预但失败了,我们可能面临更严重的责任。所以最优解是——假装我们不知道。”

陈屿没有说话。

“那组废弃的神经元,“张黎说。“我会把它们彻底清除。你也知道我必须这么做。”

“如果清除了,我们就看不到那些衰减曲线了。”

“我知道。”

“那一千六百一十个人——”

“不是我们的责任,陈屿。”

张黎说这句话的时候,表情很复杂。不是冷漠,而是一种经过计算的无奈——一种在商业世界里被打磨了很多年的、精确到小数点后两位的无奈。

“你有两天时间,“张黎说。“两天之后我清除数据。把你那个影子推荐流关掉。“

十、倒数

陈屿回到工位,关掉了影子推荐流的脚本。

一千六百一十个用户重新回到了”赤子”系统的标准推荐流里。那些网贷广告、情绪刺激内容、低质娱乐内容重新涌入他们的屏幕。

陈屿能做的最后一件事,是在两天内尽可能详细地记录下每一个用户的数据。他不知道这些数据以后有没有用,但他觉得它们不应该消失。

他把数据备份到一个加密的移动硬盘里。然后他打开了王建军的最新数据。

在过去三周里,王建军的衰减曲线出现了一个短暂的反弹——在他收到网贷维权信息的那几天里,λ值降到了0.038。但随着影子推荐流的关闭,λ值开始回升。模型现在预测他的”永久离开”时间在第59天。

还有45天。

陈屿坐在工位上,看着屏幕上的曲线。办公室里很安静,大多数人已经下班了。只有他和另外几个加班的同事还留在各自的工位上,被各自的屏幕照亮。

他想起了他大学时读过的一本书——加缪的《鼠疫》。书里有一句话,大意是:一个人的受难总是可以忍受的,只要他确信这种受难是有意义的。但如果受难没有意义呢?如果一个人只是在衰减——像一块放射性物质,像一笔贬值的资产——呢?

他打开了一个新的代码文件。

这一次,他不是在写推荐算法。他在写一个分析工具,用来分析”赤子”系统中到底有多少推荐内容在加速用户的情绪衰减。他跑了整整一夜。

结果是这样的:在那两亿三千万用户中,大约有百分之十四——三千二百万——的用户正在接收”加速衰减”的推荐内容。这些用户的特征和王建军、刘明辉一样:低收入、高负债、社会支持薄弱。系统判定他们的商业价值低,因此用最廉价、最具刺激性的内容来榨取他们最后的注意力。

三千两百万。那不是一千六百一十个”异常用户”,那是一个庞大的、沉默的群体。算法没有”废弃的神经元”来标记他们,但他们的衰减曲线无处不在——在每一条深夜的搜索记录里,在每一次凌晨三点的屏幕亮起时,在每一碗七块钱的拌面里。

陈屿把分析结果打包,写了一份报告,标题是《赤子系统对低收入用户群体情绪衰减的影响分析》。他把报告发给了张黎,同时抄送了公司的首席技术官和人力资源总监。

他知道这意味着什么。他的期权会没了,他的工作会没了,他那每月一万四千三百的房贷会断供。但他做了。

发完邮件之后,他关掉电脑,走出办公室。凌晨三点十七分——和他第一次发现异常的时间一模一样,精确到了分钟。

电梯里只有他一个人。他看着楼层数字从23跳到1,想起了王建军的衰减函数。

f(t) = A·e^(-λt)

A是初始值。λ是衰减系数。t是时间。

数学是诚实的。它不会撒谎。它可以精确地描述一个生命的消逝,就像它可以精确地描述一颗恒星的坍缩。但数学也是冷酷的——它只负责描述,不负责拯救。

拯救是人的事。

十一、沙县小吃

陈屿再次去东莞是在一周后。

他已经不在元信科技了。辞职报告是张黎帮他写的——“个人原因”。张黎没有为难他,甚至帮他把期权保留了一半。那封邮件在公司内部引起了一些讨论,但很快就沉了下去。互联网的记忆只有七天。

他没有了特斯拉——月供太高,他还不起。他坐高铁去的东莞,然后打了一辆滴滴到长安镇。

沙县小吃还是那个样子。六张桌子,手写菜单。但这次陈屿不是来找王建军的。他只是来吃一碗拌面。

他坐在角落里,点了一碗拌面加一个卤蛋。拌面上来的时候,他忽然意识到这是他第一次认真品尝沙县小吃的拌面。花生酱、酱油、葱花,拌在一起,有一种朴实的甜。

门被推开了。一个穿着美团骑手服的人走了进来。

是王建军。

但有什么东西不一样了。陈屿仔细看了一下——王建军的脸上那道疤好像淡了一些。不对,不是疤淡了,是他的表情不一样了。他看起来——怎么说呢——不那么紧绷了。

王建军没有注意到他。他照例坐在靠门的位置,点了一碗拌面。

然后他接了一个电话。

“宝宝,爸爸这个月多跑了一点,给你多寄了两百……不是,爸爸没有乱花钱……嗯,你听话,暑假爸爸来看你……”

他挂了电话,低头吃面。

陈屿不知道发生了什么。王建军不知道他是谁。王建军不知道有一个算法工程师曾在凌晨三点看过他的数据,不知道有人曾在高速公路上为他停过车,不知道有一封邮件曾试图让一家两亿用户的平台改变对待他的方式。

王建军只知道他今天多接了几个单,多赚了几十块,能给女儿多寄两百块钱。他不知道一个叫”赤子”的系统依然在给他推送网贷广告和”活着没意思”的视频。他不知道他的衰减曲线仍在运行,λ值仍然大于零。

但他在打电话时笑了。

那个笑——陈屿在心里计算了一下——大概能让λ值下降0.003。不多,但不是零。

王建军吃完了面,站起来,推门走了。他的电动车发动了,引擎声在门口的街道上渐渐远去。

陈屿坐在沙县小吃里,看着那个空了的座位。桌上还留着王建军的碗——一只白色的瓷碗,碗底还剩一点花生酱。

他想起了那个衰减函数。f(t) = A·e^(-λt)。在数学上,这个函数永远不会真正到达零——它只是无限趋近。指数衰减没有终点。

也许人也是这样。也许那些深夜的搜索、凌晨的屏幕、七块钱的拌面——也许它们不是衰减的过程,而是一个人无限趋近于某个极限的过程。那个极限不是零,不是”永久离开”——而是一种他自己都不知道的、接近于透明的东西。

十二、尾声

陈屿后来去了一家小型公益组织做数据分析师。薪水是以前的三分之一,但他觉得够用了。

他没有忘记那一千六百一十个用户。他用自己能接触到的公开数据做了一个追踪——当然,不是精确到个人的追踪,而是一个统计层面的分析。

在接下来的六个月里,那一千六百一十个用户中,有四百三十七人的在线行为模式出现了明显改善——活跃时段从深夜转移到白天,搜索内容从负面转向中性或正面。他不知道原因。可能是他的影子推荐流在他们身上留下了某种惯性,可能是生活本身的随机波动,也可能是别的什么他无法用数据解释的东西。

王建军仍在东莞送外卖。他的网贷维权成功了——通过法律援助,他追回了一万两千块。不多,但够他喘口气。他的女儿暑假来东莞住了一个月,他用攒下的钱带她去了深圳的世界之窗。他在朋友圈发了一张照片,女儿站在埃菲尔铁塔的模型前,笑得露出两颗缺了的门牙。

那是他三年来发的第一条朋友圈。

陈屿看到那张照片的时候,正坐在他新的办公桌前。新办公室很小,在城中村的一栋旧楼里,窗外是一棵很大的榕树。

他看了一眼照片,然后继续工作。

他正在开发一个新的模型——不是商业推荐系统,而是一个公益性质的”情绪预警系统”,可以帮助社区工作者识别可能需要帮助的人。模型的准确率远不如”赤子”,数据量也小得多,但它有一个根本的不同:

它被设计来倾听,而不是推销。

屏幕上,代码一行一行地生成。在某个隐藏层里,有一个很小的模块,是陈屿从”赤子”的废弃神经元那里移植过来的。他改了名字,叫它”赤子之心”。

那个模块的作用很简单:当它检测到一个用户的行为模式出现指数衰减的迹象时,它不会触发广告推送,而是触发一个通知——不是发给系统的,不是发给平台的,而是发给这个用户身边可能存在的人的。

一个社区工作者。一个邻居。一个朋友。一个家人。

某个人。

这不能还清债务,不能治愈疾病,不能消除孤独。但也许——也许——它能让那条衰减曲线多一个拐点。

数学是诚实的。它不会撒谎,也不会拯救。

但人可以。

陈屿在代码的最后一行写了一个注释:

// f(t) = A·e^(-λt) — 但 A 可以被重新赋值。

他关掉电脑,走出了办公室。楼下是一间沙县小吃——巧合,深圳到处都是沙县小吃。他走进去,点了一碗拌面。

拌面端上来的时候,他想起了一件事。

他从来没有问过王建军,那碗拌面是什么味道的。也许和王建军吃的不一样。也许是一样的。也许一碗拌面就是一碗拌面,花生酱、酱油、葱花,朴实的甜。

他吃了起来。

窗外,深圳的天际线正在亮起来。那些写字楼里的灯一个接一个地打开——新的一天开始了,新的数据开始生成,新的行为被记录、压缩、索引、归档。

在某个服务器的某个硬盘的某个扇区里,一行数据被写入:

用户U-20987XXXX,2023年5月18日07:32:15,打开APP,停留14秒,关闭。

十四秒。

在那个APP的首页上,有一个视频正在播放。视频里,一个小女孩穿着粉色的裙子,在一个简陋的客厅里旋转。背景音乐是一首儿歌,旋律很简单。

王建军没有关掉它。他看了十四秒。

然后他放下手机,骑上电动车,驶入了早晨的阳光里。

(完)