她走回自己的位置,打开技术文档。她的手指在键盘上开始移动,不是写新的功能,是删除。她删除了开源语料库的所有数据来源,删除了那些没有明确授权的语音样本,删除了那些来自公开数据集但无法追溯来源的训练资料。萤幕上的档案一个一个消失,程式码行数从一万八千降到一万五千,再降到一万两千,再降到九千。她的手指没有停。
“你在做什么?”他的声音从身后传来。
“删除所有未经明确授权的数据。”
“那些数据占了整个训练集的百分之七十。”
“我知道。”
“没有那些数据,模型无法泛化。它只能记得少数几个人的声音。”
“我知道。”她的手指没有停。“那就让它只记得少数几个人。至少那些人明确同意了。”
她删完最后一个档案,按下储存。萤幕上跳出新的统计数字——训练样本数从一百二十万降到十八万。准确率预估从百分之九十一降到百分之六十七。她的手指悬在触控板上方,看著那个百分之六十七。那是她五年前的水准。那是Echo版本2.0的水准。那是外婆刚走那年、她还在MIT实验室里摔马克杯的时候就能做到的水准。
她关掉统计视窗。
“还不够。”她说。“我们需要一个机制,让家属可以要求删除他们亲人的数据。即使那些数据有授权,即使授权是合法的。只要家属感到不适,我们就删。”
“那会开一个先例。”他的声音从身后传来。“任何人都可以因为主观感受要求删除数据。没有审查,没有上诉。”
“对。”
“你可能会收到上千个删除要求。每一个都要人工审核。”
“对。”
“你确定?”
她转头看他。他坐在位置上,表情平静,但她看见他的眼睛里有某种她无法归类的东西——不是反对,不是担忧,是确认。确认她真的想清楚了。
“确定。”她说。
她打开电子邮件,开始写一封信。收件人是所有用户、所有下载过模型的人、所有在开源仓库里标注过星星的人。信的标题是“Echo·Memory的伦理声明与删除机制”。她在第一行写:“我们犯了一个错误。我们只想到那些想被记住的人,没有想到那些不想被记住的人。”她在第二行写:“从今天起,任何人都可以要求删除与自己亲人有关的数据。不需要证明,不需要理由。只要你说‘请删除’,我们就删。”她在第三行写:“这会让我们的模型变弱。但这是对的。”
她按下传送。萤幕上跳出“邮件已寄出”的确认视窗。她看著那四个字,看著那个绿色的勾勾。然后她打开终端,开始写删除机制的程式码。她的手指在键盘上移动,节奏稳定,每个按键都压到底。但她的手在抖。不是疲劳,是某种她无法命名的东西。她的手指每敲一个键,萤幕上就多一个字元,多一行程式码,多一道她亲手建立的限制。这些限制会让她的模型变弱、变笨、变得不像她七年前梦想的那样完美。但她在做这些的时候,想起的不是外婆的十五秒,是陈女士的脸。是她想像中的、一个失去父亲的女儿的脸。
她的手机又开始震动。她没有翻过来。震动持续了很久,久到她以为不会停了。然后它停了。又开始。又停了。第三次。她伸手把手机翻过来。萤幕上是一则讯息,来自谭书白。她盯著那个名字,盯了三秒。然后点开。
讯息里没有文字,只有一个附件。附件名称是“Wen_2017_thesis_raw_data.zip”。她的博士论文原始数据。她以为已经遗失的那些——实验记录、模型权重、训练日志、还有她在MIT实验室里写的每一行程式码的备份。全部在一个压缩档里。附件的下面有一行字,是谭书白写的。
“我反对你的理念,但我尊重你的才华。别让这件事毁了你。”
她看著那行字,看著那个句号。她的手指在萤幕上悬浮了很久。然后她按下载。压缩档开始下载,进度条从百分之零跑到百分之一、百分之二、百分之三。她看著那个进度条,想起机房里的那个晚上,想起备份进度从百分之三十七跑到百分之百的那十八个小时。想起程司晏说“因为你的代码值得被记住”。
她转头看他。他正看著她,表情平静,但她看见他的右手放在键盘上,手指微微弯曲,没有敲击。他的眼睛里有某种东西——不是深渊,不是光,是等待。等待她做出决定。
“谭书白寄了我的原始数据备份。”她说。
他没有说话。
“他反对我的理念。但他不希望我消失。”
他还是没有说话。
她转回萤幕。下载进度百分之六十七。她看著那个数字,看著它慢慢增加。然后她的手指移到删除键上。不是程式码的删除键,是整个项目的删除键——那个她写了一万八千行、删到九千行、现在只剩下六千行程式码的项目。她的手指悬在那个键上方。
“如果我的研究会伤害人。”她说。声音很低,低到几乎是气音。“那我宁可不要。”
她的手指按下去。萤幕上跳出确认视窗:“确定要永久删除项目‘Echo·Memory’吗?此操作无法复原。”
她的手指悬在回车键上方。工作室里只剩下电脑风扇的声音。窗外有鸟叫声,远远的,像是从另一个世界传来。她的视线落在萤幕上那个确认视窗上,落在“无法复原”那四个字上。她的手指开始往下压。
她的手指压在回车键上,键程刚过了一半,键盘从她手中消失了。不是被抢走,是被抽走——一只手从她身后伸过来,手指扣住键盘的边缘,稳定、精确,没有碰到她的手指,没有碰到她的手背,只是把键盘从她的手指下方平滑地拉出去。她的手指悬在半空中,还维持著按压的姿势,指尖下方只剩下桌面。
键盘被放在她碰不到的地方。她转头,看见程司晏站在她身后,距离不到半公尺。他的表情平静,但她看得出来——他的下巴绷得很紧,嘴唇几乎是一条直线。他的眼睛里没有她预期的愤怒或焦急,只有一种沉淀下来的东西,像是被压了很久的岩层。
“你删了数据,那些需要这个项目的人怎么办?”他的声音很低。
“我连自己都帮不了,怎么帮别人?”她的声音比她预期的更大。那不是愤怒,是某种积压了很久的气体,终于找到裂缝。她站起来,椅子向后滑了半公尺,撞上身后的工作桌,发出金属碰撞的声音。“你没看到那些留言吗?那些骂我们的人,那些说我们亵渎死者的人,那些说我们应该被抓起来的人。他们说的是对的。我们没有想过那些不想被记住的人。我们只想到自己。”
“我们想到了。”他的声音依然稳定。“你写的那封邮件,你设计的删除机制,你删掉的那百分之七十的数据——那些都是在保护不想被记住的人。”
“不够。”她的声音开始颤抖。“陈女士还是受伤了。那些不敢说出来的人还是受伤了。我写了七年的程式码,以为自己在帮助人,结果我在伤害人。我连这个都没想清楚,我凭什么做AI?我凭什么决定哪些声音该被记住、哪些该被遗忘?”
她的视线开始模糊。不是因为泪水——是因为血压,是因为呼吸太浅,是因为她已经连续三天每天只睡四小时。她的身体在摇晃,但她没有坐下。她站在那里,双手撑在桌上,手指压在木头表面,指甲陷进去。
“我外婆走的时候,我在实验室写论文。”她的声音变低了,低到几乎是自言自语。“我没有回去。我没有见她最后一面。我连葬礼都没有参加。我在实验室写论文。我写了一个能理解情感的AI,但我自己连外婆的最后一面都没有见到。”
她的手指在桌上握紧了。木头表面在她的掌心下变热,留下湿润的痕迹。
“我做Echo不是为了帮助人。”她说。这是她第一次对自己承认这件事。“我是为了自己。我是为了再听到外婆的声音。我是为了假装她还在。我是为了逃避她已经走了的事实。我做的每一个模型、写的每一行程式码,都是在逃避。”
她的声音在最后一个字上裂开了。不是崩溃,是一道很细很细的裂缝,细到她以为可以忽略,但它就在那里,在她的声带上,在她的胸腔里,在她撑在桌上的手指间。
程司晏没有说话。他没有说“你不是在逃避”,没有说“你的项目帮助了很多人”,没有说任何她预期的话。他只是站在那里,安静地看著她。那种安静不是空白,是容器。她不知道那个容器有多大,但她感觉得到自己的声音在里面回荡,没有被反弹,没有被吸收,只是在那里,被接住了。
“你知道我第一次听你演讲的时候在想什么吗?”他的声音从她身后传来。
她没有转头。
“在想你的声音很好听。”他说。“不是因为你在讲技术,是因为你的声音里有一种东西。你在讲情感计算,讲AI如何辨识人类的情绪,讲那些损失函数和准确率。但你的声音在说别的事情。你的声音在说,你很想念一个人。”
她的手指在桌上收紧了。
“后来我读了你的论文致谢。你写了你的外婆。你写她是你第一个情感模型。你写她在你十五岁的时候告诉你,记忆不是储存,是重建。你写你没有见到她最后一面。”他的声音稳定,每个字的音量都一样。“那篇致谢我读了大概一百次。”
她终于转头看他。他站在原地,距离没有变近。他的表情平静,但她看见他的眼睛——那双眼睛里没有深渊,没有光,没有水。只有一种她无法命名的东西,像是某种被她藏了很久的秘密,被另一个人用同样的重量捧著。
“你不是在逃避。”他说。“你是在试图重建。这两件事不一样。”
“哪里不一样?”
“逃避是假装没有发生过。重建是承认它发生了,但试图让它继续存在。”
她看著他。他的视线没有闪躲。工作室里只剩下电脑风扇的声音和她的呼吸声。她的呼吸很浅,浅到每一次吸气都需要用力。
“你怎么知道?”她问。
“因为我也做过同样的事。”他说。“我爸的八秒。我听了一千次。然后我用AI生成了更长的对话。那不是逃避。那是我想让他继续存在。”
他走向自己的位置,坐下。他的手指在键盘上快速移动,萤幕上跳出一个终端视窗。他输入了一串指令,按下回车。然后他转头看她。“过来。”