下一章 上一章 目录 设置
3、过度拟合 ...
-
周一早上六点,孟凡被厨房的声音吵醒。
他看了眼手环——睡眠时长四小时十七分,深度睡眠占比不足百分之十五。手环用柔和的震动静音报警:睡眠质量差。
客厅里,父亲正在穿外套。那是一件孟凡没见过的深蓝色工装,左胸口印着“迅达物流”四个字,字有点褪色了。
“爸,这么早?”
“交接班。”父亲没回头,把饭盒塞进背包,“七点得到岗。”
孟凡看了眼窗外。天刚蒙蒙亮,楼下路灯还亮着。“我送您。”
“不用。”父亲拉上背包拉链,“地铁直达。你睡你的。”
门关上了。
孟凡站在客厅里。桌上放着父亲没喝完的半杯水,杯底沉着一点茶渣。墙上的钟指着六点零八分。
他突然觉得这个家空得厉害。
---
上午十点,创世科技。
孟凡刚进办公室,就看见测试组的人围在茶水间,表情肃穆。鱼缸边放着一朵小白花——3D打印的。
“孟哥,”小李声音哽咽,“我们给阿尔法办了个告别仪式。”
鱼缸空了。水抽干了,缸底铺着白色石子,那朵白花摆在正中央。
“它的一生虽然短暂,但给我们的算法优化提供了宝贵的数据。”产品经理不知什么时候冒出来,端着咖啡,“根据喂养记录,我们优化了‘情感陪伴型AI’的互动频率模型。阿尔法的牺牲是有价值的。”
孟凡看着那缸。“鱼呢?”
“冷冻了。”小李说,“等生物降解处理。”
“挺好。”孟凡说,“下次别养了。”
他走向自己工位,路过白板时停了一下。上面写着一行字:“过度拟合:模型在训练数据上表现完美,在现实数据中一塌糊涂。”
底下有人用红笔批注:“说的不就是咱们?”
孟凡擦了那行批注。
---
中午十二点半,孟凡给父亲发了条消息:“午饭吃了吗?”
两小时后才收到回复:“吃了。”
就两个字。
孟凡点开父亲微信朋友圈——一条横线。父亲从来不发朋友圈,但至少以前能看到三天可见。现在是一条线。
他想了想,打开地图App,搜到迅达物流仓库的位置。在城北工业区,地铁终点站还得换公交。
卫星视图上,仓库是个巨大的灰色方块,像一块电路板上的芯片。
下午三点,孟凡提前下班了。他没跟任何人说,刷卡出大楼时,保安多看了他一眼——这个时间点离开,不是去见客户就是去面试。
都不是。他要去看看父亲上班的地方。
地铁坐了一个小时。越往北走,车厢越空。从光鲜的写字楼片区,到拥挤的老城区,再到开阔的工业带。窗外的景色像快退的录像带,把城市的发展倒着放了一遍。
出地铁站时,天阴了。四月的风里还有凉意。
孟凡按导航走到仓库门口。那是个巨大的铁皮棚子,门卫室里坐着个打瞌睡的老头。门口停着十几辆货车,工人们穿着和父亲一样的蓝色工装,推着货架进进出出。
他站在马路对面,点了根烟——戒了三年,今天特意买的。
五点半,白班工人开始下班。人潮涌出来,大多很年轻,边走边刷手机。父亲不在里面。
孟凡等了一会儿,直到人差不多散尽,才看见父亲从侧门走出来。他不是一个人,旁边还有个年纪相仿的工友,两人边走边说着什么。
父亲脸上有笑容。
孟凡愣了一下。他很久没见父亲这样笑过了——不是对他,是在工友面前,那种放松的、甚至有点得意的笑。
他看见父亲比划着什么手势,应该是在讲机床操作。那工友听得直点头。
然后他们走到自行车棚,各自推了辆旧自行车出来。父亲骑上车,朝工友挥挥手,往另一个方向去了。
孟凡掐灭烟,跟了上去。
父亲骑得不快,背微微弓着。他骑过一片待拆的厂房,骑过一条河,最后拐进一个老小区。
孟凡远远看着父亲在楼下锁车,提着背包上楼。三楼,左边那户。灯亮了。
他在楼下站了十分钟。三楼窗户里,能看见父亲的身影在厨房忙碌。大概在热饭。
原来父亲下班不直接回家。
原来父亲在这里,还能找到说话的人。
孟凡转身离开时,手机响了。是林见清。
“孟先生,有个事想麻烦你。”她的声音有点急,“我这儿来了个客人,情况有点特殊。你方便过来一趟吗?”
---
孟凡到“时光修补局”时,天已经黑了。
店里亮着暖黄的灯。柜台前坐着个老太太,七八十岁的样子,头发梳得整整齐齐,穿着一件洗得发白的碎花外套。
她面前摊着一块红布,布上是一只玩具熊。
玩具熊很旧了,一只眼睛掉了,绒毛秃了好几块,胳膊的接缝处裂开,露出里面发黄的棉花。
林见清看见孟凡,松了口气。“这位是王奶奶。她想修这只熊,但……”她压低声音,“这熊修不了。”
孟凡走过去。玩具熊大概三十厘米高,是那种最廉价的款式,现在商场里早就没卖的了。
“这是我孙子小时候的玩具。”王奶奶说话很慢,但清楚,“他爸妈离婚早,跟着我长大。小时候睡觉一定要抱着它。”
她轻轻摸了摸熊的头:“后来他出国了,去年……去年在那边出车祸,没救回来。”
店里安静得能听见钟表走动的声音。
“这熊是他留给我唯一的东西。”王奶奶抬起头,眼睛很亮,没有眼泪,“姑娘说修不了,料子太老了,找不到替换的。我就是想问问,有没有别的法子?”
林见清看向孟凡,眼神里写着:你看,这就是我说的“特殊情况”。
孟凡蹲下来,仔细看了看那只熊。确实,这种材质的绒毛布早就停产了,眼睛的款式也找不到一样的。就算勉强缝补,也只会更难看。
“王奶奶,”他说,“修如旧需要原材料。这个确实……”
“我知道。”王奶奶点点头,“我就是不死心。总觉得修好了,就好像……他还在似的。”
她说完,小心翼翼地把熊重新包起来,动作轻得像在包一个婴儿。
“谢谢你们。”她站起来,“我再想想办法。”
林见清送她到门口。老太太的背影在路灯下显得特别小,但走得稳稳的。
门关上后,林见清靠在柜台上,长长吐了口气。
“第几个了?”孟凡问。
“这个月第三个。”林见清说,“都是修不了的东西。有的是太破,有的是找不到配件,有的是……人已经不在了,修了也没意义。”
她倒了杯水,推给孟凡:“找你过来,是因为王奶奶的情况,让我想起你父亲。”
孟凡接过水:“怎么说?”
“都是被时代落下的人。”林见清看着他,“王奶奶想修的是一只熊,你父亲想修的是一辈子。但有些东西,碎了就是碎了,修不好的。”
孟凡没说话。他想起下午在仓库门口看到的父亲——在工友面前还能笑,还会比划机床的手势。那是父亲在努力修补自己破碎的尊严。
“但人总得试试。”林见清又说,“就算修不好,也得试试。不然怎么活下去?”
---
晚上十一点,孟凡回到家。
父亲已经睡了——或者假装睡了。卧室门关着,门缝下没有光。
孟凡洗了澡,坐在电脑前。他打开了那个私密文件夹,里面是他为父亲开发的“情绪干预算法”原型。
程序界面很简洁,输入父亲近期的行为数据——睡眠时长、饮食记录、社交频率、消费模式,系统就会输出建议:推荐看的电视节目、适合的社交活动、甚至一日三餐的菜谱。
过去两周,父亲的表现数据都在好转。睡眠稳定了,出门次数增加了,甚至还和工友吃了顿饭。
算法显示:干预有效。
但今天孟凡看着那些曲线,突然觉得恶心。
他在骗谁呢?
父亲真正的情绪——那些在仓库夜班时的疲惫,在面对年轻主管时的难堪,在旧工友面前强撑的笑容——这些数据根本捕捉不到。
算法看到的,只是一个五十八岁男性用户的行为模式改善。
它看不到尊严。
孟凡点开源代码,开始修改。他删掉了所有优化目标——什么“情绪指数提升”“社交活跃度增加”,全删了。
然后他写下一行新的目标函数:
写完后,他自己都笑了。这算什么目标?怎么量化?怎么评估?
但他就让这句话留在那里,像程序里的一个bug,一个注释,一个明知实现不了却非要写在那儿的理想。
凌晨一点,他收到林见清的消息。
是一张照片。那只破旧的玩具熊,被她放在柜台最显眼的位置,旁边摆了一小盆多肉植物。
照片底下有句话:“修不好,就供着。存在过的东西,总得有个地方放着。”
孟凡看了很久。
然后他关掉电脑,走到客厅。母亲的手表还在窗台上,秒针一步一步走着。
他拿起表,贴到耳边。
咔。咔。咔。
声音比昨天更清晰了。好像那粒被清掉的灰尘空出来的位置,终于被时间填满了。
卧室里传来父亲的咳嗽声。很轻,但孟凡听见了。
他放下表,走到父亲门前,手放在门把手上,停了很久。
最终还是没有拧开。
他回到自己房间,躺在床上。天花板那道裂缝在黑暗里看不见了,但他知道它还在那里。
有些东西,碎了就是碎了。
但人总得试试。
就算修不好,也得试试。
不然怎么活下去?
窗外传来远远的货车声——也许是父亲的仓库,也许不是。声音闷闷的,像这个城市沉重的呼吸。
孟凡闭上眼。
在彻底睡去前,他想:明天得去给父亲买双好点的鞋。仓库地板硬,站一晚上,脚会疼。
这次不靠算法推荐。
就自己去挑。