文 / 巫言彻
我是在清理邮箱的时候,看见那封信的。那天晚上已经很晚了,我原本只是想把邮箱里那些积了几年的东西清一清:会议广告、期刊推荐、学校系统自动发来的提醒、早已失效的优惠券,还有一些连我自己都不记得什么时候订阅过的学术通知。删到一半,一封 Google Scholar 的邮件浮了出来。发件时间不算太久,可邮件里的那个名字,却把我一下子带回了四年前。
我盯着那个名字看了几秒,才想起来自己曾经订阅过那位教授的 Scholar。那还是我申请博士的时候。她和我毕业于同一所大学,当时就在 Penn State 任教,我是在一个校友飞跃群里看到她的招生信息,于是给她写了邮件。那时我准备来美国读博士,理由当然有很多,想继续做研究,想出去看看,也隐约觉得自己大概适合走这条路。但在这些能够写进 personal statement 的理由下面,还压着一个不太适合写进去的理由。
我那时想追一个人来美国。
二十几岁的时候,人很容易把“美国”想象成一个地方,而不是一整片大陆。仿佛只要都到了美国,就算已经离得很近;仿佛横跨几个州,也不过是多坐一会儿飞机的事情。那时候我还不知道,有些距离根本不以公里计算。
我和那位教授的面试还不错。她最后问我有没有托福成绩,我说还没有,她便让我先去考。于是我报名,考试,等成绩。两周以后,我拿到了托福成绩,又给她写了一封邮件。
她很快回复,说位置已经没有了。就在这两个星期里,她招了另一个和我同校毕业的学生。
这件事当时其实一点也不戏剧化。没有暴雨,没有错过的火车,没有人在机场转身,也没有什么命运交响曲忽然响起来。只有一封措辞礼貌的邮件,大意无非是:很遗憾,我已经招到学生了。
后来她把我推荐给 Penn State 的另一位教授。那位教授愿意给我 offer,我却因为不喜欢他的管理方式拒绝了。再后来我继续面试,继续写邮件,继续在不同教授的网页之间跳来跳去,绕了一个不算短的圈,最终还是来到了 Penn State,只不过进了另一个完全不同的实验室。
更有意思的是,我到这里没多久,居然又偶然联系上了那个比我早两周拿到位置的校友。我们聊了几句,她给我推荐了一张电话卡,说很好用,我要是通过她的链接办,她还能拿一点返现。我最后还真用了。命运有时候就是这样,它先摆出一副希腊悲剧的架势,转过头来,却只是想赚你的 referral bonus。
几年以后,那位教授从 Penn State 跳槽去了弗吉尼亚大学,那个学生也跟着去了。从那以后,两条原本都从 Penn State 出发的路,才真正向两个方向分开:一条去了弗吉尼亚,另一条留在了宾夕法尼亚。我一直没有特别注意这件事,直到那天晚上清理邮箱,才顺手点开那位教授现在的主页,又点进那个学生的 Scholar。
页面上整整齐齐排列着一串论文标题:机器学习、差分隐私、大语言模型、偏好数据、模型对齐。每个词单独拿出来我都认识,但它们组合起来以后,就开始产生一种奇怪的陌生感。
她最近的一篇文章题目很长,大意是利用差分隐私合成人类偏好数据,用于大语言模型对齐。我点进去看了一阵,看到“A ≻ B”的时候甚至停了一下,后来才知道,不过是“A 比 B 更受偏好”的意思。再往后是 PCA、聚类、reward model、privacy budget、synthetic preference data,以及一堆让我产生“我大概知道你们在干什么,但又不知道你们到底在干什么”的术语。
这不是数学太难造成的陌生,更像一个人站在一座巨大城市的郊外。远处灯火通明,道路纵横,偶尔还有列车从高架上经过。我知道里面有人生活,也知道那些道路一定通往某些地方,却不知道他们为什么往左转,又为什么在下一个路口往右。
我退回 Scholar 页面,顺手看了一眼论文数量,似乎比我多一点。又看了一眼引用,似乎比我低一点。很好,我满意地关掉了统计面板。读博士几年以后,人已经可以很熟练地做到一边感慨人生,一边进行这种毫无意义的学术属性比较。
我原本准备关掉浏览器,页面却忽然闪了一下。Scholar 重新加载,右下角出现了一行我从来没见过的字:
All 2 versions
我愣了一下。论文有多个版本很正常,但这一行字没有出现在论文下面,而是出现在了我的名字旁边。我盯着它看了几秒,点了进去。
屏幕完全黑了。
那不是显示器熄灭时的黑,因为背光还亮着。更像是屏幕突然变成了一块很深的玻璃,玻璃后面的网页、桌面、程序全都消失了,只剩下一层看不见底的暗色。我在里面看见自己的脸,也看见身后的房间。
然后我的倒影眨了一下眼睛。
我没有动,他却抬起了头。
我们隔着一层屏幕看着彼此。脸几乎一样,又明显不是同一个人。他的头发短一点,眼镜框不一样,身后的房间也不是我的房间。墙上贴着几张我看不懂的图,一块白板上密密麻麻写着公式,其中有一行我勉强认得几个符号:
Pr[M(D) ∈ S] ≤ e^ε Pr[M(D’) ∈ S] + δ
他低头看了看键盘。几秒以后,我浏览器顶部的搜索框自己出现了一句话:“你是谁?”
我把手放在键盘上,想了一会儿,回他:“不知道。你呢?”
对面的人笑了。他打字说:“我也不知道。”
画面抖了一下,又重新稳定下来。我们像隔着一面透明的水墙,彼此看得见,却谁也碰不到谁。我问他在哪里,他回答弗吉尼亚。看到这几个字的时候,我反而安静下来。有些事情一旦荒谬到某种程度,便不再需要求证。
我问:“你学计算机?”
他说:“准确一点,机器学习。你呢?”
我说:“光学。”
屏幕另一边沉默了几秒。他最后只发来四个字:“原来是你。”
那一刻我忽然明白,他大概也看见了某个不应该存在的 Scholar 页面。只不过他的页面里,那个陌生人是我。
他的故事和我的很像,只在一个很小的地方发生了偏差。那个世界里,他联系教授的时候,位置还没有被占掉。也许他的托福成绩早了两个星期,也许教授晚了两个星期做决定,也许原本应该进组的人临时去了别处。事情究竟在哪一步改变,他也说不清楚。
总之,他进入了那个实验室。他也来到 Penn State,也走过我走过的校园,在冬天踩过这里结冰的路,在同样的食堂吃过饭,也可能从同样的教学楼前经过。只是那个世界里没有另外一个我,所以所谓擦肩而过自然无从谈起。
几年以后,导师跳槽去了弗吉尼亚大学,他也跟着去了。在那里,他逐渐习惯别人问他做什么时,说出一些越来越长的词:privacy-preserving machine learning,preference optimization,large language model alignment。刚开始的时候,他也觉得这些名字很难看,不像“量子光学”或者“天体物理”那样,单单念出来就像科学。后来他才发现,很多学科都是这样,站在门口只能看见术语,真正走进去以后才开始看见结构。
他说,第一次真正理解 differential privacy 的时候,他在白板前站了很久。它要求一个人的数据存在或者不存在,都不能让整个系统的输出改变得太明显。于是他们裁剪梯度,加噪声,控制 privacy budget,在统计信息和某个具体的人之间画下一条边界。
他尤其喜欢 post-processing。一个已经满足差分隐私的结果,无论之后怎样处理,都不会额外损耗隐私预算。私人数据只需要通过一次门,后面的世界却可以继续生长。他们从真实用户的偏好里学习某种结构,再拿这种结构生成从来没有真实存在过的 preference data,然后用这些数据训练模型。
他说到这里停了一会儿,才继续敲字:“假的样本,真的规律。被藏起来的人还在那里留下了一点东西。我有时候觉得这事有点诗意。”
紧接着他又补了一句:“不过我从来没在组会上这么说。做机器学习的人最好不要随便说自己的算法有诗意,容易显得论文写少了。”
我笑出了声。
然后他问我:“非线性光学到底有什么好玩的?”
这个问题反而把我问住了。我想了一会儿,从最简单的东西开始给他写:
P = ε0(χ1E + χ2E² + χ3E³ + …)
他说这个他大概见过。我告诉他,最开始我也只是把它当作一个普通的展开,后来才慢慢知道,χ2 下面会长出二次谐波、和频和差频,χ3 下面会长出 Kerr effect、自相位调制和四波混频。再往深处还有参量过程、孤子、频率梳,还有许多我自己也没有走到底的地方。
“就是一个展开,”我说,“但一直往下走,下面居然有那么多东西。”
他看了一会儿,回了一句:“听起来不错。”
我说:“岂止不错。很漂亮。”
过了一阵,他说:“那我可能错过了。”
我手放在键盘上,本来准备回“我也错过了你那边的东西”,却没有敲下去。我突然觉得“错过”这个词不太准确。可究竟应该用什么词,我也想不出来。
我们后来开始交换一些没什么用的问题。他问我为什么做实验的人总喜欢把光路摆满一整张光学平台,我告诉他,因为模型不会替你把镜子摆正。我问他为什么机器学习的论文标题越来越像一句完整的英语作文,他说,因为要保证同行在看到标题的时候就已经累了。
他还问我读 Boyd 到底有什么好玩的。我告诉他,有时候你忽然发现自己以前零散学过的东西,被一套数学语言重新串起来,那种感觉很好。他说这种感觉他也有,只不过他的书里没有 susceptibility,只有概率、优化、泛化和信息。
聊了一阵以后,我才慢慢意识到,我们真正好奇的并不是对方发了什么论文,也不是去了什么学校。甚至连引用数字都只是玩笑。真正让我觉得奇怪的是,他已经拥有了一套我永远不可能在一夜之间获得的直觉。
他看一个 machine learning problem,大概扫几眼就知道哪里只是工程细节,哪里才是真正的困难。他知道哪些 loss function 只是换了名字,哪些 formulation 实际上改变了问题。而我看一个非线性过程,也会自然去想频率、相位、色散、对称性和耦合。
这些东西没法复制。它们是几年时间一点一点压进脑子里的。
午夜以后,Scholar 页面开始变得不稳定。画面偶尔出现雪花,文字有时会延迟几秒才传过去。就在我们还在研究到底发生了什么的时候,屏幕右下角弹出了一个窗口:
Possible duplicate profiles detected.
下面有两个按钮:
MERGE
KEEP SEPARATE
我们同时安静下来。
我不知道 MERGE 究竟意味着什么。他显然也不知道。也许真的只是合并两个 Scholar profile,也许点击以后会发生某件我们完全无法理解的事情。我们谁都没有去碰按钮,直到系统又弹出一行提示:
Duplicate profiles may affect citation statistics.
我没忍住笑了,对面的他也笑了。宇宙已经裂成两个版本,Google Scholar 首先担心的仍然是 citation,这件事莫名其妙地很符合逻辑。
我告诉他:“你论文好像比我多一点。”
他说:“你引用比我高一点。”
我说:“那还行。”
他回:“滚。”
那一瞬间,我第一次非常确定对面的人确实和我有关系。不是因为长相,也不是因为履历,而是因为这种毫无必要的胜负心。
过了一会儿,我问:“如果真的能换,你换吗?”
屏幕很久没有出现新文字。他最后没有回答,只问我:“你呢?”
我也没有回答。
页面下方忽然开始倒计时,从六十秒往下跳。谁也不知道计时结束以后会发生什么。真正到了这种时候,那些听起来应该很重要的问题反而没什么意思了。我本来想问他后不后悔,又觉得这话问出来像提前写好的台词。
最后我只问:“机器学习深处真的很好玩吗?”
他回答得很快:“非常好玩。”
他随后问:“非线性光学呢?”
我说:“很漂亮。”
倒计时剩下十秒时,我们的两个光标都已经停在 KEEP SEPARATE 上。他忽然发来一句:“别替我可惜。”
我回复:“你也别。”
最后一秒跳掉的时候,我们同时按了下去。
屏幕黑了。
第二天早上醒来的时候,我趴在桌边,电脑还亮着。浏览器已经恢复正常,历史记录里没有那个页面,没有“All 2 versions”,也没有午夜以后打开 Scholar 的任何记录。我甚至开始怀疑自己只是最近压力有点大,在桌边睡着以后做了一个结构过于完整的梦。
那封旧邮件仍然躺在邮箱里。那位教授的主页也没有变化,她确实曾经在 Penn State,后来去了弗吉尼亚;那个校友也确实跟着过去了,她的机器学习论文仍然在那里。我刷新了一遍自己的 Scholar,什么异常都没有。页面底部甚至短暂闪出一句系统提示:No duplicate profiles found.
我看了一会儿,关掉浏览器,打开昨晚本来应该修改的论文。
文档恢复到上次保存的位置。右侧有导师留下来的几条批注,我一条条往下翻,直到看到倒数第二页的时候停住了。那里多出了一条新的 comment。
“χ3 到底哪里漂亮?昨晚没讲完。”
我没有马上动鼠标。
那条 comment 没有用户名,时间戳却有。凌晨 1:17。
我看了一眼电脑右下角的系统时间,又打开昨晚的活动记录。我的 Word 在 1:15 就已经因为长时间没有操作进入了自动保存状态。
我盯着那条批注看了差不多一分钟,最后还是点了 Reply。
“可以。你先把 privacy budget 给我讲明白。”
我按下发送。
什么也没有发生。
等了几秒,还是没有。
我笑了一下,把剩下几条导师批注继续改完。天快亮的时候,我终于保存文档,关掉电脑,准备回去睡觉。
临出门前,电脑忽然响了一声。
是 Word 的评论通知。
我站在门口看着屏幕。那条没有用户名的回复下面,多出了一行新字:
“成交。另外,你的 citation 又涨了一个。”
我下意识打开 Scholar。
确实涨了一个。
新增引用来自一篇我完全没看过的机器学习论文,作者单位是弗吉尼亚。标题很长,摘要里全是我看不太懂的东西。我搜索了一遍全文,想看看它到底为什么会引用我的光学论文。
没有找到引用位置。
参考文献列表里,也没有我的名字。
可 Scholar 坚持说,它引用了。
我刷新了一次。
数字还在那里。
又刷新了一次。
还是在那里。
我站着看了一会儿,把浏览器关掉了。
那天以后,我没有再见过 All 2 versions,那个没有名字的 Word 用户也没有再回复。偶尔 Scholar 会算错引用,这并不是什么新鲜事。数据库本来就会犯错,Word 也偶尔会留下奇怪的同步记录。所有事情都有足够合理的解释,只要不把它们放在一起看。
后来有一次,我又收到那位教授的 Scholar 更新。邮件里是她们组的一篇新论文。我点开标题看了一眼,没有读懂,也没打算读下去。
删除邮件之前,我忽然想起什么,顺手打开自己的 Scholar。
那个多出来的 citation 已经消失了。
总数少了一个。
我盯着数字看了几秒,觉得有点可惜。
然后我去实验室了。

Leave a comment