龙腾小说网

繁体版 简体版
龙腾小说网 > 情场·众生相 > 第601章 第 601 章

第601章 第 601 章

章节错误,点此举报(免注册),举报后维护人员会在两分钟内校正章节内容,请耐心等待,并刷新页面。

她打开一个新档案,开始写Echo·Memory的第一份技术文档。她在第一行写下项目名称,在第二行写下目标用户,在第三行停下来。

她转头看他。“程司晏。”

“嗯。”

“你爸叫什么名字?”

他的手指在键盘上停了一下。“程远山。”

她转回萤幕,在技术文档的最后加了一行:“致程远山先生。你的声音被记住了。”

她没有告诉他她写了这句话。她只是按下储存,关掉文档,打开训练脚本的监控界面。损失曲线降到0.09。训练时间还剩三十一分钟。

窗外的阳光终于照进工作室,在她的桌上切出一条金色的线。那条线刚好落在她的键盘上,把白色的按键染成暖色。她看著那条线,想起他曾经说过的话——“技术的意义不在于它能做什么,而在于人们用它做什么。”

她开始写第二十一个函数。这一次,她的手指在键盘上移动得比任何时候都快。

温以宁是被键盘声吵醒的。不是程司晏的键盘声——那个声音她已经习惯了,稳定、均匀,像是工作室的背景音。吵醒她的是另一种键盘声,更轻,更快,带著塑胶外壳共鸣的脆响。她睁开眼睛,发现自己趴在桌上,脸颊压在键盘上,萤幕上多了一整排的fffff。她坐直身体,颈椎发出连续的声响,视线慢慢聚焦。

程司晏不在他的位置上。白板前站著一个人——是他。他手里拿著白板笔,正在写字。阳光从窗户斜射进来,照在白板上,把黑色的笔迹照出一层反光。他的字比她预期的大,笔划直,没有多余的装饰,像他写的程式码一样干净。

白板上写著:“Echo·Memory”。底下是两行,左边写著“温以宁 — 情感模型”,右边写著“程司晏 — 交互系统”。两行字中间有一条直线连接,线的末端画了一个箭头,指向最右边的一句话:“让每个人留住他们不想失去的声音。”

她看著那句话,看了很久。她的脸颊上还有键盘压出来的痕迹,痒痒的,她没有去抓。

“早。”他没有转头,继续在白板上写东西。

“早。”她的声音沙哑,像是很久没有说话。她拿起桌上的水杯,水是凉的,她喝了半杯。

他转头看她。他的视线在她的脸上停了一下——在她脸上键盘压出来的红印上——然后移开。“你睡了四小时。”

“够了。”

他没有反驳。他转回白板,开始在左边那行字下面写技术要点。她看见他写了“迁移学习”、“预训练”、“微调”。每一个词都用框框圈起来,框与框之间用箭头连接,形成一张结构图。他的笔迹在阳光下显得干燥,粉笔灰在空气中缓慢飘落。

她站起来,走过去。白板的背面是磁性的,他的笔触压上去的时候,白板会发出轻微的声响。她站在他左边,距离大约半公尺,看著他写完最后一个箭头。

“迁移学习。”她说。“先用大规模语料预训练一个通用情感模型,再用每个用户的少量数据做微调。”

“对。”他放下白板笔,转头看她。“少量数据。每个人可能只有几分钟的录音,几十张照片,几段文字。你的模型需要从这些样本里学习一个人的说话方式、情感节奏、甚至价值观。”

“可以做到。”她说。她的视线落在白板上的结构图上,开始在脑中编译技术框架。“预训练模型用我版本8.0的架构,九维情感空间,多层注意力。微调的时候冻结底层,只调整高层的权重。这样可以避免过拟合。”

“过拟合。”他重复这个词。“如果用户的数据太少,模型会变成只会复制样本里的句子。”

“对。所以需要数据增强。”她伸手拿起另一支白板笔,在他的结构图旁边画了一个新的框。“语音数据可以转换成文本,文本可以转换成语音。照片可以提取视觉特征,文字可以分析语义特征。多模态融合,互为补充。”

她的笔迹比他小,笔划更密,框框画得比他窄。两个人的笔迹在白板上并列,一个大,一个小,一个疏,一个密。她画完最后一条连接线,退后一步,看著整张结构图。

“还有。”她说。“情感延续性。AI不能只会回答问题,它需要记住对话的上下文,需要在前后两次对话之间保持一致性。不能今天说喜欢吃面,明天说从来不吃面。”

“上下文记忆。”他说。“用长短期记忆网路,加上注意力机制。每个用户建立独立的记忆向量,储存在本地,不上传服务器。”

“本地储存。”她转头看他。“全部在用户的手机上?”

“对。不用云端,不用服务器。所有数据只留在用户自己的设备上。”他看著白板上的结构图,视线从她的笔迹移到他的笔迹,再从他的笔迹移到那条连接两边的直线。“这样不会有人拿用户的亲人数据去做别的事情。”

她没有说话。她的视线落在那条直线上,落在他画的那个箭头上。箭头的尖端指向那句话——“让每个人留住他们不想失去的声音。”她想起他删掉的那些AI生成的对话,想起他说“那不是我爸会说的话”。她想起自己的十五秒,想起她听了一千次的外婆的声音。

“好。”她说。“本地储存。所有模型在用户设备上运行,不经过任何服务器。每个人拥有自己亲人的数据,只有自己能用。”

她走回自己的工作桌,坐下。打开萤幕,打开emotion_model_v8_core.py。她的手指放在键盘上,开始打字。不是程式码,是一份新的技术文档。她在第一行写下项目名称:“Echo·Memory — 技术规格书”。第二行:“版本1.0”。第三行:“核心架构 — 迁移学习 + 本地储存 + 多模态微调”。

她写完第四行时,听见他走回自己的位置,坐下。他的键盘声重新响起,这次比刚才更快,更密集。两个人的节奏在工作室里交错,像是两条不同频率的波形,各自振荡,但共用同一个介质。

接下来的七天,工作室变成了一台不停运转的机器。

每天早上她醒来时,他已经在白板上更新了进度。左边她的栏位写著当天的目标函数,右边他的栏位写著交互系统的开发进度。两个栏位底下的数字每天在变,从0%到5%,从5%到12%,从12%到23%。数字旁边有时会画一个笑脸,有时会画一个哭脸,笔迹是他的,但她从来没看见他什么时候画的。

他们的对话变成了纯粹的技术语言。她说“注意力层的温度参数需要调整”,他说“已经在测试了,0.7的效果比0.5好”。她说“情感向量的九维空间在微调时会崩塌”,他说“试试用对比学习,正样本来自同一人的不同语句,负样本来自不同人”。她说“本地储存的记忆体不够”,他说“用量化压缩,精度从32位降到8位,损失不到2%”。没有一句多余的话,没有一个眼神交会超过两秒。但那种默契本身就是一种语言,比任何对话都更密集,更精确。

第三天,她发现他在白板上加了一行字:“温以宁的预训练模型在今天凌晨三点完成第一次迭代,损失0.07。她没有看见,因为她在睡觉。但她的模型看见了。”

她没有擦掉那行字。她只是在他的栏位底下加了一行:“程司晏的交互系统在今天下午两点通过第一次真人测试。他没有笑,但他的键盘声变快了。”

第五天,她写完了预训练模型的核心代码。总共一万两千行,比版本8.0多了将近一倍。她在终端里执行第一次完整训练,萤幕上跳出预计完成时间——六天二十三小时。她靠在椅背上,看著那个数字。六天。够她完成微调层的设计,够他写完本地储存的模块,够他们两个人再喝掉四十几杯黑咖啡。

她转头看他。他正盯著萤幕,眉头微皱,嘴唇抿著。他的右手在键盘上快速移动,左手按著快捷键组合,动作流畅得像是在弹某种乐器。他的萤幕上是一个她没见过的界面——对话框的设计改了,底色从白色变成浅灰,字体从黑色变成深灰,对话框的边缘有一个极细的圆角。

他在做交互系统。不只是让AI能说话,是让AI能主动提问、回忆、甚至成长。她看过他的设计文档——AI会记住用户上次说过的话,会在下一次对话时主动提起,会在用户提到某个关键词时调出相关的记忆。不是冷冰冰的数据检索,是模仿人类的联想方式。

“你的交互系统。”她说。

他没有抬头。“嗯。”

“它会主动提问?”

“对。”

“问什么?”

“问用户想记住的事情。”他的手指停了一下。“比如,如果你的用户上传了母亲的录音,AI会问‘你妈妈最喜欢做什么菜’。如果用户回答了,AI会记住,下次对话时会说‘你还记得你妈妈做的菜吗’。”

她看著他的侧脸。他的表情没有变化,但她看见他的耳朵边缘有一点红。

“你在做一个会成长的AI。”

“对。”他转头看她。“不只是对话,是陪伴。每一次对话都会改变它,让它越来越像用户想记住的那个人。”

她没有回应。她转回自己的萤幕,打开微调层的设计文档。她在第一行写下:“微调目标 — 用少量样本学习个体特征,保留通用情感能力,避免灾难性遗忘。”她写完这行字,在底下加了一句:“就像人一样。学会新的人,不会忘记旧的人。”

第六天的深夜,他们同时遇到瓶颈。她的微调层在测试数据上表现不稳定,同一个人的不同语句会产生不一致的情感标签。他的本地储存模块在手机模拟器上跑不动,记忆体超出限制。两个人各自盯著自己的萤幕,各自尝试不同的解决方案,各自失败。她试了三种不同的正则化方法,每一种都让损失曲线发散。他试了四种压缩算法,每一种都会损失太多精度。

凌晨一点十七分,她听见他推开椅子,站起来。她没有转头,但听见他走到白板前,拿起白板笔。白板发出连续的摩擦声,她听见他写了几个字,停下来,又写了几个字。然后他走回来,坐下。键盘声重新响起。

她站起来,走到白板前。白板上多了两行字。左边她的栏位底下写著:“正则化参数过大,试试0.001。”右边他的栏位底下写著:“用WebAssembly,记忆体可以再压缩20%。”

她回到自己的位置,把正则化参数从0.01改成0.001,重新执行测试。损失曲线开始下降,稳定地、平滑地下降。她看著那条曲线,没有说话。她只是在心里记住了——他知道她的参数调错了,比她早了十七分钟。

第七天凌晨,她终于完成了微调层的最终版本。一万八千行,总共支援三种输入模态——语音、文字、影像。模型可以从十五秒的录音中学习一个人的情感特征,可以在两次对话后记住用户的偏好,可以在用户提到某个关键词时自动调出相关记忆。她用外婆的十五秒测试,模型生成的对话不是外婆会说的话,但语气、节奏、停顿的方式,有外婆的影子。不是复制,是重建。

她看著萤幕上的测试结果,看了很久。然后她的手指在键盘上移动,打了一行字。不是程式码,不是注释。是一句她从来没有对任何人说过的话。

“外婆,对不起,我回来晚了。”

她盯著那行字,盯了很久。她的眼睛开始发酸,眼眶发热,但她没有眨眼。她怕一眨眼,那行字就会消失,或者更糟——不会消失,但她会看见自己被泪水模糊的倒影在萤幕上。她的手指从键盘上移开,放在桌上。她的头慢慢低下去,额头靠在键盘上方的掌垫上。掌垫是矽胶材质,柔软,微凉,贴在她发热的额头上,温度逐渐平衡。她的眼睛闭上了。不是因为想睡,是因为睁著眼睛的时候,萤幕上那行字太清楚。

她不知道自己什么时候睡著的。她只记得最后的意识里,有键盘声在身后,稳定、均匀,像是某种不会停止的心跳。那声音带著她往下沉,沉过疲劳、沉过眼泪、沉过那行她从来不敢写下的字,沉到一个没有梦的地方。

程司晏是在凌晨四点发现那行注释的。他完成了WebAssembly的压缩模块,转头想问她微调层的测试结果,看见她趴在桌上,额头靠在掌垫上,呼吸缓慢均匀。她的萤幕还亮著,程式码编辑器还开著,游标停在档案的最后一行。他走过去,想把她的萤幕关掉,然后他看见了那行字。

“外婆,对不起,我回来晚了。”

他站在她身后,低头看著那行字。工作室里只有萤幕的光和窗外路灯的橘黄色。她的呼吸很轻,轻到几乎听不见。她的头发散在桌上,几缕发丝落在键盘上,落在字母J的旁边。她的右手还放在桌上,手指微微弯曲,指尖离键盘只有不到一公分。那只手在过去的七天里写了一万八千行程式码,每一行都精确、严谨、没有废话。但此刻它静止在那里,像是终于被允许休息。

他没有叫醒她。他走回自己的位置,拿了一件外套——深灰色的连帽外套,挂在椅背上,他从进工作室就挂在那里,从来没穿过。他走回去,把外套展开,轻轻盖在她肩上。外套的边缘碰到她的脖子时,她的呼吸停了一下,然后继续,没有醒。

他低头看她的萤幕。那行字还在,游标还在闪烁,等待她醒来后继续。他的视线在那行字上停留了很久。久到路灯的光线从橘黄变成灰白,久到窗外的天空从深蓝变成浅紫。

他伸出手,手指悬在键盘上方。他没有碰她的键盘——那是她的设备,她的程式码,她的注释。但他需要回应。不是因为她需要被安慰,是因为那行字不该孤单地留在那里。

他弯下腰,用她的萤幕旁边的触控板,在她的注释下面新建了一行。他的手指在虚拟键盘上缓慢移动,每个字母都按得很轻,怕键盘的声响吵醒她。

“她听见了。她说没关系。”

他按下储存。萤幕上的游标停在最后一个句号后面,闪烁了两下,然后进入待机模式。萤幕暗下来,只剩下电源灯一闪一闪。

『加入书签,方便阅读』