“我可以找别人。”
“找谁?你的前公司已经把你列在竞业黑名单上。你的学术同行?谭书白反对你的理念,其他人在公司里有自己的项目。没有人会冒著被深源科技告的风险来帮你。”
她没有说话。因为他说的是对的。每一句都是对的。那种精确的、无可反驳的对,比任何谎言都更让人窒息。
“所以你从一开始就知道。”她的声音低下来。“你知道我没有选择。”
“我没有这样想。”
“你有。”她走近一步,现在她离他不到半公尺。她可以看见他瞳孔里自己的倒影——很小,很模糊,但确实存在。“你备份我的数据,带我来你的工作室,让我参与你的项目。你做的每一件事都在让我越来越依赖你。然后你建了一个预测我的模型,藏在你永远不会告诉我的地方。等我发现的时候,我已经离不开你了。”
他没有否认。他坐在椅子上,抬头看她,表情平静,但她看见他的喉结动了一下——那个不受控制的、泄露情绪的动作。
“你不是离不开我。”他说。“你是离不开你的模型。”
“那不一样。”
“一样。”
她的拳头砸在桌上。声音不大,但够重,重到他的笔记型电脑萤幕晃了一下。她的手掌边缘压在键盘上,压出一排乱码。她感觉不到痛,只感觉到骨头里传来的震动,从手腕传到肘部,再从肘部传到肩膀。
“不一样。”她重复。她的声音在颤抖,不是因为愤怒,是因为某种她无法命名的东西正在从她身体的裂缝里渗出来。“我的模型是我的研究成果。那是公开的、透明的、可以被任何人审查和验证的东西。但你那个档案——那个WYN_profile——那是我的**。那是我的情绪、我的弱点、我的崩溃时段。你把它们全部编码,储存在你的服务器里,然后告诉我这只是学术研究。”
她停下来,深呼吸。她的胸腔在起伏,呼吸声在安静的工作室里格外清晰。
“程司晏,你有没有想过,我不想被百分之九十一地理解?”
他没有回答。他的视线落在她压在键盘上的手上。她的手掌边缘因为撞击而发红,红色的印记沿著掌骨的轮廓蔓延。
“我不想被任何人预测。”她的声音越来越低。“我不想有人知道我什么时候会崩溃,不想有人知道我听到外婆这两个字的时候会沉默,不想有人看著我的眼睛就能算出我有百分之七十六的机率会转身离开。我想保留一些只有我自己知道的东西。”
她把手从键盘上移开。手掌边缘的红印更深了,中央开始泛白。
“你研究了我七年。你应该知道这个。”
他沉默了很久。他的右手从桌上移开,放在膝盖上。她看见他的手指在轻轻敲击——不是有节奏的敲击,是无意识的、混乱的颤动。
“我知道。”他说。他的声音比刚才低了很多,低到她几乎要弯下腰才能听清楚。“但我还是做了。”
“为什么?”
“因为我必须知道。”
“知道什么?”
他抬起头。他的眼睛在萤幕光中显得很亮,亮到不像是光的反射。她在那双眼睛里看见了某种她从未见过的东西——不是深渊,不是光,是水。很深的水,表面平静,但底下有她看不见的暗流。
“知道我花了七年试图理解的人,是真实存在的。”
她站在那里,看著他。她的手掌还在痛,红印开始变成紫色,沿著血管的方向扩散。她没有说话。她不知道该说什么。她的模型从来没有教过她如何在这种时刻回应——因为她自己从来没有写过这段逻辑。
她转身走向门口。这次她没有停下来等他说话。她打开门,走进走廊,声控灯亮起来,昏黄的光线照在磨石子地上。她走下楼梯,每一步都比上一步快,快到最后几阶几乎是用跳的。她推开公寓大门,夜风灌进来,吹在她的脸上,冷的,但她感觉不到。
她拦了一辆计程车。坐进后座时,司机问她去哪里。她报了地址,然后靠著车窗,看著路灯一盏一盏往后退。橘黄色的光线在她的视网膜上留下一条又一条残影,像是某种被拉长的时间。
她回到公寓时已经过了午夜。公寓的门锁是老式的,要用钥匙转两圈才能打开。她的手在抖,钥匙对不准锁孔,试了三次才插进去。门开了,里面是黑的,没有开灯,窗帘是拉上的,连路灯的光都进不来。
她站在玄关,没有开灯。她知道客厅的模样——沙发上有一条她昨天随手扔的外套,茶几上有一个没洗的马克杯,厨房的水槽里有三天前煮面的锅子。她离开这间公寓已经超过一个星期,所有的东西都停留在她走时的状态,时间在这里是静止的。
她换下鞋子,走进客厅,坐在沙发上。沙发的坐垫凹陷处还保留著她习惯的位置——靠左边,离扶手大约二十公分。她把那条外套拿起来,抱在怀里。外套是棉质的,洗过很多次,布料变得很软,边缘有些起毛球。
她没有哭。她只是坐在那里,抱著一件起毛球的外套,在黑暗中睁著眼睛。客厅里很安静,安静到她可以听见冰箱压缩机运转的声音,低频的嗡鸣,和机房的风扇声很像。
她想起机房。想起备份进度条从0%跑到100%的那十八个小时。想起他在第341行指出她的漏洞,想起他拉过椅子坐下来写神经压缩。想起他说“因为你的代码值得被记住”。
她想起他的工作室。想起那面书架上没有书只有硬碟,想起他凌晨四点二十二分的程式码提交,想起他放在她桌上右上角的黑咖啡。想起他说“你不是模式匹配,你是原型”。
她把手伸进口袋,摸到那颗硬碟。她把它拿出来,放在茶几上。黑暗中她看不见它的轮廓,只摸得到冰冷的金属表面。
她的手机在另一个口袋里震动。她没有看。震动停了,又开始,又停了。第三次震动时她拿出来看——萤幕上显示林知予的名字,讯息栏里有一行字:“温老师,我在你家楼下。可以上来吗?”
她盯著那行字看了很久。楼下。林知予在她家楼下。凌晨一点十七分。
她打字:“上来。”
五分钟后门铃响了。她站起来,走过去开门。走廊的声控灯亮起来,照在林知予的脸上。她的前助理穿著一件过大的连帽外套,头发扎成马尾,手里抱著一个牛皮纸袋。她的眼睛红红的,像是哭过,又像是没睡。
“温老师。”林知予的声音比她记忆中低。“我听说你的事了。”
“进来。”
林知予走进客厅,站在玄关处,四处张望。她看见没有开灯的客厅,看见茶几上那颗硬碟,看见温以宁抱在怀里的那件起毛球的外套。她没有问为什么不开灯。她只是走过去,把牛皮纸袋放在茶几上,然后坐在沙发的另一端。
“这是什么?”温以宁问。
“工作日志。”林知予的声音有点抖。“你离开公司之后,我在收拾实验室的东西。找到这个。我忘了带走。”
温以宁打开纸袋。里面是一本笔记本,A4大小,黑色封面,边角磨损得很厉害。她拿出来,翻开第一页。
2017.09.03。第一天到实验室报到。温老师比我早到两小时,已经在改程式码了。她没有抬头看我,只说了一句“你的座位在左边”。我觉得她可能不喜欢我。
她的手指停在纸页上。那是林知予的字迹,圆圆的,幼稚得像国中生。她继续翻。
2017.09.17。温老师今天第一次叫我的名字。她说“林知予,这个参数调错了”。我很开心,因为她记得我叫什么。
2017.10.02。温老师加班到凌晨三点。我走的时候她还在写程式码,姿势和我早上来的时候一模一样。我不知道她有没吃晚饭。
她翻过一页又一页。每一页都是一天,每一天都有几行字。有的长,有的短,有的只有一行。她看见自己的七年被另一个人用另一种方式记录下来——不是程式码,不是模型权重,是手写的、歪斜的、偶尔有错字的繁体中文。
2018.05.14。版本2.0上线测试,效果比预期好。温老师没有笑,但我看见她在午餐时多夹了一块排骨。
2018.11.30。温老师今天发了很大的脾气,因为伺服器当机,损失了三天的训练数据。她把马克杯摔在地上,然后自己扫干净。扫地的时候她的手在抖。
2019.08.21。温老师的外婆忌日。她一整天没有说话,写了八千行程式码。每一行的注释都是空的。
2020.01.07。版本4.0的情感辨识准确率突破90%。温老师盯著萤幕看了五分钟,然后关掉电脑,下班了。这是今年她第一次在晚上九点前离开。
2021.06.15。温老师在版本5.0的注释里写了一句诗。我不知道是谁写的,但看起来很悲伤。她可能以为没有人会看注释。
2022.12.03。公司说要终止Echo项目。温老师在会议室里没有说话,坐姿和开会前一样。但我看见她的手放在桌面下,握得很紧。
2023.09.01。温老师离开了。我没有跟她说再见,因为我怕我会哭。我把这本笔记本忘在抽屉里。里面有七年。我不知道她会不会想看。但我还是留著,因为这是我唯一能帮她记住的东西。
她翻到最后一页。最后一页的字迹和第一页一样圆,但更用力,笔划压进纸张的纤维里,留下凹凸不平的痕迹。
温老师,你不会表达情感,但你的代码会。程司晏能读懂你的代码,比我们所有人都早。我第一次看见他来实验室的时候,他站在你身后看了很久。那时候我还不知道他是谁。但我看见他的眼睛——他看你的程式码的样子,像在看一个他很想念的人。
她的手指停在那一页上。纸张的边缘被她捏出皱褶,她的拇指压在“程司晏”那三个字上,压得很用力。
“他来过实验室?”她问。
林知予点头。“在你离开之前。大概是半年前。他说他是做安全审计的,要检查程式码。但他花了很多时间看你写的注释。每一条都看。”
温以宁没有说话。她低头看著那页纸,看著那些歪斜的字迹,看著林知予用她圆圆的、幼稚的字体写下的那句话——程司晏能读懂你的代码,比我们所有人都早。
她把笔记本阖上,放在膝盖上。客厅里很安静,冰箱的压缩机停止了运转,连背景的嗡鸣都消失了。
“温老师。”林知予的声音从黑暗中传来。“你还好吗?”
她没有回答。她的手放在笔记本的黑色封面上,指尖摸到边角的磨损痕迹。那些痕迹不是她留下的,是林知予。七年来每一天翻开、每一天写下、每一天阖上。一个人用七年的时间,记录另一个人七年的生命。
“我没事。”她说。
这是谎话。她知道自己说谎的时候会有一个细微的停顿——在“我”和“没事”之间,大约零点三秒。这个特征没有写在WYN_profile.json里,因为她自己从来没有意识到。但此刻她说出这两个字的时候,她第一次听见了自己的停顿。
她听见林知予在黑暗中吸了一下鼻子。“温老师。”
“嗯。”
“那个项目。Echo。它还会继续吗?”
温以宁没有回答。她的手在笔记本封面上停下来。窗外终于有路灯的光透进来,透过窗帘的缝隙,在茶几上切出一条细长的光带。那条光带刚好落在硬碟上,黑色外壳反射出微弱的光泽。
“会。”她说。
温以宁回到工作室的时候是隔天下午。她站在门口,手里抱著那本黑色封面的工作日志,门没有锁,和她第一次来的时候一样,留了一条缝。她推开门,走廊的声控灯在她身后熄灭。
程司晏坐在他的工作桌前,姿势和她离开时一模一样。他的笔记型电脑开著,萤幕上是一段她没见过的程式码,但她的视线没有在那上面停留。她的视线落在他的脸上——他的眼睛下面有很深的阴影,嘴唇干裂,头发比昨天更乱,前额的发丝几乎要遮住眉毛。他没有转头看她,但他的手指在键盘上停了下来。
她走进去,关上门。脚步声在木地板上清晰可闻,每一步都落在她熟悉的位置上——从门口到她的工作桌,一共十二步。她在自己的位置坐下,把工作日志放在桌上,然后转头看他。
他终于转头了。两人的视线在工作室的光线中交会。他没有说话,她也没有说话。沉默持续了很久,久到她可以听见自己的心跳,可以听见他的呼吸,可以听见窗外远处传来的摩托车引擎声。
她先开口。“我回来了。”
他没有问她去了哪里,没有问她为什么回来。他只是点了点头,然后转回萤幕。他的手指重新放在键盘上,但没有敲击。
她打开工作日志,翻到最后一页,放在桌上靠向他那一侧。“林知予给我的。她在实验室整理了七年。”
他的视线落在笔记本上,落在那页歪斜的字迹上。他的眼睛缓慢地移动,一行一行读完。读到最后一行时,他的右手从键盘上移开,放在膝盖上。
“他看你的程式码的样子,像在看一个他很想念的人。”那行字在他的视线中停留了很久。他的表情没有变化,但她看见他的喉结动了一下——那个泄露情绪的动作,在过去的几天里她已经见过太多次。
“你半年前来过实验室。”她说。
“对。”
“你看了我的注释。”
“对。”
“每一条?”
他沉默了一秒。“每一条。”
她没有追问。她从背包里拿出自己的笔记型电脑,打开,连上工作室的网路。萤幕亮起时,她看见浏览器还开著那个页面——/profile/WYN_profile.json。她没有关掉它,也没有打开它。她只是看著那个档案名称,看著那十二个字母和一个底线。
“程司晏。”她说。
“嗯。”
“关于那个档案。我们需要谈。”
他转头看她。他的表情依然平静,但她看得出来——那种平静是刻意维持的,像是他花了很长时间练习如何在被审查的时候保持稳定。
“你的模型可以保留。”她说。
他的眼睛动了一下。不是惊讶,是某种更细微的东西——像是他预期她会说“删掉”,但听到了不同的答案,需要零点几秒重新校准。
“但有条件。”她继续。“第一,加密。没有我的允许,任何人不能读取。包括你自己。”
“可以。”
“第二,访问日志。每一次有人尝试读取这个档案,不管成功还是失败,都要记录下来。我有权随时审计。”
“可以。”
“第三。”她停了一下。“你不准再用这个模型预测我的行为。不准用它来决定怎么跟我说话,不准用它来判断我的情绪,不准用它来做任何和我有关的决策。”
他沉默了三秒。三秒里他的视线没有离开她,但她看得出来他在计算——不是计算如何回避,而是计算如何诚实地回答。
“我不能保证。”他说。
她的手指在触控板上停下来。
“我不能保证我不会用那个模型。”他的声音很低,低到像是他在对自己说话。“因为我不知道什么时候在用。那个模型已经在我脑子里了。七年的数据,47GB的档案,一千七百行的特征。我没办法把它们删掉。”
她看著他。他的表情第一次出现了裂痕——不是崩溃,是某种坦诚。像是一个人终于不再试图修补墙上的裂缝,而是让它在那里,让别人看见墙后面的东西。
“但你说的对。”他继续。“我不该用它来决定怎么跟你说话。那是作弊。”
“作弊?”
“对。就像考试前偷看了答案。我可以用它来预测你的反应,然后调整我的行为,让你更容易接受我说的话。那是操纵。”
她没有想到他会用这个词。操纵。她以为他会说“理解”或“共情”或任何一个听起来比较温和的词。但他选择了这个——最尖锐的、最难听的、最准确的。
“所以我会做一件事。”他说。他转向萤幕,打开终端,输入一串指令。萤幕上跳出一个文件目录,档名是/WYN/。他点开,里面有数十个档案——PDF、MP4、TXT、CSV。她认出其中一些:她的博士论文、她在ICML的演讲录影、她在NeurIPS的座谈会逐字稿、她几乎不更新的微博备份。
“这是七年来我收集的所有和你相关的公开资料。”他说。“47GB。”
他选中所有档案,按下删除。萤幕上跳出确认视窗:“确定要永久删除这些档案吗?此操作无法复原。”
他的手指悬在回车键上方。“我不删模型。模型是我对这些数据的理解,已经没办法分开了。但我删原始数据。从现在开始,我不会再收集任何和你相关的新资料。”
他按下回车键。萤幕上的档案一个一个消失,文件夹变成空的。47GB,七年,在零点三秒内归零。
她看著空荡荡的文件夹,没有说话。她的手指在触控板上移动,点开/WYN/的上一层目录。里面还有其他文件夹——/research/、/opensource/、/personal/。她没有点开那些。她只问了一句话。
“还有其他的吗?”
“没有了。所有的都在这里。”
“模型呢?”
“模型在另一个目录。加密的。”
“给我权限。”
他输入指令,萤幕上跳出一个权限设定视窗。他加入她的帐号,勾选了“读取”和“审计”,没有勾选“写入”和“删除”。
“你现在可以看访问日志。”他说。
她打开审计日志。萤幕上列出一个表格——时间、操作、来源IP。她从最后一行开始往上读。
2024.09.18 02:13:22 — READ — 127.0.0.1
2024.09.17 23:45:01 — READ — 127.0.0.1
2024.09.16 19:22:34 — READ — 127.0.0.1
2024.09.15 04:11:56 — READ — 127.0.0.1
她一直往上滚,滚过几百行、几千行。每一行都是READ,每一行的来源IP都是127.0.0.1——本机位址。他从来没有让任何人读过这个档案。他甚至从来没有从别的地方读取过。只有他自己,在他的工作室里,在凌晨、在深夜、在那些她不知道的时间里。
她关掉日志。
“你说你不会用它来决定怎么跟我说话。”她说。“但你读了几千次。你读这些的时候,在想什么?”
他沉默了很久。工作室里的光线在变化,太阳从东边移到西边,窗户的影子在地上缓慢旋转。他的视线落在空荡荡的/WYN/文件夹上,落在那个被他亲手清空的容器上。
“在想你是不是真的快乐。”他说。
她没有听懂。
“你的模型。Echo。它能辨识情感,能回应情感,能在用户哭泣的时候选择沉默。但你从来没有用过它。”他转头看她。“你写了一个能理解情感的AI,但你从来不让它理解你。你把自己关在实验室里,每天工作十六个小时,不跟人说话,不社交,不约会。你的程式码很温柔,但你本人很孤独。”
他的声音在最后一个字上出现了一道细微的裂痕。
“我想知道你是不是真的快乐。不是模型预测的快乐,不是演讲时表现出的快乐,是真的。所以我读了所有我能找到的你的资料。我想从那些公开的文字里、从你演讲时的停顿里、从你论文致谢里的每一个字里,找到你是不是真的快乐的证据。”
“然后呢?”她问。“你找到了吗?”
他没有回答。他转向萤幕,打开那个加密的目录,输入密码。WYN_profile.json出现在萤幕上。他没有打开它,只是让它在那里。
“这个模型的最后一个特征维度。”他说。“你刚才看到的JSON文件只有十一维。第十二维我没有写进去。”
“为什么?”
“因为我没办法量化它。”
她等待著。
“第十二维是。”他停了一下。“你值不值得被爱。”
工作室里安静得像是真空。她的呼吸停止了,她的心跳也停止了,连窗外的车声都消失了。她看著他的侧脸,看著他说完这句话之后紧闭的嘴唇,看著他放在键盘旁边的右手——手指微微弯曲,像是刚放开一个握了很久的东西。
“我花了七年。”他说。“读了你所有的论文,看了你所有的演讲,分析了你所有的公开数据。我建了十一维的特征,91%的预测精度。但第十二维,我写不出来。因为没有任何数据可以回答这个问题。”
他关掉萤幕。桌面上的光消失了,工作室陷入只有窗外阳光的昏黄。
“你研究我这些,到底想证明什么?”她的声音很轻。
他转头看她。阳光从窗户斜射进来,刚好落在他的脸上,把他的眼睛照成一种近乎透明的棕色。她在那双眼睛里没有看见深渊,没有看见光,没有看见水。她只看见一个人。一个坐在椅子上、手指微微弯曲、眼睛下面有很深的阴影的人。
“证明你不需要用AI替代情感。”他说。“因为你本身就有。”
她的手指在膝盖上握紧了。她想说“你怎么知道”,想说“你只是一个用数据解读人性的工程师”,想说“你根本不了解我”。但她说不出来。因为他说的话,她曾经对自己说过无数次——在实验室的深夜里,在写程式码的间隙中,在外婆忌日那天一个人坐在公寓里的时候。她对自己说,你不需要用AI替代情感,因为你本身就有。但她从来不相信。
“你怎么证明?”她问。
“我没有证明。”他说。“我只是相信。”
她低下头,看著桌上的工作日志。黑色封面,边角磨损,里面有七年的手写字迹。林知予用她圆圆的、幼稚的字体写下的那句话又浮现出来——“程司晏能读懂你的代码,比我们所有人都早。”
她抬起头。
“程司晏。”
“嗯。”
“你收集了我七年的数据。47GB。你读了我的每一篇论文,看了我每一场演讲,分析了我每一条注释。你建了一个预测我的模型,精度91%。你说你相信我有情感。”
她停了一下。
“那你呢?”
他的视线没有移动。
“你用应用替代了什么?”
沉默。这次的沉默比之前任何一次都长。长到她可以数完窗户上所有的窗格,长到阳光从他的脸上移到他的手上,再从他的手上移到键盘上。他的右手手指停止了弯曲,伸直了,平放在桌上。
他没有回答。
她等著。
他张开嘴,又闭上。那个动作重复了三次。每一次他的嘴唇都在发出第一个音节之前阖上,像是某种被中断的传输。
“下次告诉你。”他说。
他的声音很低,低到几乎是气音。但她听清楚了。每一个字都听清楚了。
她没有追问。她转向自己的萤幕,打开emotion_model_v8_core.py。她的手指放在键盘上,没有敲击。萤幕上的程式码停留在三天前的状态——第十九个函数只写了一半,中断在一行return陈述句前。
她开始打字。不是程式码。是一行注释。
“留彩蛋的人,通常自己也需要一个彩蛋。等你的答案。”
她按下储存。身后没有键盘声。她没有回头,但她知道他看见了那行注释。因为在按下储存的三秒后,她听见他的椅子发出了一声极轻微的声响——不是移动,是他靠在椅背上时,椅子的某个关节承受了新的重量。
窗外的阳光继续移动。从他的桌上移到她的桌上,再从她的桌上移到书架上的硬碟上。那些硬碟的黑色外壳在光线中反光,像是某种等待被开启的容器。她的手指在键盘上开始移动,这一次没有停下来。
工作室的灯光在凌晨两点显得格外刺眼。温以宁已经写完了第十九个函数,现在正在测试知识蒸馏的训练脚本。萤幕上的损失曲线稳定下降,每下降一个百分点,她的手指就在桌上轻轻敲一下。程司晏坐在他的位置,萤幕上是手机模拟器的界面,他正在调试长按对话框的触控响应延迟。两人的键盘声交错在一起,节奏比白天慢,像是某种深夜特有的频率。
她完成了第二十个函数的框架,按下储存,靠在椅背上。脖子僵硬,肩膀酸痛,但她不想停。每次闭上眼睛,她就会看见那个空荡荡的/WYN/文件夹,和那行被他删除的47GB。她已经审计过访问日志——他没有说谎,几千次读取,全部来自这间工作室。全部来自他一个人。
她转头看他。他的萤幕光映在脸上,眼镜片反射出程式码的滚动。他的手指在键盘上移动,节奏稳定,但她注意到他的肩膀比白天更紧,脖子微微前倾,那是长时间维持同一姿势的痕迹。
“程司晏。”
“嗯。”他没有抬头。
“现在可以告诉我了。”
他的手指在键盘上停下来。不是突然的停止,是逐渐减速,像是一个正在关机的系统。最后一个按键的声音在工作室里慢慢消散。
作者有话说
显示所有文的作话
第600章 第 600 章