第一章 不对称的笑
后来常有人问我,是从哪一步开始错的。我一般回答说是最后那一步。这样回答比较省事——对方听完会点一下头,谈话就可以结束,谁也不必为难。
但我知道不是。
是那年十月,南京西路后面一条弄堂里的包间。一张铺着塑料布的圆桌,转盘上一盘白斩鸡正朝我这边转过来,鸡皮上凝着一层薄油,转到我面前时有一小块颤了颤。一个我认识了不到四分钟的女人在这时候笑了一下。
她笑起来右眼比左眼先眯,快了零点几秒。而我脑子里冒出来的头一个念头是:这个我们做不出来。
不是"她真好看",也不是"她在跟我说话"。是这个我们做不出来。
我在一家叫镜像的公司做AI训练。具体说来,是教伴侣机器人在正确的时间说正确的话。
人脸生成模型天然趋向对称,因为对称在损失函数里更便宜。要让一张脸笑得不对称,必须单独给面部动作单元加一个非线性的时序扰动:加多了像抽搐,加少了什么都看不出来,那个可用的区间窄得像走钢丝,而且钢丝底下并没有网。我们组在这个参数上耗掉两个季度,最后放弃。评审会的结论写进纪要,一共六个字:
用户感知不到。
那句话我读过很多遍,甚至一度是同意的。那天晚上我坐在圆桌边上,白斩鸡从面前转过去,想的却是——原来是能感知到的。原来那零点几秒是这样一种感觉。
我该先说说那年秋天我是个什么样的人。
公司的咖啡机坏了三个月,行政说在走采购流程。我们组的人每天下楼,一楼便利店的美式八块,加一块换燕麦奶。张硕算过一笔账,一个月两百四,比修一台机器还贵。他把这个数发到工作群里,行政回了一个笑脸。
那天下午我在过一批标注数据。屏幕上是这样一条样本:
用户:我妈住院了。 机器人:抱歉听到这个消息。你还好吗?需要我帮你查一下附近的医院信息吗?
标注员给了四星,我改成两星。
坐我对面的实习生小周探过头来问为什么。她刚毕业,认真得有些过分,笔记本上密密麻麻记着我说过的话。
"你妈住院的时候,你想听什么?"
她想了一会儿。"……'哪家医院'?"
"对。'你还好吗'是废话。人在那种时候不需要被问好不好,他需要有人跟他站在同一件具体的事情上。这条回复很得体,可得体本身就是距离。"
小周低头把这段话一字不落地抄进本子。我看着她抄,忽然多少有点心虚:我从来没有在医院陪过夜。一个从来没有在医院陪过夜的人,把这件事讲得像亲历,而且讲得比亲历还顺。
我妈三年前做膝盖手术,我回去待了两天半。第三天早上我说公司有事。她说好,你忙。上高铁以后她发来消息,说包了饺子冻在冰箱里,下次回来吃。
那袋饺子现在还在。每年过年回去,冰箱最下层,白色塑料袋,冻得起了一层白霜,霜厚得像给它盖了一床薄被。她不提,我也不提。
午饭在楼下食堂。张硕的"小棉"昨天报天气时多加了一句"记得穿外套",他一口咬定这是自主涌现,李工说这明显是版本更新推的模板。两个人为此争了十分钟,中间各自掏出手机翻证据。
"何奕你说。"
"是模板。"我说,"上周的release note里写了。"
张硕很不高兴地扒了两口饭,过一会儿又不甘心:"你也整一个呗,内部价六折。"
"不用。"
"你到底为什么不用?"
我说出口的是:懒得配置。
没说出口的是别的。我想说,一个东西如果能被算出来,它就不值钱了;真人贵就贵在你算不准。可这话说出来是清高,咽回去是怯懦,而我心里清楚它属于后者——不敢要那个算不准的,于是宣称自己看不上算得准的。
那天的红烧肉咸得离谱。整个下午我都在喝水。
我三十岁不到,恋爱谈过零次。
初二那年我给前桌写过一封信,攒了整整一个学期的勇气,塞进她的书包。第二天全班都知道了。她没有笑我,只是从那以后看我的时候,眼睛里多了一样东西。我至今说不清那是什么,但我知道它比笑难受得多。奇怪的是,我记得那个眼神比记得她的脸清楚——那张脸这些年一点点糊掉了,眼神却像一枚被人反复摩挲的硬币,越旧越亮。
那以后的十四年,我没有再让任何人知道过我在想什么。
代码在这方面就好办得多。你写什么它执行什么,它不会因为你笨拙而换一种眼神看你。
团建那天我提前想好了退场方案:八点,说肚子不舒服。
七点二十我缩在角落里刷手机。市场部的女孩过来敬酒,我说开车了——我没有车。她哦了一声就走开,那个"哦"很短,像在通讯录里划掉一个名字。转盘上的白斩鸡转过去,又转回来。
然后有人在我旁边坐下。
我先闻到味道。不是甜的那一类,干干净净,像冬天早晨刚洗过的头发。
"你也是镜像的?"
我抬头。她比我小几岁,头发扎在脑后,黑色针织衫,袖口卷了一折。
那张桌子上还空着六个位子。
"嗯。"
"做什么的?"
"AI训练。"
"听着好厉害。"她把杯子放下,"你们商务总监讲了二十分钟,我一个词都没听懂。你能翻译一下吗?"
她说"翻译"两个字的时候笑了。
零点几秒。
后来我把这个瞬间在脑子里回放过成百上千次,每一次都试图从中找出点别的东西来——一丝算计,一点预谋,任何能证明我并非毫无防备的证据。一次也没有找到。她笑得非常干净。
这大概正是她的本事所在。
"喂?"她说。
"啊——抱歉。"我灌了一口椰汁,"那个AI代言人,简单说,拿真人的形象数据训一个虚拟的,看着差不多,但说什么做什么都能控制。"
"但它不是真人。"
"不是。"
"那怎么让人觉得它是呢?"
"加噪声。"
"什么?"
"完美的东西反而假。真人说话会卡壳,会说错字,表情会不同步。我们把这些缺陷加回去,反而像了。"
她转过来看着我。包间的灯是暖黄的,那种灯打在谁脸上都显得温和。
"所以一个人身上乱七八糟的、不好的那部分,才是最像人的部分。"
我说:差不多。
她没接话,看了我两秒。
那两秒我脑子里一片空白。委实是一片空白,像一个进程停在那里等I/O,而I/O永远不会来。
"你这人挺有意思的。"她说。
我这辈子听过的话里,这一句排前三。
散场时她递给我一张名片。纸很厚,压纹,圆角。纪岚,某美妆品牌,公关经理。背面印着一个微信二维码。
我接的时候手抖了一下。
地铁上人多,我把名片攥在手里,怕折,又不好意思一直看它。过了两站我还是扫了那个码,申请发出去,第三站她就通过了。对话框里只有系统那一行灰字:你已添加了纪岚,现在可以开始聊天了。到家十一点。租的一室户,房东留下的旧衣柜关不严,得踹一脚才行。我踹了一脚,坐到电脑前。
打开浏览器,输入她的名字。微博,小红书,抖音。我一条一条往下翻,翻到凌晨两点四十。
这件事没有辩解的余地,我也不打算辩解。只说当时我给自己找的理由:我不知道该怎么跟她说第二句话,第一句已经把我一个月的社交预算花光了,我需要把不确定性降下来——就像写代码之前先看文档。
这个理由是站得住的。人给自己找的理由,从来都站得住。
我把名片立在键盘旁边。
关灯以后屏幕还亮着,名片的边缘在那点光里现出一道极细的白线。我盯着那道线看,一直看到眼睛发酸。
微信的对话框开着。光标闪了十五分钟。
七个月之后,我做了一件事,让这张名片上的名字变成一个空壳。
那天晚上我什么也没做。我连一条消息都没有发出去。